返回
查看原链接原链接
Bilibili45分28秒 · —

手搓 API 之前,先把 HTTP 看明白

手搓API:理解HTTP协议核心结论通过手写API实践,掌握HTTP请求与响应的规范结构,并理解GET与POST等方法的语义,为后续使用框架打下基础。HTTP协议基础定义与角色HTTP是浏览器上网的规范,API复用此规范调用方(发起请求)与被调用方(响应)请求与响应的对称结构请求:请求行、请求头、空行、请求体响应:状态行、响应头、空行、响应体请求的组成请求行包含方法、路径、协议版本示例:GET /api/ip HTTP/1.1请求头格式为“名字: 值”,一行一条常见:Host、User-Agent、Accept、Content-Type空行与请求体空行分隔头与体请求体通常用于POST提交内容,GET一般无请求体响应的组成状态行包含协议版本、状态码、简短说明状态码规律:2xx成功,4xx请求方问题,5xx服务方问题响应头关键字段:Content-Type描述响应体格式示例:Content-Type: application/json响应体实际返回的数据,如JSON或HTMLHTTP方法GET与POSTGET:请求获取数据,无请求体POST:提交内容请服务器处理,数据在请求体其他方法PUT:整体替换PATCH:部分修改DELETE:删除HEAD:只要响应头OPTIONS:查询允许的操作常见头部请求头Host:目标服务器User-Agent:客户端身Accept:期望的响应格式Authorization:身份凭证Cookie:随身小纸条响应头Content-Type:响应体格式Set-Cookie:给客户端发纸条Location:重定向地址Access-Control-Allow-Origin:跨域控制手写API实现必读必写项必读:请求方法、路径必写:状态行、空行、Content-Type、响应体(实践)Python代码结构使用http.server模块,do_GET处理GET通过self.path判断路径,send_response写状态码send_header写响应头,end_header写空行组装响应体并写出运行与测试监听8000端口,serve_forever常驻用curl或浏览器访问,验证返回JSON实验观察Content-Type实验指定为text/html时,浏览器渲染为网页指定为application/json时,浏览器显示文本需包含charset=utf-8避免乱码服务端可见信息可看到请求头、User-Agent、客户端IP可识别请求来自curl还是浏览伪造User-Agent通过curl设置UA可伪装为浏览器HTTP协议简单,信息可任意修总结与展望手写API的价值理解HTTP底层原理为使用框架打下基础框架的必要性真实项目接口众多,手写繁琐框架封装重复劳动,如FastAPI