1.http请求响应规范
在第五周预习和上课中已经学习了http的请求报文和响应报文的格式和相关知识,这里就不在赘述,只是增添一点细枝末节的内容。
请求头部
host:指定请求的主机名和端口号,如Host: www.example.com
。
accept:告知服务器客户端能够接收的内容类型,如Accept: text/html
表示客户端接受HTML格式的内容。
accept--language:指定客户端希望接收的语言,如Accept-Language: zh-CN
表示客户端希望接收中文内容。
accept--incoding:告知服务器客户端支持的压缩格式,如Accept-Encoding: gzip
表示客户端支持gzip压缩。
authorization:用于在请求中包含认证信息,如基本认证、令牌认证等。
content--length:表示请求体的长度,单位为字节,当请求体中有数据时需要指定。
content--type:指定请求体的媒体类型,如Content-Type: application/json
表示请求体是JSON格式。
cookie:用于在请求中包含客户端的Cookie信息。
状态码
1xx(信息性状态码):表示请求已被接收,需要继续处理。如100(继续)、101(切换协议)。
2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。如200(成功)、201(已创建)、204(无内容)。
3xx(重定向状态码):表示需要后续操作才能完成请求。如301(永久重定向)、302(临时重定向)。
4xx(客户端错误状态码):表示客户端可能发生了错误,妨碍了服务器的处理。如400(错误请求)、401(未授权)、403(禁止)、404(未找到)。
5xx(服务器错误状态码):表示服务器在处理请求的过程中发生了错误。如500(内部服务器错误)、502(网关错误)、503(服务不可用)。
2.RESTFUL API设计
1.RESTful 有四个核心部分:无状态、统一接口、资源导向和超媒体作为状态的引擎。
2. 资源的标识
资源:RESTful API中的核心概念,可以是任何东西,如用户、订单、文章等。
资源标识符:每个资源都有一个唯一的URI来标识它。URI应该简洁、具有描述性,并且尽量保持不变。
示例
获取用户列表:GET /users
,获取单个用户:GET /users/{id}
创建新用户:POST /users
更新用户信息:PUT /users/{id}
删除用户:DELETE /users/{id}
3.
资源的集合
分页:当资源集合较大时,应支持分页。示例:GET /users?page=1&size=10
过滤:允许客户端通过查询参数过滤资源。示例:GET /users?name=John
排序:允许客户端通过查询参数对资源排序。示例:GET /users?sort=age,desc
示例
获取用户
{
"users": [
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com",
"age": 30
},
{
"id": 2,
"name": "Jane Doe",
"email": "jane.doe@example.com",
"age": 25
}
],
"totalPages": 10,
"currentPage": 1
}
创建用户
{
"name": "Alice",
"email": "alice@example.com",
"age": 28
}
更新
{
"name": "Alice Smith",
"email": "alice.smith@example.com",
"age": 29
}
总之,RESTful API设计是一种基于HTTP协议的网络应用程序设计风格,通过统一的接口、资源导向和无状态交互,实现高效、灵活的网络应用程序。合理设计RESTful API可以提高开发效率、降低耦合度,并提升用户体验。