美文网首页
RESTful 理解

RESTful 理解

作者: 黄二的NPE | 来源:发表于2018-10-07 11:16 被阅读11次
    • RESTful是什么?

    1. REST是英文representational state transfer(表象性状态转变)或者表述性状态转移。(看不懂)
    2. REST是一种web服务中接口设计风格。(看不懂 +1)
    3. 在RESTful接口设计中,用URL定位资源,用HTTP动词(GET,POST,DELETE)描述操作。
    GET:读取(Read);POST:新建(Create);PUT:更新(Update);DELETE:删除(Delete)
    
    1. 看Url就知道要什么;看http method就知道干什么;看http status code就知道结果如何。
    • 举个栗子

    假如我们有个接口是关于删除图书管理系统的某本书,如果使用普通的接口设计风格,那么接口设计出来可能是:
    /library/deleteBook POST
    但是如果我们使用RESTful风格,设计出来的接口可能是:
    /library/books DELETE
    books是个名词,用来定位资源;DELETE是个动词,用来进行操作描述。

    http://127.0.0.1/library/books/1 GET  根据图书id获取图书信息
    http://127.0.0.1/library/books POST 新增图书
    http://127.0.0.1/library/books PUT 修改图书信息
    http://127.0.0.1/library/books DELETE 删除图书信息 
    
    • RESTful设计原则

    1. 网络上的所有事物都被抽象为资源
    2. 每个资源都有一个唯一的资源标识符 (比如上面的图书馆里面的书我们可以抽象为book)
    3. 同一个资源具有多种表现形式(xml,json等)
    4. 对资源的各种操作不会改变资源标识符
    5. 所有的操作都是无状态的
    6. 符合REST原则的架构方式即可称为RESTful
    • 误区

    1. url不应该存在动词,最好是复数,比如你要展示某篇新闻,你可以/posts/id ,但是不要/posts/show/id
    2. 如果真的要表示一个动作,比如A给B转账,你不要/accounts/A/transfer/B/to/2,而是因为把transfer写成名次transacion /transaction from=A&to=B&amount=2
    3. 不要在url中加入版本号,比如/post1/v1/transaction 而是因为把版本号作为header的参数写在header里面。
    4. 对于多级URL,我们要做的是确认主体,把某些url作为参数的一部分传进去;比如我们要查看某个作者的所有书,我们可能会这么写/authors/huangzp/books,但是比较正确的做法是先确认主体为书,然后把作者作为参数传进去,得/books?author=huangzp
    • 状态码

    分类
    1xx:相关信息
    2xx:操作成功
    3xx:重定向
    4xx:客户端错误
    5xx:服务器错误
    

    2XX
    200表示操作成功,但是也有更详细的分类:

    1. GET/PUT 200 表示获取/更新成功
    2. POST 201 表示表示新增成功,已经添加了新的资源
    3. DELETE 204 表示删除失败,已经删除了资源
    4. 202 表示服务器已经接收了请求,但是还未处理,过阵子再处理,用于异步操作

    3XX

    1. 301 永久跳转(用于浏览器)
    2. 302/307 暂时跳转(用于浏览器)
    3. 303 see other (用于api)

    4XX
    4xx状态码表示客户端错误,主要有下面几种。

    1. 400 请求地址有问题,可能是参数匹配有误等
    2. 401 用户未提供身份验证凭据,或者没有通过身份验证。
    3. 403 用户通过了身份验证,但是不具有访问资源所需的权限。
    4. 405 用户已经通过身份验证,但是所用的 HTTP 方法不在他的权限之内。
    5. 404 所请求的资源不存在,或不可用。

    5XX
    5xx状态码表示服务端错误。一般来说,API 不会向用户透露服务器的详细信息,所以只要两个状态码就够了。

    1. 500 客户端请求有效,服务器处理时发生了意外。
    2. 503 服务器无法处理请求,一般用于网站维护状态。

    相关文章

      网友评论

          本文标题:RESTful 理解

          本文链接:https://www.haomeiwen.com/subject/ulgioftx.html