• 简单说说Restful API


    前言:

    最近一段时间,一直在低头敲代码,开发平台对外交互的API接口,功能已经大体完成了,回过头来看看自己的接口设计文档,不胜感慨,想当初自己也是为接口名称想破了脑袋,各种百度英文。今天一位老同事走过来看了一眼,随口说了一句,你这接口一点Restful风格没有。。。看一眼你的接口命名规则就知道,我只能点点头,也是。

    之前也有接触过REST接口设计风格,时间长了,终究还是都还回去了。今天也是准备把这块知识点拾掇起来,再重新认识一下,感兴趣的同学可以一起来了解了解。

    正文:

     先简单说说什么是Restful API

            RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。

    RESTFUL是一种架构风格,定义了一组规则和约束,符合REST风格的API接口称作为Restful API

    REST(Representational State Transfer)中文翻译过来可以理解为表现层状态转化

     

    主要特点:
    1.
    资源

    REST全称是表现层状态转化,那究竟指的是什么的表现? 其实指的就是资源,现实网络中各种各样信息的传递,交互,我们可以将这些信息抽象为资源,比如一张图片,一段文本,一个文件等。

    在网络中我们使用统一资源标识URI(Uniform Resource Identifier)来标识一个资源,类似于给你一张身份证,大家根据身份证就能知道你是谁。

    REST风格可以说是面向资源的,它请求的是一个资源,该资源往往用一个名词表示,不会出现动词(也是区别于RPC风格的一点)。

    2.表现层

    REST全称是表现层状态转化,既然是面向资源,为什么不叫资源状态转化呢?

    我们会发现往往在网络中交互的都是xmljsonhtml等格式数据,这些格式可以理解为资源对外表现的一种形式,这也就说明了实际上网络中交互的是资源的表现,并不只是单纯的资源本身。

    3.状态的转化

    现实网络中,往往是客户端发起一个请求,服务端进行相应的回应。在这个过程中,势必涉及到数据和状态的变化。而互联网通信协议HTTP,是一个无状态协议。这也就意味着,资源的状态都保存在服务器端。由客户端发起POST,PUT等操作,引起服务端对资源进行操作,发生状态的转化

    4.资源的链接(超媒体概念

    资源的链接可以理解为从一个资源跳转到另一个资源

    实际应用中我们发起对一个接口的请求,接口会返回一些数据,这些数据可能除了图片,json字符串等,有时候还会包含一个地址,这个地址往往是对下一个资源请求的地址。

    5.HTTP动词
            GET-
    查询                                                         安全,幂等性 
            POST-
    新增或者更新                                        非安全,非幂等性
            PUT
    (客户端提供改变后的完整资源)-更新   非安全,幂等性

            PATCH(客户端提供改变的属性)-更新         非安全,幂等性

            DELETE-删除                                                  非安全,幂等性


           安全性:操作不会改变资源的状态
           幂等性:操作一次和操作N次,对资源改变的效果是一样的。

     

    小结

    综合上面的解释,我们总结一下什么是RESTful架构:

       (1)每一个URI代表一种资源;

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

       (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"

     

    经过上面的了解,回过头来再看看我之前设计的接口URL,比如:htpp://localhost/Person/GetAll。真是被老同事一语中的哇。。。

  • 相关阅读:
    Java中的生产消费者问题
    线程ThreadDemo04
    Web开发的分层结构与MVC模式
    正则表达式
    jQuery总结
    深入学习Ajax
    JSTL标签库
    EL表达式
    JSP基础
    Servlet 总结
  • 原文地址:https://www.cnblogs.com/chenxf1117/p/13728723.html
Copyright © 2020-2023  润新知