轉載請附原文鏈接:http://blog.fandong.me/2017/08/21/iOS-SwiftVaporWeb26/
前言
之前一直有做Java后臺開發(fā)的興趣慕匠,可是想到要看好多的Java教程隧土,作為一個iOS開發(fā)者息罗,我放棄了坛怪,
后來從朋友韓云智VL那里知道了這個框架,竟是用Swift寫的浊吏,不得不說斯辰,它燃起了我的興趣。
Vapor是一個基于Swift開發(fā)的服務端框架帖旨,可以工作于iOS箕昭,Mac OS,Ubuntu解阅。
為了配合Swift部署到服務器,我把ECS的服務器系統(tǒng)改為Ubuntu16.04落竹。
客戶端
HTTP
提供的客戶端用于向遠程服務器發(fā)出請求,我們來看看一個簡單的外發(fā)請求.
快速開始
讓我們進入一個簡單的HTTP請求,這是一個使用VaporDroplet
的基礎GET
請求.
let query = "..."
let res = try drop.client.get("https://api.spotify.com/v1/search?type=artist&q=\(query)")
print(res)
清理
上面的URL可讀性較差,讓我們用query參數(shù)來使它簡化一點
let res = try drop.client.get("https://api.spotify.com/v1/search", query: [
"type": "artist",
"q": query
])
繼續(xù)
除了GET
請求外,Vapor客戶端還支持大多數(shù)常用的HTTP功能,GET
,POST
,PUT
,PATCH
,DELETE
請求頭
你還可以向請求中添加額外的請求頭信息
try drop.client.get("http://some-endpoint/json", headers: [
"API-Key": "vapor123"
])
自定義請求
你可以要求客戶端對你創(chuàng)建的任意Request
響應,如果您需要將JSON或者URLEncoded數(shù)據(jù)添加到請求中,這很有用.
let req = Request(method: .post, uri: "http://some-endpoint")
req.formURLEncoded = Node(node: [
"email": "mymail@vapor.codes"
])
try drop.client.respond(to: req)
可用的
到目前為止,我們一直在使用drop.client
它就是一個客戶端工廠
,這為每個請求創(chuàng)建一個新的客戶端和TCP連接
為了獲得更好的性能,你可以創(chuàng)建一個可以重復使用的單個客戶端.
let pokemonClient = try drop.client.makeClient(
scheme: "http",
host: "pokeapi.co",
securityLayer: .none
)
for i in 0...1 {
let response = try pokemonClient.get("/api/v2/pokemon/", query: [
"limit": 20,
"offset": i
])
print("response: \(response)")
}
筆記
使用.makeClient
進行初始化后使用的客戶端無法連接到不同的服務器(代理服務器是個例外)
代理
drop.client
可被配置為默認使用代理
Config/client.json
{
"proxy": {
"hostname": "google.com",
"port": 80,
"securityLayer": "none"
}
}
對于以上的例子,發(fā)送到drop.client.get(...)
的請求都將通過google.com代理.