Vapor文件學習廿八: HTTP -Response
在接收的請求後通常要返回Response
作為響應。我們做外部請求時也要接收響應物件。
public let status: Status
public var headers: [HeaderKey: String]
public var body: Body
public var data: Content
Status
http請求狀態,比如.ok == 200
表示請求成功。
Headers
與請求相關的請求頭資訊。如果準備對外部請求做出響應,你可以新增自己的keys。
let contentType = response.headers["Content-Type"]
或者
let response = response ...
response.headers["Content-Type"] = "application/json"
response.headers["Authorization"] = ... my auth token
Extending Headers
使用擴充套件優化程式碼:
extension HTTP.KeyAccessible where Key == HeaderKey, Value == String {
var customKey: String? {
get {
return self["Custom-Key"]
}
set {
self["Custom-Key"] = newValue
}
}
}
"Custom-Key"
已經包含在程式碼中,可以直接獲取:
let customKey = response.headers.customKey
// or
let request = ...
response.headers.customKey = "my custom value"
Body
承載Response的主體內容。主要通過兩種方式在初始化時進行設定。
BodyRepresentable
可以轉換為位元組的例項:
let response = Response(status: .ok, body: "some string")
上面的String
會自動轉換為body。你自己的型別也可以這樣使用。
BytesDirectory
直接使用Bytes array:
let response = Response(status: .ok, body: .data(myArrayOfBytes))
Chunked
傳送一個HTTP.Response
的程式碼塊,我們可以通過傳遞閉包傳送body部分。
let response = Response(status: .ok) { chunker in
for name in ["joe", "pam", "cheryl"] {
sleep(1)
try chunker.send(name)
}
try chunker.close()
}
Note:在
chunk
銷燬之前一定要呼叫close()
方法。
Content
從響應中獲取content和從Request中獲取一樣:
let pokemonResponse = try drop.client.get("http://pokeapi.co/api/v2/pokemon/")
let names = pokemonResponse.data["results", "name"]?.array
JSON
直接使用json資料”
let json = response.json["hello"]
Key Paths
使用方法同Request
中的Key Paths部分。
相關文章
- Sanic Response HTTP 響應HTTP
- Swift web服務框架Vapor 學習資源整理SwiftWeb框架Vapor
- swoft 學習筆記之 response 篇筆記
- HTTP學習HTTP
- python Flask框架學習——Response響應PythonFlask框架
- Laravel核心程式碼學習 -- 響應 ResponseLaravel
- 近期學習文件
- JS學習文件JS
- java基礎學習:JavaWeb之request和responseJavaWeb
- 學習HTTP——HTTPSHTTP
- http學習筆記HTTP筆記
- HTTP簡明學習HTTP
- 聊聊 VaporVapor
- 【ASM學習】ASM文件ASM
- http http headers參考文件HTTPHeader
- HTTP 學習瞭解(三)HTTP
- HTTP 學習瞭解四HTTP
- HTTP 學習瞭解 (一)HTTP
- HTTP 學習瞭解(二)HTTP
- 關於HTTP的學習HTTP
- Http協議學習(轉)HTTP協議
- 自我學習HTTP協議HTTP協議
- Http failure response 0 Unknown error 錯誤分析HTTPAIError
- Docker學習 ,超全文件!Docker
- 前端學習文件寶典前端
- 《webpack文件》學習筆記Web筆記
- Mqtt 學習文件【轉載】MQQT
- #HTTP協議學習# (十一)理解HTTP冪等性HTTP協議
- HTTP&response響應&驗證碼&servletcontextHTTPServletContext
- 老樹開新花,再看 HTTP Response Splitting 攻擊HTTP
- 《http權威指南》學習感想HTTP
- Web之http學習筆記WebHTTP筆記
- 前端學習-Dart官方文件學習-003-模式匹配前端Dart模式
- 【文件學習】tensorboardX——summary writerORB
- 官方文件學習:data guard broker
- vapor fluent[sqlite] relationsVaporSQLite
- django rest framework個人學習筆記(四)————Tutorial2.Request and ResponseDjangoRESTFramework筆記
- 20160322 javaweb 學習筆記--response 重定向JavaWeb筆記