美文网首页
RESTFUL特性探究

RESTFUL特性探究

作者: atrocitytheme | 来源:发表于2019-03-07 01:40 被阅读0次

    RESTFUL梗概

    RESTFUL: url为名词,http操作为动词,进行representation分配,更多的依靠http的性质如<query>栏等进行操作,http性质利用越多越好

    根据《HTTP权威指南所描述》,url的设计遵循

    <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
    

    作用

    作用:有利于前后端彻底分离,解决请求问题
    关键词:

    1. 无状态
    2. 资源间相互独立,当前查询不依赖于前一个查询,也遵循原子性进行设计也不属于RESTFUL

    典型例子

    delete /resource/userid
    get /resource
    post /login
    delete /login/{userid}
    

    存在问题

    1. 批量操作,登陆登出
    2. 复杂请求下url的繁杂,和过多的url

    解决方式:

    1. RPC混用
    2. 全部使用SOAP
    3. 利用集合

    Reference

    例题

    1. 如何将
    POST /trips/123/start
    POST /trips/123/finish
    POST /trips/123/cancel
    

    用REST方式重写?

    Solution: 将start, finish, cancel等视作状态(资源)

    POST /trips/123/start  --- userid in post request
    POST/DELETE /trips/finish/123 -- since it's delete operation
    POST/DELETE /trips/cancellation/123 -- since it's delete operation
    

    其中我们将trips视为一种资源集合,其他更改为名词,如start -> start, finish -> finish, cancel -> cancellation

    1. 如何将
    POST /SendMessage HTTP/1.1
    Host: api.example.com
    Content-Type: application/json
    
    {"userId": 501, "message": "Hello world!"}
    

    改写为REST形式

    Solution:

    POST 501/messages HTTP/1.1 //多利用url进行处理
    HOST: api.example.com
    Content-Type: application/json
    
    {"message": "Hello!"}
    
    1. 如何将
    GET trips/sharemessage?src=user1&to=user2
    

    改写为REST 形式

    GET trips/message?src=user1&to=user2
    
    1. REST如何进行批量操作?
      Solution: 创建资源set,在set中创建set
    DELETE/POST users/userset1
    

    或者可以

    POST users
    {"set": "userset1"}
    

    REST中可以不出现单个资源只出现资源集合吗?

    Solution: 可以,也可以不出现资源集合,只出现单个资源,只要满足存在Representation即可`

    相关文章

      网友评论

          本文标题:RESTFUL特性探究

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