使用titbit開發Web後端服務 請求上下文

2021-10-12 18:39:33 字數 1880 閱讀 1479

框架在接收的請求引數,只有乙個,被稱為請求上下文,就是乙個封裝了各種請求資料的物件。通過這樣的設計,把http/1.1 和 http/2協議的一些差異以及node.js版本演進帶來的一些不相容做了處理,出於設計和效能上的考慮,對於http2模組,封裝請求物件是stream,而不是http模組的incomingmessage和serverresponse(封裝物件是request和response)。

請求上下文屬性和基本描述屬性

描述version

協議版本,字串型別,為』1.1』 或 『2』。

major

協議主要版本號,1、2、3分別表示http/1.1 http/2 http/3(目前還沒有3)。

maxbody

支援的最大請求體位元組數,數字型別,預設為初始化時,傳遞的選項maxbody的值,可以在中介軟體中根據請求自動設定。

method

請求型別,get post等http請求型別,大寫字母的字串。

host

服務的主機名,就是request.headers[『host』]的值。

protocol

協議字串,不帶冒號,『https』、『http』、『http2』。

path

具體請求的路徑。

routepath

實際執行請求的路由字串。

query

url傳遞的引數。

param

路由引數。

files

上傳檔案儲存的資訊。

body

body請求體的資料,具體格式需要看content-type,一般為字串或者物件,也可能是buffer。

port

客戶端請求的埠號。

ip客戶端請求的ip位址,是套接字的位址,如果使用了**伺服器,需要檢測x-real-ip或是x-forwarded-for訊息頭獲取真正的ip。

headers

指向request.headers。

isupload

是否為上傳檔案請求,此時就是檢測訊息頭content-type是否為multipart/form-data格式。

name

路由名稱,預設為空字串。

group

路由分組,預設為空字串。

reply

http/1.1協議,指向response,http/2 指向stream。

request

http/1.1 就是http模組request事件的引數incomingmessage物件,http/2 指向stream物件。

response

http/1.1 是http模組的request事件的第二個引數response物件。http/2沒有此屬性。

box預設為空物件,可以新增任何屬性值,用來動態傳遞給下一層元件需要使用的資訊。

service

res乙個物件包括encoding、body屬性,用來暫存返回資料的編碼和具體資料。

helper

指向helper模組,提供了一些助手函式,具體參考wiki。

send

函式,用來設定res.body的資料並支援第二個引數作為狀態碼,預設狀態碼為200。

movefile

函式,用來移動上傳的檔案到指定路徑。

status

函式,設定狀態碼。

setheader

函式,設定訊息頭。

getfile

函式,獲取上傳的檔案資訊,其實就是讀取files屬性的資訊。

注意:send函式只是設定ctx.res.body屬性的值,在最後才會返回資料。和直接進行ctx.res.body賦值沒有區別,只是因為函式呼叫如果出錯會更快發現問題,而設定屬性值寫錯了就是新增了乙個新的屬性,不會報錯但是請求不會返回正確的資料。

使用titbit開發Web後端服務 配置選項

在初始化ttibit時,支援很多選項,完整選項如下 設定伺服器超時,毫秒單位,在具體的請求中,可以再設定請求的超時。timeout 18000 debug false 忽略路徑末尾的 ignoreslash true 啟用請求限制 uselimit false 最大連線數,0表示不限制 maxcon...

使用titbit開發Web後端服務02 路由和引數

http的起始行給出了請求型別,也被稱為 請求方法。目前的請求方法 get post put delete options trace head patch 1 use strict 23 const titbit require titibit 45 titbit 810 c.res.body s...

後端開發工程開發Web頁面框架

layui是一款採用自身模組規範編寫的前端 ui 框架,遵循原生 html css js 的書寫與組織形式,門檻極低,拿來即用。其外在極簡,卻又不失飽滿的內在,體積輕盈,元件豐盈,從核心 到 api 的每一處細節都經過精心雕琢,非常適合介面的快速開發。收費 1600永久授權 官網位址為 jquery...