RESTful API 介绍

JinLonghua    2020-08-29 22:54

        根据找到的资料介绍一下RESTful API。之前已经在网上搜了不少次,想找一些资料,但是都不是很满意,今天才发现维基百科上的资料难得的对不熟悉的人也较为友好。
        REST这个概念表示representational state transfer,由 Roy Fielding 在2000年提出,并应用于HTTP1.1的实现,与URI的标准的设计。
        其中下列几个要求
  • Client-server architecture:服务端与客户端相分离,
  • Statelessness:无状态,在请求之间,没有客户端的信息存储在服务端。每一个从客户端来的请求都包含足够信息,使服务端能够处理对应请求。(这里通过session来使用server-side cookie从而保存客户端的信息就是不允许的了。 【链接】
  • Cacheability:可缓存,发送同样的请求能够得到同样的相应。(在滴滴工作的同学说的一个案例,实现一个机器学习模型的时候,由于请求一次计算时间过长,算力要求很高,而一天内基本都是同一个请求。在不更改任何代码的情况下,直接通过中间件将请求缓存起来就不用重复计算了。)
  • Layered system:分层系统,无需知道服务器情况,如中间有没有负载平衡组件之类的,无需知道请求的使哪一个服务器。便于系统扩容。
  • Code on demand (optional):可选项,客户端能实现服务端功能。如java applets,这个太老了,现在也很少这样做了。
  • Uniform interface:接口一致
    • Resource identification in requests:请求的资源可以在请求中找到相关信息。并且不同的资源的表示不同,能够相互区分。例如使用不同的URI, 
    • Resource manipulation through representations:通过使用客户端保存的状态能够更改资源状态。
    • Self-descriptive messages:信息包含足够内容来描述如何处理信息,如带上media类型符号等
    • Hypermedia as the engine of application state:客户端能通过提供的链接等访问到服务器所提供的所有资源。并且服务端能返回包含其他资源的超链接供客户端访问。
      
  一般服务器返回的格式为 HTMLXMLJSON等。
并且POST,PUT,DELETE等HTTP方法何时使用,有相应的规范,返回状态码也一般根据服务器处理情况返回不同状态码(很多的中间件什么的也可以通过状态码来处理返回)。


 

Do sessions really violate RESTfulness?https://stackoverflow.com/questions/6068113/do-sessions-really-violate-restfulness

Last Modified: 2020-08-29 22:54
Views: 1.5K

[[total]] comments

Post your comment
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]Floor
  2. Click to load more...
  3. Post your comment