• Django RESTful规范


    Restful :

    web服务交互:

      我们在浏览器中能看到的每个网站, 都是一个web服务. 那么我们在提供每个web服务的时候, 都需要前后端交互. 前后端交互就一定有一些实现方案, 我们通常叫web服务交互方案.

      目前主流的三种web服务交互方案:

        REST(Representational State Transfer) 表述性状态转移

        SOAP(Simple Object Access Protocol) 简单的对象访问协议

        XML-RPC(XML Remote Procedure Call) 基于XML的远程过程调用

      XML-RPC是通过XML将调用函数封装, 并使用HTTP协议作为传送机制.

      后来在新的功能不断被引入下, 这个标准慢慢演变后才能为今日的SOAP协定.

      SOAP服务则是以本身所定的操作集, 来访问网络上的资源.

      SOAP也是基于XML的,但是它不只限于HTTP协议的传输,包括TCP协议,UDP协议都可以传输。

      REST是Roy Thomas Fielding博士于2000年在他的博士论文里提出来的。

      REST相比SOAP更加简洁,性能和开发效率也有突出的优势。

      我们今天主要说一下这个REST,现在越来越多的web服务开始采用REST风格设计和实现。

      例如,amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

      我们接下来要学的框架也是遵循REST风格的,那么我们来看下它到底是个什么样的风格,

      了解了它是什么后,我们看下它的优点是什么,我们为什么用它。


    理解REST :

    如果我们想要理解restful, 就要理解Representational State Transfer这个词组的意思: 表征性状态转移.

    所谓的表征性, 其实指的就是资源. 通常称为资源状态转移.

    什么是资源:

      任何事物, 只要有被引用的必要, 它就是一个资源.

      我们在浏览器中看到的文本, 视频, 图片等都是资源. 这些都是实实在在存在的实体.

      资源可以是一个实体, 也可以是抽象概念.

      比如说:

        某个人的个人信息

        某个人的手机号

        某个人和另外一个人的潜在关系.

      在网络中, 我们要引用资源, 资源一定要有一个标识, 在web中的唯一标识就是URI.

    什么是URI, URL:

      URI 统一资源标识符

      URL 统一资源定位符

      URI是给我们的资源进行标识的, URL是描述我们资源地址的.

      比如每个人都有名字和身份证, 名字可以重复, 但是身份证号是唯一的.

      那么身份证号就相当于我们的URI, 标识我们每一个人, 也可以说标识我们每一个资源.

      我们可以通过身份证号确定一个人, 但是想要找到这个人的具体位置就要通过具体的定位方式.

      这个就是我们的URL, 我们通过这两种方式都可以找到我们的资源,

      其实URL可以说是URI的子集, 通过定位的方式实现的URI.

    统一资源接口:

      现在我们可以通过URL去访问到资源, 那么我们队资源会有很多不同的操作, 增删查改

      以前我们可能会为了这个增加一个URL, 然后这个URL就是对数据进行增加的,

      还会为了更新和删除分别设计一个URL, 现在不需要了, 只有一个URL,

      然后根据HTTP请求方式的不同, 对资源进行不同的操作, 这个就是统一资源接口.

    资源的表述:

      资源的表述其实就是资源的展现形式, 我们客户端和服务端传输的都是资源的表述, 而不是资源本身.

      例如文本资源可以采用html, xml, json等格式, 图片可以使用PNG或JPG展现出来.

      那么客户端是怎么知道服务端提供哪种表述形式的呢?

      可以通过HTTP内容协商, 客户端可以通过Accept头请求一种特定格式的表述, 服务端通过Content-Type告诉客户端资源的表述形式.

      这些资源的表述呈现在页面上, 就是我们说的资源状态.

    状态转移:

      我们在看页面的时候,从当前资源的表述(也可以说状态或者表现层)会跳转到其他的资源状态。

      服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。

      这些类似"下一页"之类的链接起的就是这种推进状态的作用——指引你如何从当前状态进入下一个可能的状态。

    总结:

      可以得知REST风格的特点如下:

      (1)在web中,只要有被引用的必要都叫资源。

      (2)每个URI代表一个资源,独一无二的。

      (3)客户端通过HTTP的方法,对服务器端资源进行操作;

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

      (5)通过超链接的指引,实现"表现层状态转移"。


     

    RESTful :

    如果一个架构符合REST的约束条件和原则, 我们就称它为RESTful架构.

    一种软件的架构风格, 设计风格, 为客户端和服务端的交互提供一组设计原则和约束条件.


    restful规范 :

    1. 面向资源编程:

      每一URL代表一种资源, URL中尽量不要用动词, 多用名词

    2. 根据method不同, 进行不同的操作:

      GET/POST/PUT/DELETE/PATCH

    3. 在URL中体现版本:

      https://www.bootcss.com/v1/mycss

      https://v1.bootcss.com/mycss

    4. 在URL中体现是否是API:

      https://www.bootcss.com/api/mycss

      https://api.bootcss.com/mycss

    5. 在URL中guolv条件

      https://www.bootcss.com/v1/mycss?page=3

    6. 尽量使用HTTPS:

      https://www.bootcss.com/v1/mycss

    7. 响应时设置状态码:

      1. 信息, 服务器收到请求, 需要请求者继续执行操作

      2. 成功, 操作被成功接收并处理

      3. 重定向, 需要进一步的操作以完成请求

      4. 客户端错误, 请求包含语法错误或无法完成请求

      5. 服务器错误, 服务器在处理请求的过程中发生了错误

    8. 返回值:

      GET请求: 返回查到所有或单条数据

      POST请求: 返回新增的数据

      PUT请求: 返回更新的数据

      PATCH请求: 局部更新, 返回更新的整条数据

      DELETE请求: 返回值为空

    9. 返回错误信息:

      返回值携带错误信息

    10. Hypermedia API

      如果遇到需要跳转的情况 携带跳转接口的URL

      ret = {
                    code: 1000,
                    data:{
                        id:1,
                        name:'小强',
                        depart_id:http://www.baidu.com/api/v1/depart/8/
                    }
                }
  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/dong-/p/9966477.html
Copyright © 2020-2023  润新知