本人是个PHPer, 工作几年了, HTTP这块一直是个过不去的坎儿, 像是 那一大堆状态码,一大堆的首部字段 等等很多细节, 本人完全不知道怎么开始, 一直想研究如何使用HTTP协议实现自己的HttpResponse,HttpRequest类?
可看了Symfony等一些框架的源码, 发现很细, 每个状态码, 方法都有纳入, 但我怎么才能知道每个状态码都是具体什么意思? 总感觉哪怕有一个状态码不知道是什么准确意思也过不了自己这关,况且面试也老问,(但好像看了HTTP权威,感觉书上也说的稀里糊涂), symfony也不会就那么稀里糊涂的纳入代码中吧, 肯定每个都有其具体用途的
求大家给指点该怎么去学这些东西
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"
前期可以处理一些常见的状态码
解决方案2:哥们,既然你要写自己的response和request类,何不参考一下psr7 http的规范呢.又可以了解psr规范,其实基本上各大框架的http响应都是基于psr7规范来的.当然,你如果不知道,我觉得你可以去看一下slim的request,response实现,这个很简单.然后基于这个你就可以写自己的response,和request类
PSR-7 HTTP 消息接口规范
当然,专业的phper一定会知道,以下的这些规范
psr-0 自动加载规范 废弃
psr-1 基础编码规范 通过
psr-2 编码风格规范 通过
psr-3 日志接口规范 通过
psr-4 自动加载规范 通过
psr-5 PHPDoc 标准 抛弃
psr-6 缓存接口规范 通过
psr-7 HTTP 消息接口规范 通过
psr-8 Huggable 接口 抛弃
psr-9 项目安全问题公示 抛弃
psr-10 项目安全上报方法 抛弃
psr-11 服务容器接口 通过
psr-12 全量编码风格规范 审核中
psr-13 超媒体链接 通过
psr-14 事件管理 抛弃
psr-15 HTTP消息处理 起草
psr-16 简单缓存 通过
psr-17 HTTP Factories 抛弃
psr-18 HTTP Client 起草
当然,我们熟悉的composer就是遵循了psr-4自动加载规范.作为一个专业的phper你不能不知道这些规范.
以下附上一些文档资料
[psr规范中文网站](http://psr.phphub.org/)
[psr规范翻译](https://github.com/summerblue/psr.phphub.org/tree/master/psrs)
[psr官方网站](http://www.php-fig.org/psr/)
中文可能不全,如果要全的,请查看英文网站
解决方案3:首先你需要知道各种约定 ,rfc那些,建议你看看《图解HTTP》,这本书讲的不错,
再就看看源码就大概知道怎么回事了,实现它也就是水到渠成。
解决方案4:request和response是http生命周期中的东西,相当于输入输出,你可以这样的思维去应用,将php输入变量到request,如常见的超全局变量_GET,_POST,_SERVER。
解决方案5:被踩了,才发现题主已经提到了这本书。
题主主要是想了解怎么自己写 Request/Response
这些东西的话,其实主要就是在解析下面这个东西: