HTTP 基础 封面
Vapor 大型教程

HTTP 基础

写接口前先把 HTTP 的请求、响应、方法和状态码对上。这里只讲实际开发会反复遇到的那部分,并用接口例子说明它们怎样配合。

HTTP 协议

HTTP(Hyper Text Transfer Protocol)超文本传输协议,是 Web 的基础内容。有两个实体:客户端(Client)、服务端(Server)。客户端向服务端发起请求,索要资源。服务端向客户端返回需要的资源。如果服务端满足不了客户端的需要,需要返回相关的说明。参考文档:HTTP 参考文档。

HTTP 请求(Request)

请求包含几个部分:

HTTP 2.0

HTTP 2.0 在效率和延迟上对 HTTP 1.1 进行了扩展,单个的请求和 HTTP 1.1 没有什么区别,但是 HTTP 2.0 的请求可以并行执行。服务器可以预测客户端的请求,从而在请求还没有发出的情况下把客户端可能需要的资源提前推送给客户端。Vapor 支持 HTTP 1.1 和 HTTP 2.0。

状态码如何帮助排错

客户端调试时先看状态码,再看响应体:2xx 表示请求已处理,3xx 通常需要跟随跳转,4xx 应检查 URL、参数和认证,5xx 则需要回到服务器日志。把所有失败都返回 200 会让监控和客户端误判,因此接口应选择与实际结果匹配的状态码。

实践建议:为错误响应统一返回 JSON 结构,例如 {"error":"invalid_parameter","message":"name 不能为空"},同时设置正确的 Content-Type。这样网页、移动端和命令行客户端可以共用同一套错误处理逻辑。

客户端可用的请求方法

客户端发起请求时可以用多种方式进行选择:

Web 浏览器只能使用 GET 和 POST 两种方式的请求,并且不能修改请求头,要修改请求头只能依赖 JavaScript。其它客户端像 iOS 应用可以使用所有的 HTTP 请求方式,更加灵活。

HTTP 响应(Response)

响应包含几个部分:

HTTP 响应码参考:标准响应码列表参考。


本系列其他文章