Rest Framework ---- ajax的header补充 接口 restful接口规范

ajax的axios其他补充

// 三种携带数据的方式
1. 数据包形式
data:{}   // 后台用 request.POST拿到
2. 拼接参数形式
params:{}   // 后台用 request.GET拿到
3. 请求头形式
headers:{
    authorization:'请求头信息'
}  // 后台用 request.META.get('HTTP_AUTHORZITAIONS') 拿到

自定义请求头信息: 后台settings.py中配置

CORS_ALLOW_HEADERS=[
	"""把cors默认的请求头写上 默认的在 default.py中
	后面填写自定义的请求头 不然过不来"""
    'lddragon',
    'authorization'
]

想拿到的话 就 使用 request.META

# request.META 拿到的是一个超级大的字典 请求头的信息都是 HTTP_ + 你传的请求头大写
request.META.get('HTTP_AUTHORIZATIONS')

Django-rest-framework

drf Django的插件,所以要提前安装Django , 基于restful规范的原生Django接口

  • 安装:
pip3 install djangorestframework
  • 注册:
# 记住导入rest_framework 后必须在 settings里面注册
INSTALLED_APPS = [
	...
    'rest_framework'
]

大纲:

"""
1.接口:接口的概念,数据接口文档,接口规范(restful)
2.drf请求生命周期 -cbv
3.drf基础组件:请求,响应,渲染,解析,异常
4.drf的序列化(核心):序列化, 模型序列化, 群操作序列化 *****
5.drf的视图家族 视图类 视图工具类 工具视图类 视图集
6.drf三大认证(核心):认证,权限,频率   *****
7.drf的过滤:赛选,搜索,排序,分页,区间,自定义
"""

1.接口

1.什么是web Api接口?

通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介

Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点

  • url:长得像返回数据的url链接

  • 请求方式:get、post、put、patch、delete

    • 采用get方式请求上方接口
  • 请求参数:json或xml格式的key-value类型数据

    • ak:6E823f587c95f0148c19993539b99295
    • region:上海
    • query:肯德基
    • output:json
  • 响应结果:json或xml格式的数据

    • 上方请求参数的output参数值决定了响应数据的格式

    • {
          "status":0,
          "message":"ok",
          "results":[
              {
                  "name":"肯德基(罗餐厅)",
                  "location":{
                      "lat":31.415354,
                      "lng":121.357339
                  },
                  "address":"月罗路2380号",
                  "province":"上海市",
                  "city":"上海市",
                  "area":"宝山区",
                  "street_id":"339ed41ae1d6dc320a5cb37c",
                  "telephone":"(021)56761006",
                  "detail":1,
                  "uid":"339ed41ae1d6dc320a5cb37c"
              }
              ...
              ]
      }
      

2.接口文档的编写:YApi

3.接口测试工具Postman

  • Postman可以直接从官网:https://www.getpostman.com/downloads/下载获得,然后进行傻瓜式安装。

  • Postman是一款接口调试工具,是一款免费的可视化软件,同时支持各种操作系统平台,是测试接口的首选工具。

2.restful接口规范

  • 接口规范:就是为了采用不同的后台语言,也能使用同样的接口获取到同样的数据

  • 如何写接口:接口规范是 规范化书写接口的,写接口要写 url响应数据 注:如果将请求参数也纳入考量范围,那就是在写 接口文档~

  • 分为两大部分: url 响应数据

1) 用api关键字标识接口url
    api.baidu.com | www.baidu.com/api
    
2) 接口数据安全性决定优先选择https协议

3) 如果一个接口有多版本存在,需要在url中标识体现
    api.baidu.com/v1/... | api.baidu.com/v2/...
    
4) 接口操作的数据源称之为 资源,在url中一般采用资源复数形式,一个接口可以概括对该资源的多种操作方式
    api.baidu.com/books | api.baidu.com/books/(pk)
    
5) 请求方式有多种,用一个url处理如何保证不混乱 - 通过请求方式标识操作资源的方式
    /books        get         获取所有
    /books        post        增加一个(多个)
    /books/(pk)   delete      删除一个
    /books/(pk)   put         整体更新一个
    /books/(pk)   patch       局部更新一个

6) 资源往往涉及数据的各种操作方式 - 筛选、排序、限制
    api.baidu.com/books/?search=西&ordering=-price&limit=3
  • 请求方式(五大请求方式):
get:获取单个或多个资源
	- https://api.baidu.com/books/			
        # 群查,返回多个结果对象
	- https://api.baidu.com/books/(pk)/		
        # 单查,返回单个结果对象
post:新增单个或多个资源
	- https://api.baidu.com/books/ 
		# 单增,提交单个数据字典,完成单增,返回单个结果对象
		# 群增,提供多个数据字典的数组,完成群增,返回多个结果对象
put:整体修改单个或多个资源
	- https://api.baidu.com/books/
		# 整体修改多个,提供多个数据字典的数组(数据字典中要包含主键),完成群改,返回多个结果对象
	- https://api.baidu.com/books/(pk)/
		# 整体修改单个,提供单个数据字典(主键在url中体现),完成单改,返回单个结果对象
patch:局部修改单个或多个资源
		# 方式与put完全相同,不同的是:操作的资源如果有5个key-value键值对,put请求提供的字典必须全包含,但是patch提供的字典包含的键值对0~5个都可以
delete:删除单个或多个资源
	- https://api.baidu.com/books/
		# 多删,提供多个资源主键数据,完成群删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
	- https://api.baidu.com/books/(pk)/
		# 单删,不需要提供额外数据,完成单删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
  • 响应结果:
1.响应对象中要包含网络状态码(网络状态信息和网络状态码捆绑出现,不要额外设置):
		1xx:基本信息
		2xx:成功 - 200基本 201新增成功
		3xx:重定向
		4xx:客户端错误 - 400错误请求;403请求无权限;404请求资源不存在
		5xx:服务端错误 - 500服务器错误
2. 数据状态码(一般都是前后台约定规则):
		0:成功
		1:失败 - 1xx:具体失败信息(要在接口文档中明确写出)
		2:无数据 - 2xx:具体无数据信息(要在接口文档中明确写出)
3. 据状态信息(一般不仅仅是对数据状态码的解释,更多是对结果的描述,给前台开发者阅读的)
4. 结果(常量、数组、字典),如果有子资源(图片、音频、视频),返回资源的url链接
		{	
            "status": 0,
    		"msg": 'ok',
    		"results": [{
    			"name": "西游记",
    			"img": "https://api.baidu.com/media/book/xyj.png"
    		}]
        }
posted @ 2019-12-23 22:03  LD_Dragon_sky  阅读(596)  评论(0编辑  收藏  举报