猿问

求教如何使用HTTP协议实现自己的HttpResponse,HttpRequest类?

本人是个PHPer, 工作几年了, HTTP这块一直是个过不去的坎儿, 像是 那一大堆状态码,一大堆的首部字段 等等很多细节, 本人完全不知道怎么开始, 一直想研究如何使用HTTP协议实现自己的HttpResponse,HttpRequest类?

可看了Symfony等一些框架的源码, 发现很细, 每个状态码, 方法都有纳入, 但我怎么才能知道每个状态码都是具体什么意思? 总感觉哪怕有一个状态码不知道是什么准确意思也过不了自己这关,况且面试也老问,(但好像看了HTTP权威,感觉书上也说的稀里糊涂), symfony也不会就那么稀里糊涂的纳入代码中吧, 肯定每个都有其具体用途的

求大家给指点该怎么去学这些东西

守着星空守着你
浏览 494回答 5
5回答

繁星点点滴滴

被踩了,才发现题主已经提到了这本书。 题主主要是想了解怎么自己写 Request/Response 这些东西的话,其实主要就是在解析下面这个东西: Method SP Request-URI SP HTTP-Version CRLF *(( general-header | request-header | entity-header ) CRLF) CRLF [ message-body ] 来源: HTTP请求parse流程、RequestLineParser、HttpQueryParameterParser 状态码 这个东西,其实看看表对应一下就可以了,因为这个是全世界大家一起遵守的。但是 头部 这个东西,就不是那么回事了,你可以选择性得去支持一些头部,因为 HTTP 允许你定义一个只有你自己的服务端才会解析的 头部。 上面请求体结构中 general-header 是大多数情况下都是比较常见的、大家都遵守的一些头部信息。而 request-header、entity-header 这两部分就属于比较自由的地方了,你可以去解析并执行相应的处理,也可以忽略它。 具体到【服务端产出了什么样的 response 应该对应哪个 状态码】、【客户端传输了什么 header 要求服务端做什么事】、【服务端传输了什么header要求客户端做什么事】这三个问题,常见的情况都可以在《HTTP权威指南》的附录B、附录C找到。 原答案: 强烈推荐 《HTTP 权威指南》 一书。

茅侃侃

request和response是http生命周期中的东西,相当于输入输出,你可以这样的思维去应用,将php输入变量到request,如常见的超全局变量_GET,_POST,_SERVER。

婷婷同学_

100 => "HTTP/1.1 100 Continue", 101 => "HTTP/1.1 101 Switching Protocols", 200 => "HTTP/1.1 200 OK", 201 => "HTTP/1.1 201 Created", 202 => "HTTP/1.1 202 Accepted", 203 => "HTTP/1.1 203 Non-Authoritative Information", 204 => "HTTP/1.1 204 No Content", 205 => "HTTP/1.1 205 Reset Content", 206 => "HTTP/1.1 206 Partial Content", 300 => "HTTP/1.1 300 Multiple Choices", 301 => "HTTP/1.1 301 Moved Permanently", 302 => "HTTP/1.1 302 Found", 303 => "HTTP/1.1 303 See Other", 304 => "HTTP/1.1 304 Not Modified", 305 => "HTTP/1.1 305 Use Proxy", 307 => "HTTP/1.1 307 Temporary Redirect", 400 => "HTTP/1.1 400 Bad Request", 401 => "HTTP/1.1 401 Unauthorized", 402 => "HTTP/1.1 402 Payment Required", 403 => "HTTP/1.1 403 Forbidden", 404 => "HTTP/1.1 404 Not Found", 405 => "HTTP/1.1 405 Method Not Allowed", 406 => "HTTP/1.1 406 Not Acceptable", 407 => "HTTP/1.1 407 Proxy Authentication Required", 408 => "HTTP/1.1 408 Request Time-out", 409 => "HTTP/1.1 409 Conflict", 410 => "HTTP/1.1 410 Gone", 411 => "HTTP/1.1 411 Length Required", 412 => "HTTP/1.1 412 Precondition Failed", 413 => "HTTP/1.1 413 Request Entity Too Large", 414 => "HTTP/1.1 414 Request-URI Too Large", 415 => "HTTP/1.1 415 Unsupported Media Type", 416 => "HTTP/1.1 416 Requested range not satisfiable", 417 => "HTTP/1.1 417 Expectation Failed", 500 => "HTTP/1.1 500 Internal Server Error", 501 => "HTTP/1.1 501 Not Implemented", 502 => "HTTP/1.1 502 Bad Gateway", 503 => "HTTP/1.1 503 Service Unavailable", 504 => "HTTP/1.1 504 Gateway Time-out" 前期可以处理一些常见的状态码
随时随地看视频慕课网APP
我要回答