restful接⼝开发与测试
设计思想
遵循CRUD原则,告诉我们对于资源只需要四种⾏为:创建、获取、更新和删除就可以完成相关的操作和处理。
通过统⼀资源标识符来识别和定位资源,并且针对这些资源⽽执⾏的操作是通过HTTP规范定义的。其核⼼操作只有GET、PUT、POST、DELETE。
REST主要⽤于定义接⼝名,接⼝名⼀般⽤名词写,不⽤动词,如果表达“获取”或者“删除”及更i性能的操作,⽤请求类型(GET、PUT、POST、DELETE)来区分。
HTTP⽅法幂等性与安全性
HTTP⽅法资源操作幂等安全
GET SELECT是安全
POST INSERT否否
PUT UPDATE是否
DELETE DELETE是否
幂等:对同⼀个Rest接⼝多次请求,得到的资源状态是相同的。
安全:对该Rest接⼝请求,不会使服务器资源状态发⽣改变。
Rest优势
由于Rest强制所有的操作都必须是⽆状态的,这就没有上下⽂的约束,⼊宫做分布式,集都不需要考虑上下⽂和会话保持的问题,极⼤的提⾼系统的可伸缩性。
前后端分离,前端拿到数据只负责展⽰和渲染,不对数据做任何处理。后端处理数据并以JSON格式传输出去,定义这样⼀套统⼀的接⼝,在web、ios、android三端都可以⽤相同的接⼝。
Django接⼝开发
Django简介
Django是⼀个开放源代码的web应⽤框架,由python写成,采⽤MVC的框架模式,最初被开发⽤来管
理劳伦斯出版集团旗下的⼀些新闻内容为主的⽹站。Python的web开发框架除了Django,还有Flask和Tornado等。
安装
安装输⼊命令 pip install django==2.2(这⾥推荐使⽤2.2的版本,因为3.0+的会导致其他模块⽆法兼容使⽤)
查询是否安装成功 django-admin
Django Rest Framework
简介
⼀套基于Django的REST风格的框架。
特点
功能强⼤,灵活,可以帮助快速开发Web API
⽀持认证策略,包括Oauth1和OAuth2
⽀持ORM对象关系映射和⾮ORM数据源的序列化
丰富的⽂档以及良好的社区⽀持django登录注册功能
安装
pip install djangorestframework
pip install markdown      # Markdown support for the browsable API.
pip install django-filter  # Filtering support
创建API
创建项⽬
在指定盘符创建api应⽤ django-admin startproject new_restful
进⼊项⽬new_restful创建api应⽤,创建完成后在项⽬⽂件夹下多了⼀个api⽂件夹 python manage.py startapp api
打开settings.py 在项⽬下添加api和rest_framework
默认的权限策略设置全局范围,通过DEFAULT_PERMISSION_CLASSESS设置,在⽂件末尾添加第四步内容
# 第三步
INSTALLED_APPS = [
'ib.admin',
'ib.auth',
'ttypes',
'ib.sessions',
'ssages',
'ib.staticfiles',
'rest_framework',
'api'
]
# 第四步
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
]
}
数据库迁移
通过命令进⾏数据库迁移,项⽬下执⾏ python manage.py migrate
创建超级管理员
使⽤createsuperuser命令创建管理员账户,密码⾄少8位数字字母组合 python manage.py createsuperuser
启动Server
启动命令 python manage.py runserver
确定是否成功输⼊地址:127.0.0.1:8000,显⽰successfully
数据序列化
Serializers⽤于定义API的表现形式,如返回哪些字段、返回怎样的格式等。这⾥序列化Django⾃带的User和Group。创建数据序列化,在api应⽤下创建serializers.py⽂件。
序列化代码如下:
dels import User, Group
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ['url', 'username', 'email', 'is_staff']
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ['url', 'name']
创建视图
试图⽤于如何向⽤户展⽰数据,展⽰那些数据。⽐如⽤户查询User信息或查询Group信息,那么程序内部要定义好怎么去查询,在Django Rest Framework中,ViewSets⽤于定义视图的展现形式,例如返回那些内容,需要做那些权限处理。打开api⼀个⽤下的views.py⽂件,编写如下代码:
from django.shortcuts import render
dels import User, Group
from rest_framework import viewsets
from api.serializers import UserSerializer, GroupSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
queryset = Group.objects.all()
serializer_class = GroupSerializer
在URL中会定义相应的规则到ViewSets,ViewSets则通过serializer_class到对应的Serializers。
这⾥将User和Group的所有对象赋予queryset,并返回这些值,在UserSerializer和GroupSerializer中定义要返回的字段。
URL路由配置
打开urls.py⽂件,添加api的路由配置
ib import admin
from django.urls import path
f.urls import include
from rest_framework import routers
from api import views
router=routers.DefaultRouter()
urlpatterns = [
path('admin/', admin.site.urls),
path('',include(router.urls)),
path('api-auth',include('rest_framework.urls',namespace='rest_framework'))
]
api编辑
直接通过127.0.0.1:8000的登录⾯板,直接在Users与Groups进⾏编辑与关联
Swagger接⼝⽂档⽣成
接⼝开发完成,接下来需要编写接⼝⽂档。传统的接⼝⽂档编写都是使⽤Word或者其他⼀些接⼝⽂档管理平台,这种形式接⼝⽂档维护更新⽐较⿇烦,每次接⼝有变动就要⼿动修改⽂档。
因此,针对这种情况,推荐使⽤Swagger来管理接⼝⽂档。
Swagger简介
Swagger是⼀个规范和完整的框架,⽤于⽣成、描述、调⽤和可视化RESTful风格的Web服务,总体⽬标是使客户端和⽂件系统作为服务器以同样的速度来更新,每当接⼝有变动时,对应的接⼝⽂档也会⾃动更新。
Swagger能成为最受欢迎的REST APIs⽂档⽣成⼯具之⼀,有如下⼏个原因:
可以⽣成⼀个具有互动性的API控制台,开发者可以⽤来快速学习和尝试API 可以⽣成客户端SDK代码⽤于各种不同的平台上的体现
可以在许多不同的平台上从代码注释中⾃动⽣成
有⼀个强⼤的社区,⾥⾯有许多强悍的贡献者

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。