請(qǐng)求和響應(yīng)模型
如何發(fā)請(qǐng)求
- 瀏覽器的地址欄
- 用curl命令
幫你發(fā)請(qǐng)求的工具叫做 用戶代理User Agent
如何做響應(yīng)
- Node.js有一個(gè)http模塊可以做到
- 代碼見(jiàn)下
var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]
if(!port){
console.log('請(qǐng)指定端口號(hào)好不啦?\nnode server.js 8888 這樣不會(huì)嗎?')
process.exit(1)
}
var server = http.createServer(function(request, response){
var parsedUrl = url.parse(request.url, true)
var pathWithQuery = request.url
var queryString = ''
if(pathWithQuery.indexOf('?') >= 0){ queryString = pathWithQuery.substring(pathWithQuery.indexOf('?')) }
var path = parsedUrl.pathname
var query = parsedUrl.query
var method = request.method
/******** 從這里開(kāi)始看,上面不要看 ************/
console.log('有個(gè)傻子發(fā)請(qǐng)求過(guò)來(lái)啦它浅!路徑(帶查詢參數(shù))為:' + pathWithQuery)
if(path === '/'){
response.statusCode = 200
response.setHeader('Content-Type', 'text/html;charset=utf-8')
response.write(`二哈`)
response.end()
} else if(path === '/x'){
response.statusCode = 200
response.setHeader('Content-Type', 'text/css;charset=utf-8')
response.write(`body{color: red;}`)
response.end()
} else {
response.statusCode = 404
response.setHeader('Content-Type', 'text/html;charset=utf-8')
response.write(`你輸入的路徑不存在對(duì)應(yīng)的內(nèi)容`)
response.end()
}
/******** 代碼結(jié)束聋袋,下面不要看 ************/
})
server.listen(port)
console.log('監(jiān)聽(tīng) ' + port + ' 成功\n請(qǐng)用在空中轉(zhuǎn)體720度然后用電飯煲打開(kāi) http://localhost:' + port)
這些代碼是服務(wù)器代碼
path是不帶查詢參數(shù)的路徑/x
query是查詢參數(shù)的對(duì)象形式{a:'1'}
queryString是查詢參數(shù)的字符串形式?a=1
pathWithQuery是帶查詢參數(shù)的路徑筋粗,一般不用
request是請(qǐng)求對(duì)象
response是響應(yīng)對(duì)象
``這種字符串里可以使用回車
''這種字符串里使用\n
每次收到請(qǐng)求都會(huì)把中間內(nèi)容執(zhí)行
使用if else判斷路徑速勇,并返回響應(yīng)
若是已知路徑一律返回200
若是位置路徑一律返回404
Content-Type表示內(nèi)容的【類型/語(yǔ)法】
response.write()可以填寫返回內(nèi)容
response.end()表示響應(yīng)可以發(fā)給用戶
URL的后綴沒(méi)有用,不能/y.css就代表是CSS內(nèi)容
Content-Type才是決定文件類型的關(guān)鍵