什么是RESTful API
1.是一种设计风格
2.不在URL中使用动词完成动作,比如POST addUser,GET deleteUser,GET/POST editUser,GET getUser.
提问:什么是URL?
答:URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位符”。
通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“://”符号隔开,
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略。
3.取而代之的是由HTTP动词 + URI完成动作
提问:什么是URI?
答:URI,通一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。
URI通常由三部分组成:
①访问资源的命名机制(协议);
②存放资源的主机名(网站地址/IP);
③资源自身的名称。
提问:URL和URI区别?
答:URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。
提问:什么是HTTP动词?
答:类似原先的GET和POST,是动作对应的方法,表现为对URI的操作。
4.常用的五个HTTP动词:
- GET - 获取资源,单个或多个
- POST - 创建资源
- PUT - 更新资源,客户端提供完整的资源数据
- PATCH - 更新资源,客户端提供部分的资源数据
- DELETE - 删除资源
5.常用来构建RESTful风格api的注解
- @RestController 标明此Controller提供RestAPI
- @RequestMapping 及其变体。映射http请求url到java方法
- @RequestParam 映射请求参数到java方法的参数
- @PageableDefault 指定分页参数默认值
- @PathVariable 映射url片段到java方法的参数,在url声明中使用正则表达式
- @JsonView 控制json输出内容
6.常用HTTP状态码
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。