zoukankan      html  css  js  c++  java
  • rest_framework规范

    面向资源架构:

      十条规范:(并不是强制性的,可以根据项目做出调整)

         1.使用HTTPS协议进行数据之间的传输,保证数据更安全   

         2.域名的区分

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

        3.版本可以放在路径中  

       https://api.example.com/v1/zoos 这里的v1即是表示接口版本

        4.通过method区分操作

        get   # 获取资源
        post   # 新增资源
        put(客户端提供改变后的完整资源)/patch(客户端提供改变的属性)   # 更新资源
       delete   # 删除资源

        5.路径    视网络上任何东西都是资源,均使用名词表示(可复数)

        https://api.example.com/v1/zoos
        https://api.example.com/v1/animals
        https://api.example.com/v1/employees

        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.状态码   https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

        8.错误处理,应返回错误信息,error当做key。

      {
          error: "Invalid API key"
      }

        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实现

    # 路由编写

    urlpatterns = [
        url(r'^users/$', views.Users.as_view()),
        url(r'^users2/$', views.user2),
    
    ]

    # 视图编写

    import json
    
    def  user2(request):
        if request.method=='GET':
            dic = {'status':200,'name': 'lqz2', 'age': 18}
            return HttpResponse(json.dumps(dic))
        elif request.method=='POST':
            dic = {'status': 200, 'msg': '修改成功'}
            return JsonResponse(dic)
    
    class Users(View):
        def get(self, request):
            dic = {'status':200,'name': 'lqz', 'age': 18}
            return HttpResponse(json.dumps(dic))
    
        def post(self, request):
            dic = {'status': 200, 'msg': '修改成功'}
            return JsonResponse(dic)
  • 相关阅读:
    什么是ORM
    ORM优缺点
    Azure 中快速搭建 FTPS 服务
    连接到 Azure 上的 SQL Server 虚拟机(经典部署)
    在 Azure 虚拟机中配置 Always On 可用性组(经典)
    SQL Server 2014 虚拟机的自动备份 (Resource Manager)
    Azure 虚拟机上的 SQL Server 常见问题
    排查在 Azure 中新建 Windows 虚拟机时遇到的经典部署问题
    上传通用化 VHD 并使用它在 Azure 中创建新 VM
    排查在 Azure 中新建 Windows VM 时遇到的部署问题
  • 原文地址:https://www.cnblogs.com/python-Arvin/p/11957219.html
Copyright © 2011-2022 走看看