JAX-RS 怎样用通俗的语言解释REST,以及RESTful?

JAX-RS

  1. 是什么:全称是Java API for RESTful Web Services,是一个Java编程语言的应用程序接口或规范,支持按照 REST 架构风格创建Web服务。
  2. 简单来说,就是提供一些与REST风格相关的注解,简化了web客户端和服务的开发与部署。

REST风格 API

  1. 是什么:
    1. 全称是:Resource Representational State,资源在网络中以某种表现形式(json/xml/jpeg等)进行状态转移。
    2. 本质是:定义后端接口(更具体来说,就是controller层url-pattern请求路径)的一种指导性原则。
    3. 简单来说:用 URL 定位资源,用 HTTP动词(GET、POST、PU、DELETE)描述操作。
  2. 为什么使用REST风格 API:

“古代”网页是前端后端融在一起的,网页在后端渲染,浏览器只能请求网页,而不能请求数据。
REST风格 API可以通过一套统一的接口为 Web,iOS和Android提供数据服务。web浏览器、IOS、Android客户端通过REST API请求后端数据,然后在前端渲染。

  1. Server的API如何设计才满足RESTful要求?
    1. API versioning 版本信息放在URL里面:https://example.com/api/v2/lists/3

关于web版本控制参考怎么做 Web API 版本控制?

  1. URI使用名词而不是动词,且推荐用复数。
    1. bad
    • /getProducts
    • /listOrders
    1. good
    • GET /products
    • POST /products
  2. 保证 HEAD 和 GET 方法是安全的,不会对资源状态有所改变(污染)。
    1. 比如严格杜绝如下情况:GET /deleteProduct?id=1
  3. 资源的地址推荐用嵌套结构。
    1. GET /friends/10375923/profile
    2. UPDATE /profile/primaryAddress/city6
  4. 使用正确的HTTP Status Code表示访问状态
  5. RESTful API最好做到Hypermedia,或HATEOAS,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。

HATEOAS又是什么鬼?

  1. 1. HATEOAS:**超媒体即应用状态引擎(hypermedia as the engine of application state)**
  2. 1. 超媒体是什么? 当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念: 把一个个把资源链接起来。
  3. 1. 要达到这个目的,就要求在表述格式里边加入链接来引导客户端。在《RESTFul Web Services》一书中,作者把这种具有链接的特性成为连通性。