使用 Django Rest Framework (DRF) 开发微服务 API
介绍
将应用程序开发分离为前端和后端是现代应用程序开发中常见的架构实现。随着前端和后端分离,需要一个通信中间件来允许这些组件之间进行数据交换。这就是应用程序编程接口 (API) 的作用所在。
本指南探讨了如何使用 Django 进行 REST API 开发,Django 已经有一个用于 REST API 开发的软件包,名为Django Rest Framework (DRF)。本指南假设您对 API 和 Django Web 框架有基本的了解,并且至少具备中级 Python 水平。
有关 Django 的入门指南可在此处找到。
关于 DRF
Django Rest Framework是一个第三方包,它为 Django 应用程序提供 REST API 功能。
要安装该包,请运行以下命令:
pip install django-rest-framework
创建示例应用程序
这是一个 Django 应用,用于显示来自默认 Sqlite3 数据库的数据。数据是国家/地区及其货币名称的列表。
通过运行此命令启动一个新的 Django 项目。
django-admin startproject countries
接下来,使用此命令创建一个应用程序并将其命名为currency_country。
python3 manage.py startapp currency_country
应用程序现已设置完毕。剩下的就是开发国家/地区模型、DRF API 资源,并提供 API 资源的 URL。下面的代码块显示了模型以及构成数据库表的字段。将代码块复制到 models.py 文件中。
from django.db import models
class Country(models.Model):
country_name = models.CharField(max_length=20)
local_currency = models.CharField(max_length=20)
added_on = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.country_name
该模型需要数据。要添加数据,请访问需要超级用户访问权限的管理面板。下一步是使用以下命令创建超级用户帐户。
python manage.py createsuperuser
这将是一个交互式的过程,您需要提供必要的详细信息并注册您的用户。
为了使应用程序和模型可见,需要在 Django 项目和admin.py中注册它们。要注册应用程序和 rest 框架(第三方应用程序),请将其名称添加到settings.py中已安装的应用程序列表中。
将下面的列表复制到您的settings.py并替换现有列表。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'currency_country',
"rest_framework",
]
为了确保国家/地区模型在管理面板上可见,请在admin.py文件中注册它。
将下面的代码块添加到您的admin.py文件中。
from django.contrib import admin
from .models import Country
admin.site.register(Country)
DRF 序列化器
DRF序列化器将 Django 数据类型(例如查询集)转换为可以呈现为 JSON 或 XML 的格式。对于此应用,您只需创建Country序列化器。在 currency_country 应用中,创建一个名为serializers.py的文件并添加以下代码块。
from rest_framework import serializers
from .models import Country
class CountrySerializer(serializers.ModelSerializer):
class Meta:
model = Country # this is the model that is being serialized
fields = ('country_name', 'local_currency')
API 请求
要处理GET或POST请求,您需要一个以序列化方式返回所有国家/地区的视图。为此,请在views.py文件中创建一个视图,并添加将以序列化方式返回所有国家/地区的视图。
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Country
from .serializers import CountrySerializer
@api_view(['GET', 'POST'])
def country(request):
if request.method == 'GET': # user requesting data
snippets = Country.objects.all()
serializer = CountrySerializer(snippets, many=True)
return Response(serializer.data)
elif request.method == 'POST': # user posting data
serializer = CountrySerializer(data=request.data)
if serializer.is_valid():
serializer.save() # save to db
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
URL 配置
要配置 URL,请配置主项目的urls.py文件以使用路径函数将任何流量引导至 currency_country 应用程序,如下面的代码块所示。
from django.urls import path, include
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('currency_country.urls')),
]
接下来,创建一个urls.py文件,并使用路径将流量引导至你的视图函数。
from django.urls import path
from .views import country
urlpatterns = [
path('country/', country, name="countries")
]
运行应用程序
一切设置完成后,最后一步是迁移更改并运行服务器。要进行迁移,请运行以下命令:
python manage.py makemigrations
要将模型更改迁移到默认数据库,请运行以下命令:
python manage.py migrate
要启动服务器并运行应用程序,请运行以下命令:
python manage.py runserver
API 屏幕
结论
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~