1.建立壹個TCP Socket服務器。
首先編寫壹個TCP Socket服務器,是因為HTTP通信是建立在TCP Socket基礎上的。所要做的工作就是監聽某個指定端口(默認HTTP服務在80),接收訪問請求並建立連接,接收發來的Datagram,並且提供回復Datagram的能力。這壹步可以簡單可以復雜,可以考慮並發、均衡、端口連接限制balabala,也可以二逼到啥都不管。總之我們需要監聽壹個端口就是了。
2.編寫壹個解析HTTP Request的解析器。
既然是HTTP服務,從之前監聽的端口收來的Datagram裏自然就是HTTP Request。Request分表頭和正文,包括訪問地址、UA、Cookie等各類參數以及提交的表單等內容。詳細格式看看HTTP協議文檔就好。
3.實現URL路由。
獲得了Request之後,我們知道用戶訪問了個什麽地址,就要指向相應的內容。根據地址來指定內容的工作就是路由,把不同的路徑交給不同的程序(函數、腳本…)處理。
4.產生Response。
HTTP Response其實與Request很類似,也是區分表頭和正文,多幾個關機字表示當前相應狀態、響應內容類型之類的東西。正文裏就是妳需要的回應,可能是個json,可能是個靜態文件,也可能是別的什麽東西。從路由處得到響應的內容,然後按照HTTP Response的要求包起來。最後經過之前的Socket服務返回給用戶。
基本上簡單的HTTP Server就這麽點東西,可以說並不復雜。但是考慮到各種額外功能,例如權限、ip過濾、並發/異步、request轉發、websocket、https…其實還是蠻麻煩的。