首页 > 其他 > 详细

Restful

时间:2019-07-01 23:20:12      阅读:83      评论:0      收藏:0      [点我收藏+]

在将之前我们先了解下Django的生命周期

技术分享图片

HTTP的特性:

3.响应式请求

4.基于TCP/IP协议的通信

1.无连接 

2.无状态

请求头和响应头格式

GET / HTTP/1.1  请求方法  URI协议/版本
Host: 127.0.0.1:8080  请求头
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
请求正文
Cookie: csrftoken=BVl9QoBxGV27jR4b5UPstnYeouwhPZV5ZoC19VIpL3Tec0pCjrJ1vY24wBqyHNJo; sessionid=llct2t0wzkll4t8yulyzuzc42epuqoms
l 协议/版本  状态码 描述
l 响应头(Response Header)
l 响应正文

 

WSIGI和cgi 和WSGIREF

前者是WSGI web服务网关协议

后者是 通用网关协议

CGI在web服务器与应用充当交互作用,这样才能处理用户表单生成并返回最终html页面

一般来说含有用户输出的 submit 图片的web 都会涉及某个CGI活动

不过现在生产环境的web页面都不再使用CGI了

原因 有明显限制性  限制服务器同时处理客户端的数量

WSGI 不是服务器 不是与程序交互的API 也不是代码 只是定义了一个接口 一种规范

用于处理日益增多的不同web框架 web服务 减少互操作性

wsgiref:django 基于WSGI协议开发的模块简单服务器

像sockerserver一样调用 内部遵守了WSGI协议的模块

开发模式

前后端分离

微服务 通过ngix 把请求转接到具体服务器

前后端分离后:cookie就使用不了了

前端发送ajax请求 后端拿到数据给你一个接口状态吗101 请跳转 还是干嘛,数据有什么 这有一种规范 今天我要讲

 

前后端不分离

前端人员把页面的空盒子写好后给我 我把往空缺的地方通过DTL填数据

CBV执行流程源码分析

CBV请求

通过中间件请求路由会执行 as_view()的返回结果(返回结果之前做了一件事 往view名称空间添加view_class这个类,view_initkwargs=参数)

请求来了执行view  最后调用 自己dispathch方法  

dispathch 判断请求的方法字符串是否在 请求方法列表里  最后返回执行的结果(get还是post)也就是自己写的

技术分享图片
路由如果这么配置:url(r^test/, views.Test.as_view()),
请求通过中间件后进入路由--->根据路由匹配,一旦成功,会执行后面函数(request)---》本质就是执行了as_view内部的view函数----》内部又调用了self.dispatch---->根据请求方式,执行不同的方法(必然get请求,就会执行咱么写的视图类的get方法)
尝试自己封装一个APIView,重写dispatch方法,在执行父类的dispatch之前,写一些逻辑,请求来了,就会执行这些逻辑
View Code

 

Restful 

Restful规范

restful无非就是把想要的数据通过逻辑判断 返回一个Json 没有什么特别的,在正式看源码之前先大致了解一下RestFult规范

1.必须是https 协议

2.有规定url  xxx域名/api

-https://api.example.com
-https://example.org/api/

3.版本规范

-可以放在路径中
-可以放在请求头中

4.所有的资源都是名词

5.请求方式均在method里

6.筛选有过滤调节

7.有状态吗

8.错误信息

9.返回结果有信息

10.返回结果提供链接

django 中restful 安装

1.pip3 install djangorestframework

2.注册app  

INSTALLED_APPS= [
‘rest_framework‘
]

3.继承

from rest_framework  import APIView

class Books(APIView):
    def get(self,request):
         return HttpResponse({"reg":"ok"})

源码分析

继承了APIView 之后:
-1 所有的请求都没有csrf的认证了
-2 在APIView中as_view本质还是调用了父类的as_view(View的as_view)
-3 as_view中调用dispatch  -----》这个dispatch是APIView的dispatch

-APIVIew的dispatch方法:
-1 对原生request对象做了一层包装(面向对象的封装),以后再用的request对象都新的request对象
-2 在APIView中self.initial(request, *args, **kwargs),里面有频率控制,权限控制和认证相关
-3 根据请求方法执行咱们写的视图类中的相应方法
--视图类中方法的request对象,已经变成了封装后的request
-Request类:
-1 原生的request是self._request
-2 取以post形式提交的数据,从request.data中取(urlencoded,formdata,json格式)
-3 query_params 就是原生request的GET的数据
-4 上传的文件是从FILES中取
-5 (重点)其他的属性,直接request.属性名(因为重写了__getattr__方法)

psotman的安装和使用

模拟向接口发送请求,测试接口

api的测试工具

 

 

 

 

 

Restful

原文:https://www.cnblogs.com/xzqpy/p/11117048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!