本人是個PHPer, 工作幾年了, HTTP這塊一直是個過不去的坎兒, 像是 那一大堆狀態(tài)碼,一大堆的首部字段 等等很多細(xì)節(jié), 本人完全不知道怎么開始, 一直想研究如何使用HTTP協(xié)議實(shí)現(xiàn)自己的HttpResponse,HttpRequest類?
可看了Symfony等一些框架的源碼, 發(fā)現(xiàn)很細(xì), 每個狀態(tài)碼, 方法都有納入, 但我怎么才能知道每個狀態(tài)碼都是具體什么意思? 總感覺哪怕有一個狀態(tài)碼不知道是什么準(zhǔn)確意思也過不了自己這關(guān),況且面試也老問,(但好像看了HTTP權(quán)威,感覺書上也說的稀里糊涂), symfony也不會就那么稀里糊涂的納入代碼中吧, 肯定每個都有其具體用途的
求大家給指點(diǎn)該怎么去學(xué)這些東西
哥們,既然你要寫自己的response和request類,何不參考一下psr7 http的規(guī)范呢.又可以了解psr規(guī)范,其實(shí)基本上各大框架的http響應(yīng)都是基于psr7規(guī)范來的.當(dāng)然,你如果不知道,我覺得你可以去看一下slim的request,response實(shí)現(xiàn),這個很簡單.然后基于這個你就可以寫自己的response,和request類
PSR-7 HTTP 消息接口規(guī)范
當(dāng)然,專業(yè)的phper一定會知道,以下的這些規(guī)范
psr-0 自動加載規(guī)范 廢棄
psr-1 基礎(chǔ)編碼規(guī)范 通過
psr-2 編碼風(fēng)格規(guī)范 通過
psr-3 日志接口規(guī)范 通過
psr-4 自動加載規(guī)范 通過
psr-5 PHPDoc 標(biāo)準(zhǔn) 拋棄
psr-6 緩存接口規(guī)范 通過
psr-7 HTTP 消息接口規(guī)范 通過
psr-8 Huggable 接口 拋棄
psr-9 項(xiàng)目安全問題公示 拋棄
psr-10 項(xiàng)目安全上報方法 拋棄
psr-11 服務(wù)容器接口 通過
psr-12 全量編碼風(fēng)格規(guī)范 審核中
psr-13 超媒體鏈接 通過
psr-14 事件管理 拋棄
psr-15 HTTP消息處理 起草
psr-16 簡單緩存 通過
psr-17 HTTP Factories 拋棄
psr-18 HTTP Client 起草
當(dāng)然,我們熟悉的composer就是遵循了psr-4自動加載規(guī)范.作為一個專業(yè)的phper你不能不知道這些規(guī)范.
以下附上一些文檔資料
[psr規(guī)范中文網(wǎng)站](http://psr.phphub.org/)
[psr規(guī)范翻譯](https://github.com/summerblue/psr.phphub.org/tree/master/psrs)
[psr官方網(wǎng)站](http://www.php-fig.org/psr/)
中文可能不全,如果要全的,請查看英文網(wǎng)站
被踩了,才發(fā)現(xiàn)題主已經(jīng)提到了這本書。
題主主要是想了解怎么自己寫 Request/Response
這些東西的話,其實(shí)主要就是在解析下面這個東西:
Method SP Request-URI SP HTTP-Version CRLF
*(( general-header
| request-header
| entity-header ) CRLF)
CRLF
[ message-body ]
來源: HTTP請求parse流程、RequestLineParser、HttpQueryParameterParser
狀態(tài)碼
這個東西,其實(shí)看看表對應(yīng)一下就可以了,因?yàn)檫@個是全世界大家一起遵守的。
但是 頭部
這個東西,就不是那么回事了,你可以選擇性得去支持一些頭部,因?yàn)?HTTP
允許你定義一個只有你自己的服務(wù)端才會解析的 頭部。
上面請求體結(jié)構(gòu)中 general-header
是大多數(shù)情況下都是比較常見的、大家都遵守的一些頭部信息。而 request-header
、entity-header
這兩部分就屬于比較自由的地方了,你可以去解析并執(zhí)行相應(yīng)的處理,也可以忽略它。
具體到【服務(wù)端產(chǎn)出了什么樣的 response
應(yīng)該對應(yīng)哪個 狀態(tài)碼】、【客戶端傳輸了什么 header
要求服務(wù)端做什么事】、【服務(wù)端傳輸了什么header
要求客戶端做什么事】這三個問題,常見的情況都可以在《HTTP權(quán)威指南》的附錄B、附錄C找到。
原答案:
強(qiáng)烈推薦 《HTTP 權(quán)威指南》 一書。
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"
前期可以處理一些常見的狀態(tài)碼
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。