一.RESTFUl API设计
1).域名
应该将api部署在专用域名下 https://www.baidu.com/api/
2).版本
应该将API版本号放到路径中 https://www.baidu.com/api/1.0/login https://www.baidu.com/api/1.2/login
3).路径
api中尽量用名词 不要有动词 https://127.0.0.1/products/
4).HTTP动词
get 从服务器取出资源 post 在服务器新建资源 put 在服务器更新资源 delete 从服务器删除资源
5).过滤信息
如果记录数据过多,服务器不可能都将他们返回给用户,api应该提供参数,过滤返回结果
6).状态码
1xx 表示当前本次请求还是持续,没结束 2xx 表示当前本次请求成功了 or 完成了 3xx 表示当前本次请求成功 但是服务器重定向 4xx 表示当前本次请求失败 主要是客户端发生了错误 5xx 表示当前本次请求失败 主要是服务端发生了错误
7).错误格式
如果状态码是4xx5xx的时候 服务器返回json格式数据并且key是error { "error":"Invaild API key" }
8).返回结果
针对不同操作返回不同的结果 get /all 返回资源对象的列表 get /all/id 返回单个资源字典 post /all 返回新生成的资源对象 put /all/id 返回修改后的资源对象 delete /all/id 返回一个空字典
9).超媒体
结果中提供链接,API 的使用者未必知道,URL 是怎么设计的。一个解决方法就是,在回应中,给出相关链接,便于下一步操作。这样的话,用户只要记住一个 URL,就可以发现其他的 URL。这种方法叫做 HATEOAS。 #就是访问一个链接 这里链接中包含多个链接
10).其他
服务器返回的数据格式,应该是json,避免使用xml
二.django rest_Framework(drf)
1).什么是drf
drf是建立在django基础之上的web应用开发框架,可以快速的开发接口应用 在drf中,提供了序列化serialzier的定义,可以帮助我们简化序列化与反序列化的过程,
不仅如此,还提供了丰富的视图类,扩展类,视图集,来简化视图的编写工作 还提供了认证,权限,限流,过滤,分页,接口文档等功能
2).环境安装与配置
要求:
- Python (3.6, 3.7, 3.8, 3.9, 3.10)
- Django (2.2, 3.0, 3.1, 3.2, 4.0)
pip install rest_rest_framework 然后在settings.py文件中的INSTALLED_APPS中添加上: 'rest_framework',
标签:返回,restfulAPI,rest,django,api,服务器,API,drf From: https://www.cnblogs.com/whc6/p/16621322.html