理解什么是“接口(API)的架构风格”
- 什么是API(应用程序接口)?
- 两个单独的应用程序他们之间是无法直接进行信息交换的,必须借助于一个“桥梁”,这个桥梁就可以理解为应用程序接口。
- 一个程序可以通过调用你暴露给我的API,就能访问你的系统中的信息或者功能,我不需要去访问你的源码,也不需要知道你的内部工作的细节的。
- 接口架构风格
- 为了快速,大规模建立不同应用程序之间的“桥梁”,API的使用协议或规范来定义了哪些通过网络传输的消息的语义和信息。
- 这些规范以及协议就构成了一个个不同的接口架构风格。
认识REST
- REST(REpresentation State Transfer)中文名称为:表现层状态转移,他是在2000年提出的一个接口架构风格。
- 用一句话就可以概括出来REST是一种什么设计风格——使用URI表示资源(名词),使用http动作来操作资源(动词)。就是给你一个名词和一个动词,你就知道我想要干什么了,非常的简洁且优雅~
- 如果还不是很理解的话就看下面这个具体的例子
- 如果要对一个data进行CRUD操作的话
- 一般的API风格可能长这样
- /api/create_data
- /api/read_data
- /api/update_data
- /api/delete_data
- RESTful API是长这样的
- GET /api/data
- POST /api/data
- PUT /api/data
- DELETE /api/data
- 由此我们可以看出,一般风格的API对于一个资源就会产生四个URL,如果资源多了的话,简直就是URL数量爆炸……而RESTful API对于一个资源只会产生出一个URL,对于这个资源的操作类型由http动作来指定,说他非常简洁且优雅不为过吧^_^
- 一般的API风格可能长这样
- 如果要对一个data进行CRUD操作的话
- 以上就是对于RESTful接口设计风格一个简单的理解
- 优点:
- 轻量,直接基于http,不需要再有任何别的协议
- 面向资源,一目了然
- 数据描述简单,一般以xml,json做数据交换
- ……
在SpringBoot中实现RESTful风格
- SpringBoot开发RESTful主要是几个注解来实现的
- @PathVariable:从URL中获取数据
- @GetMapping:支持的get请求,等同于@RequestMapping(method=RequestMethod.GET)
- @PostMapping:支持的post请求,等同于@RequestMapping(method=RequestMethod.POST)
- @PutMapping:支持的put请求,等同于@RequestMapping(method=RequestMethod.PUT)
- @DeleteMapping:支持的delete请求,等同于@RequestMapping(method=RequestMethod.DELETE)
- @RestController:复合注解,是@Controller和@ResponseBody组合
在类的上面使用,表示当前的类的所有方法都加入了@ResponseBody注解
- 特别介绍一下@PathVariable的使用
- 他是用在控制器方法的形参前面,来获取URL中的数据
- 举例说明,要获取某一个id的学生的信息,那么设计出来的RESTful API为GET /student/{id},对应的实现如下图: