### 13.2.2 @RestController 注解@RestController 用于描述REST服务,他相当于@Controller 和@ResponseBody的组合。如下俩个例子是等价的 ~~~java @RestController @RequestMapping("/api/v1") public class OrderApiCrontroller { @GetMapping("/order/{orderId}") public Order getOrder(@PathVariable String orderId) throws Exception{ ..... } } ~~~ ~~~java @Controller @RequestMapping("/api/v1") public class OrderApiCrontroller { @GetMapping("/order/{orderId}") public @ResponseBody Order getOrder(@PathVariable String orderId) throws Exception{ ..... } } ~~~ > 记住,REST架构只是一种架构风格而不是特殊的一种技术,即使没有使用@RestController注解,你也能完成REST架构 为了测试Rest服务,我们可以使用curl命令。如果你是linux和Mac系统,自带curl,如果你是window系统,如果安装了git,也会自带curl,否则你得自行安装,参考3章curl介绍。 对于如下REST接口 ~~~java @PostMapping("/order") public String addOrder(@RequestBody Order order) throws Exception{ return "{success:true,message:\"添加成功\"}"; } ~~~ 可以使用如下命令进行测试 ~~~ >curl -XPOST '127.0.0.1:8080/api/v1/order' -H 'Content-Type: application/json' -d' { "id" : "001", "name":"订单" } ' ~~~ 如下删除接口 ~~~java @DeleteMapping("/order/{orderId}") public String cancelOrder(@PathVariable String orderId) throws Exception{ return "{success:true,message:\"订单取消成功\"}"; } ~~~ > 绝大部分业务系统,删除并非代表真正的物理删除(从数据库物理删除),往往只是状态的变化。 可以使用如下命令进行测试 ~~~ >curl -XDELETE '127.0.0.1:8080/api/v1/order/100' ~~~