杭州电子商务研究院

使用 Django Rest Framework (DRF) 开发微服务 API

2020-10-19 08:00飞浪

介绍

将应用程序开发分离为前端和后端是现代应用程序开发中常见的架构实现。随着前端和后端分离,需要一个通信中间件来允许这些组件之间进行数据交换。这就是应用程序编程接口 (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 屏幕

结论

由于Django是流行的Web开发框架,并且当前大多数应用程序的架构都是解耦的,因此Django中的API开发是一项至关重要的技能。它可以应用于后端开发人员,API /中间件开发人员和全栈开发人员等职位。

为了进一步了解 Django Rest Framework,请探索以下 API 概念:

  1. 验证

  2. DRF 令牌到期

  3. 分页

  4. 解析器

曝光30546浏览1633