美文网首页程序开发开发dotnet core
[程序员每日5分钟] 初识 RESTful

[程序员每日5分钟] 初识 RESTful

作者: anonymous66 | 来源:发表于2016-12-27 15:58 被阅读599次

    什么是RESTful

    RESTful API

    RESTful是一种设计风格,并不是一种标准。

    简短的去概括的话,就是:
    1、URL 定位资源

    资源,就是数据。比如newsfeed,friends,order等
    

    2、用 HTTP 动词描述操作。

    GET、PUT、POST、DELETE
    

    我为什么要用TA

    1、以前的开发方式都是前后端混在一起开发,比如php里面写html啊之类的。那么移动开发再加上web,我们岂不是要维护三个地方。
    2、随着版本迭代,项目越来越大,如果api杂乱无章,那么维护起来更是无法控制。
    3、所以,我们就要有所约束,而RESTful就是利用HTTP本身的一些特征来制定的风格。


    如何设计RESTful?

    • REST ful 是面向资源的,而资源是通过 URI 进行暴露。

    (一)、URI 的设计只要负责把<b>资源</b>通过合理方式暴露出来就可以了
    (二)、对资源的<b>操作</b>与它无关,操作是通过 <b>HTTP 动词</b>来体现。
    (三)、所以 REST ful 通过 URI 暴露资源时,会强调<b>不要</b>在 URI 中出现动词。
    (四)、推荐用<b>复数</b>。

    不太理解吗?来看个栗子:

    比如:左边是错误的设计,而右边是正确的

    GET /rest/api/getDogs | GET /rest/api/dogs 获取所有狗 
    POST /rest/api/addDogs | POST /rest/api/dogs 添加一个狗    
    PUT /rest/api/editDogs/:dog_id | PUT /rest/api/dogs/:dog_id 修改一只狗 
    DELETE /rest/api/deleteDogs/:dog_id | DELETE /rest/api/dogs/:dog_id 删除一只狗 
    
    左边的这种设计,很明显不符合REST风格。

    上面已经说了,URI 只负责准确无误的暴露资源,而 getDogs/addDogs... 已经包含了对资源的操作,这是不对的。
    相反右边却满足了,它的操作是使用标准的HTTP动词来体现。

    • REST ful 很好地利用了HTTP本身就有的一些特征,如HTTP动词、HTTP状态码、HTTP报头等等

    (一)、REST ful 是基于 HTTP 的,所以你的API应该去使用 HTTP的一些标准。这样所有的HTTP客户端(如浏览器)才能够直接理解你的API。
    (二)、REST ful 强调利用好 HTTP 本来就有的特征。

    不太理解吗?一个一个解释:
    一、HTTP 动词
    GET      获取一个资源 
    POST     添加一个资源 
    PUT      修改一个资源 
    DELETE   删除一个资源
    

    实际上,这四个动词实际上就对应着增删改查四个操作,这就利用了HTTP 动词来表示对资源的操作

    二、HTTP状态码

    在与 API 的交互当中,无非就三种状态:

    200   OK                       成功
    400   Bad Request              客户端错误
    500   Internal Server Error    服务器端错误
    
    三、HTTP报头
    Authorization   认证报头 
    Cache-Control   缓存报头 
    Content-Type    消息体类型报头 
    ...
    

    报头还有很多,不一一列举。
    HTTP报头是描述HTTP请求或响应的 <a href="http://baike.baidu.com/link?url=ljPKp9OCm01gS4b3_YP1qnEg5zTbPgQkNl-TaQQrQNkAspc-pd8FLMQ5_GAHDZ5q0vFtVH-pLntA8aqfeLzHb3MsqIpHlpjbxPcJ9ebgWzqpt8vYTN4eX8lOAIQju_Tn">元数据。</a>
    它的作用是客户端 与 服务器端进行相互通信时,告诉对方应该如何处理本次请求。


    一些实例如醍醐灌顶

    GET http://localhost:8080/api/students 可以获得所有的学生信息。
    
    GET http://localhost:8080/api/students/1 可以获得id为“1”的学生信息。
    
    POST 以下JSON内容 
    {"id":0,"firstName":"Edison","lastName":"Di","gender":"M",
    "birthday":538300800000,"uscId":"1234509876","gpa":3.62,
    "mentorId":null,"department":"Computer Science"}
    到 http://localhost:8080/api/student 可以添加一个学生信息。
    
    PUT 以下内容 
    {"gpa":3.62}  
    到 http://localhost:8080/api/students/1 可以修改学生ID为1的学生的GPA.
    
    DELETE http://localhost:8080/api/students/1 可以删除学生ID为1的信息。
    

    最后

    本文章主要是让大家认识一下什么是REST ful,大家如果需要继续深入理解和学习的话,请进<a href="https://github.com/aisuhua/restful-api-design-references">传送门</a>
    恭喜你,工资又涨了100块。

    相关文章

      网友评论

      本文标题:[程序员每日5分钟] 初识 RESTful

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