一 . RESTful
1. RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。
2. REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”
3. REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态
HTTP动词
客户端用到的手段,只能是HTTP协议。
具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:
GET用来获取资源,
POST用来新建资源(也可以用于更新资源),
PUT用来更新资源,
DELETE用来删除资源。
RESTful架构的一些误区
误区一:
最常见的一种设计错误,就是写路径的时候包含动词。因为"资源"表示一种实体,所以应该是名词,动词应该放在HTTP协议中。
举例来说,某个路径是/posts/show/1,其中show是动词,这个URI就设计错了,正确的写法应该是/posts/1,然后用GET方法表示show。
误区二:
在URL中不应该加入版本号, 如:
http://www.example.com/app/1.0/foo
http://www.example.com/app/2.0/foo # 这样不应该
因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URL。版本号可以在HTTP请求头信息的Accept字段中进行区分:
Accept: vnd.example-com.foo+json; version=1.0
Accept: vnd.example-com.foo+json; version=2.0
二 . DjangoRestFramework(简称DRF)
drf是django发展来的一个符合restful接口规范的一个app
安装: pip install djangorestframework
django不能直接直接用request.post拿到前端发过来的json数据,但是用到djangorestframework就可以啦,这时拿数据要用request.data
我们在用restframework的时候,写视图函数的时候用的是CBV
from django.shortcuts import render, HttpResponse
from rest_framework.views import APIView
from app01 import models
from rest_framework.parsers import JSONParser
class BookHandle(APIView):
parser_classes = [JSONParser, ] # content-type限制为json,如果不限制,支持所有的parser_classes解析器
def post(self, request):
# print('这个是django中获取数据的方法', request.POST) # 不能接受json格式的数据
print(type(request)) # 在你想找request具体是哪个类实例化来的
# rest_framework.request.Request 打印结果是这样,直接就 from rest_framework.request import Request
print('这是rest_framework中获取数据的方法', request.data) # 能接受json格式, 在request.data调用解析器
return HttpResponse('OK')
三 . 解释器组件
解析器就是能把content-type中类型解析出来, 比如django自带的解析器能解urlencode和mutipart/form-data类型的数据,然后将数据放到request.POST里面.
而DRF通过自己的解析器,帮我们给request里面封装了一个request.data属性,获取请求体里面的数据,然后解析,
并且这个解析器基本上能够解析所有的数据类型,包括django不能自动解析的json数据类型.
四 . Postman的使用
Postman是一个模拟发送请求并获得响应结果的工具,
不用这个工具的时候,我们写web项目,调试接口返回数据的时候,是不是都要启动项目,通过浏览器访问,然后查看数据,
有了这个工具我们就可以不用启动浏览器来,通过这个工具就能进行调试
下载: https://www.getpostman.com/downloads/
使用Postman: