zoukankan      html  css  js  c++  java
  • restfull风格,规范的项目,django-DRF与django的区别

    1、什么是RESTfull?

      1)REST:即Representational State Transfer的缩写。维基百科称其为“具象状态传输”,国内大部分人理解为“表现层状态转化”。

      2)具象的:就是指表现层,要表现的对象也就是“资源”,什么是资源呢?网站就是资源共享的东西,客户端(浏览器)访问web服务器,所获取的就叫资源。比如html,txt,json,图片,视频等等。

      3)表现:比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。

           浏览器通过URL确定一个资源,但是如何确定它的具体表现形式呢?应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

      4)状态转换: 就是客户端和服务器互动的一个过程,在这个过程中, 势必涉及到数据和状态的变化, 这种变化叫做状态转换。

             互联网通信协议HTTP协议,客户端访问必然使用HTTP协议,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。

      总结:

        REST与技术无关,代表的是一种软件架构风格

        REST从资源的角度审视审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识

        所有的数据,无论是通过网络获取的还是操作(增删改查)的数据,都是资源。将一切数据视为资源是REST区别于其他架构风格的最本质的属性。

        每一个URL代表一种资源

        客户端和服务器之间,传递这种资源的某种表现层;

        客户端通过HTTP动词对服务器端资源进行操作,实现“表现层状态转化”(GET,POST,PUT,DELETE)

    2、RESTfull设计规范

      1.域名

        1)子域名方式

          https://api.example.com 尽量将API部署在专用域名(会存在跨域问题)

          https://www.example.com

        2)url方式

          https://example.org

          https://example.org/api/ API很简单

      2.版本

        将API的版本号放入URL中。

        https://api.example.com/v1/

        https://api.example.com/v2/

        https://api.example.com/v3/

     3.路径

        路径又称“终点”,表示API的具体网址,每个网址代表一种资源

        1) 资源作为网址,只能有名词,不能有动词,而且所用的名词往往与数据库的表名对应。

        2)API中的名词应该使用复数。无论子资源或者所有资源。

          /getProducts    不符合REST风格

          /Orders       符合REST风格

          获取单个产品:http://127.0.0.1:8080/AppName/products/1

          获取所有产品:http://127.0.0.1:8080/AppName/products

       4.方式

          GET :从服务器取出资源(一项或多项)

          POST :在服务器新建一个资源

          PUT :在服务器更新资源(客户端提供改变的完整资源)

          PATCH :在服务器更新资源(客户端提供改变的属性)

          DELETE :从服务器删除资源

    符合规范的项目:

    apps:

    需要导入 sys

    添加 sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

    用来管理APP的文件

    lisbs:

    用来存放第三方的包

    static:

    用来存放html文件

    media:

    用来存放图片

    utils:

    用来存放自己写的共用的,封装的包

    django和DRF的区别:

    django—DRF相当于封装过的django

    django比较灵活,而DRF则是封装过后具有一定的规范

    DRF类中继承的是APIView(是封装过的View)

    DRF中返回的数据是字典形式的Responce(是封装过的HTTPresponce)

    DRF中获取数据:

    get获取是query_params,但是也可以用django中获取数据时GET.get

    post获取数据是data,但也可以用django中获取数据时POST.get

    django中获取数据:

    只能是GET.get或者POST.get

  • 相关阅读:
    uoj#207 共价大爷游长沙
    bzoj4006 [JLOI2015]管道连接
    bzoj2595 [Wc2008]游览计划
    uoj#300.【CTSC2017】吉夫特
    bzoj2565 最长双回文串
    bzoj2342 [Shoi2011]双倍回文
    bzoj3676 [Apio2014]回文串
    [转载]物理大神的八卦完整版——大爱物理
    低层次数论书籍大杂烩
    控制论课题
  • 原文地址:https://www.cnblogs.com/my-soul-my-heart/p/13883945.html
Copyright © 2011-2022 走看看