介绍
如今,开发 RESTful 风格的 API 是很流行的。REST 是一种使用了 HTTP (几乎总是) 的 IPC 机制。 资源是REST 中的一个关键概念,它通常表示业务对象,如客户、产品或这些业务对象的集合。REST 使用 HTTP动词(谓词)来操纵资源,这些资源通过 URL 引用。例如,GET 请求返回一个资源的表述形式,可能是 XML 文档或 JSON对象形式。POST 请求创建一个新资源,PUT 请求更新一个资源,DELETE请求删除一个资源。
引用 REST 创建者 Roy Fielding:
“REST 提供了一套架构约束,当应用作为整体时,其强调组件交互的可扩展性、接口的通用性、组件的独立部署以及中间组件,以减少交互延迟、实施安全性和封装传统系统。” — Roy Fielding,《架构风格与基于网络的软件架构设计》
使用基于 HTTP 的协议有很多好处:
- HTTP 简单易懂。
- 您可以使用浏览器扩展(如 Postman)来测试 HTTP API,或者使用 curl 命令行测试
- HTTPAPI(假设使用了 JSON 或其他一些文本格式)。 它直接支持请求/响应式通信。
- HTTP 属于防火墙友好。
- 它不需要中间代理,简化了系统架构。
使用 HTTP 也存在一些缺点:
- HTTP 仅直接支持请求/响应的交互方式。您可以使用 HTTP 进行通知,但服务器必须始终发送 HTTP 响应。
- 因为客户端和服务直接通信(没有一个中间者来缓冲消息),所以它们必须在交换期间都运行着。
- 客户端必须知道每个服务实例的位置(即 URL)。如第二章关于 API 网关所述,这是现代应用程序中的一个复杂问题。客户端必须使用服务发现机制来定位服务实例。
使用举例
- post
@RequestMapping(value = "order")
public class OrderMainProcess implements IOrderMainProcess {
@RequestMapping(value = "createOrder",method = RequestMethod.POST)
public OutDTO<Object> create( @RequestBody RequestDto<RequestMessageDto<OrderItemDto>> allDto) {
通过postman http://localhost:8771/order/createOrder
结果:
{
"ROOT": {
"BODY": {
"DETAIL_MSG": "OK",
"OUT_DATA": {
"ORDER_ID": "Ocd2924c868"
},
"RETURN_MSG": "OK",
"USER_MSG": "OK"
}
}
}
- get
//http://localhost:8081/user/45899
@RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
public String getUserById(@PathVariable int id) {
- put
@RequestMapping(value="/{id}",method=RequestMethod.PUT)
public ModelAndView update(@PathVariable Long id){ }