JAX-RS 怎样用通俗的语言解释REST,以及RESTful?
JAX-RS
- 是什么:全称是Java API for RESTful Web Services,是一个Java编程语言的应用程序接口或规范,支持按照 REST 架构风格创建Web服务。
- 简单来说,就是提供一些与REST风格相关的注解,简化了web客户端和服务的开发与部署。
REST风格 API
- 是什么:
- 全称是:Resource Representational State,资源在网络中以某种表现形式(json/xml/jpeg等)进行状态转移。
- 本质是:定义后端接口(更具体来说,就是controller层url-pattern请求路径)的一种指导性原则。
- 简单来说:用 URL 定位资源,用 HTTP动词(GET、POST、PU、DELETE)描述操作。
- 为什么使用REST风格 API:
“古代”网页是前端后端融在一起的,网页在后端渲染,浏览器只能请求网页,而不能请求数据。
REST风格 API可以通过一套统一的接口为 Web,iOS和Android提供数据服务。web浏览器、IOS、Android客户端通过REST API请求后端数据,然后在前端渲染。
- Server的API如何设计才满足RESTful要求?
- API versioning 版本信息放在URL里面:https://example.com/api/v2/lists/3
关于web版本控制参考怎么做 Web API 版本控制?
- URI使用名词而不是动词,且推荐用复数。
- bad
- /getProducts
- /listOrders
- good
- GET /products
- POST /products
- 保证 HEAD 和 GET 方法是安全的,不会对资源状态有所改变(污染)。
- 比如严格杜绝如下情况:GET /deleteProduct?id=1
- 资源的地址推荐用嵌套结构。
- GET /friends/10375923/profile
- UPDATE /profile/primaryAddress/city6
- 使用正确的HTTP Status Code表示访问状态
- RESTful API最好做到Hypermedia,或HATEOAS,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
1. HATEOAS:**超媒体即应用状态引擎(hypermedia as the engine of application state)**
1. 超媒体是什么? 当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念: 把一个个把资源链接起来。
1. 要达到这个目的,就要求在表述格式里边加入链接来引导客户端。在《RESTFul Web Services》一书中,作者把这种具有链接的特性成为连通性。