博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rest_framework--RESTful规范
阅读量:7048 次
发布时间:2019-06-28

本文共 3371 字,大约阅读时间需要 11 分钟。

#####RESTful规范#####一、什么是restful    restful其实就是一种软件架构风格,跟技术毫无关系。是一种面向资源编程的方法。    说起面向资源编程,我想起了之前了解到的面向过程编程,面向对象编程二、restful的10种规范(直接copy了)    (1)、API与用户的通信协议,总是使用HTTPs协议。    (2)、域名        https://api.example.com       尽量将API部署在专用域名(会存在跨域问题)        https://example.org/api/      API很简单    (3)、版本        URL,如:https://api.example.com/v1/        请求头              跨域时,引发发送多次请求    (4)、路径,视网络上任何东西都是资源,均使用名词表示(可复数)            https://api.example.com/v1/zoos            https://api.example.com/v1/animals            https://api.example.com/v1/employees    (5)、method            GET  :从服务器取出资源(一项或多项)            POST :在服务器新建一个资源            PUT  :在服务器更新资源(客户端提供改变后的完整资源)            PATCH  :在服务器更新资源(客户端提供改变的属性)            DELETE :从服务器删除资源    (6)、过滤,通过在url上传参的形式传递搜索条件            https://api.example.com/v1/zoos?limit=10:指定返回记录的数量            https://api.example.com/v1/zoos?offset=10:指定返回记录的开始位置            https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页,以及每页的记录数            https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序            https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件    (7)、返回数据必须带上状态码,也可以是自己写的状态码    (8)、错误处理,应返回错误信息,error当做key。{
'error':错误信息} (9)、返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范。 GET /collection:返回资源对象的列表(数组) GET /collection/resource:返回单个资源对象 POST /collection:返回新生成的资源对象 PUT /collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 (10)、Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法, 使得用户不查文档,也知道下一步应该做什么。 {
"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}三、怎么基于django写restful规范代码呢(用CBV) 路由层代码: url(r'login/',views.Login.as_views()) 视图层代码: from django.views import View class Login(View): def post(self,request,*args,**kwargs): response = {
'status':100,'msg':None} name = request.POST.get('name') password = request.POST.get('password') if name == '朱宇' and password == '123': response['msg'] = '登陆成功' else: response['msg'] = '登陆失败' response['status'] = 101 return JsonResponse(response) 又想起点东西写写吧, 1、这里request.POST.get('name') ---> 取的是name这个key对应value的最后一个值 2、JsonResponse(response) ---> 假如response光只是字典可以这样写,但是有列表的话,必须把safe=False,默认为True 3、再看路由层层代码,as_view(),这里是加了括号的,所以在django程序启动时,就会执行,它是类的方法,执行结果时返回了一个 view函数的内存地址,等路由来的时候,便会加括号执行view函数,view函数的返回值是dispatch(self, request, *args, **kwargs) 的返回值。所以会执行dispatch方法 下面是View类中的dispatch方法源码: def dispatch(self, request, *args, **kwargs): if request.method.lower() in self.http_method_names: handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed return handler(request, *args, **kwargs) 我们可以从request对象中知道本次请求的请求方法,如果在http_method_names这个列表里的话,通过反射获得该请求方法(小写)命名 方法的内存地址,并去执行,执行完毕return回去

 

转载于:https://www.cnblogs.com/zhuchunyu/p/10130191.html

你可能感兴趣的文章
开源一款私藏Management Studio插件,ProjkyAddin,送给所有使用SQLServer的园友们
查看>>
jQuery判断checkbox是否选中的3种方法
查看>>
LinkedList源码分析
查看>>
【算法介绍】哈希排序算法
查看>>
UpdatePanel and JQuery Plugin
查看>>
centos5.7下的kdump
查看>>
[JavaEE笔记]Cookie
查看>>
ELK+Filebeat (1)
查看>>
leetcode 443. String Compression
查看>>
在没联网环境下,启动tomcat出错
查看>>
关于Git bash-127.0.0.7:8888拒绝访问的小问题--环境变量
查看>>
有价值的数据
查看>>
LayUi超级好用的前端工具
查看>>
[Ubuntu] ubuntu的tty下挂载移动硬盘拷贝数据
查看>>
犯了个低级错误
查看>>
Outlook Anywhere 客户端配置详解
查看>>
IOS在Xcode 4.x以上如何 创建 和 添加 静态库
查看>>
Repeater控件数据导出Excel
查看>>
下载Android源码出现的问题
查看>>
远程桌面如何复制本地文件 远程桌面拷贝电脑上的文件方法
查看>>