前提條件:請(qǐng)參考我的文章再次使用Swift服務(wù)端框架Vapor3
什么是GET請(qǐng)求
- GET請(qǐng)求是HTTP協(xié)議中的一個(gè)方法檬寂。
- GET從服務(wù)器上獲取數(shù)據(jù)哄芜,也就是所謂的查揣炕,僅僅是獲取苞笨,并不會(huì)修改數(shù)據(jù)族阅。
- GET交互方式是冪等的篓跛,即多次對(duì)同一個(gè)URL的請(qǐng)求,返回的數(shù)據(jù)是相同的坦刀。
- GET請(qǐng)求的參數(shù)會(huì)附加在URL之后愧沟,以?分割URL和傳輸數(shù)據(jù)鲤遥,多個(gè)參數(shù)用&連接沐寺。
- GET請(qǐng)求URL編碼格式采用的是ASCII編碼,而不是Unicode盖奈,所有非ASCII字符都要編碼之后再傳輸混坞。
- GET請(qǐng)求傳輸數(shù)據(jù)大小不能超過2KB。
- GET請(qǐng)求安全性低钢坦,因?yàn)槭敲魑膫鬏敗?/li>
創(chuàng)建項(xiàng)目
#1.打開終端
#2.創(chuàng)建項(xiàng)目
vapor new HelloVapor --branch=beta
這個(gè)過程會(huì)花費(fèi)十來分鐘的樣子究孕。最終成功后結(jié)果如圖:
#3.進(jìn)入項(xiàng)目
cd HelloVapor
#4.構(gòu)建項(xiàng)目,這一步也會(huì)花費(fèi)比較久時(shí)間场钉,建議使用VPN蚊俺。
vapor build
#5.運(yùn)行項(xiàng)目
vapor run
運(yùn)行完畢后,如圖所示:
此時(shí)逛万,我們打開瀏覽器泳猬,瀏覽:
http://localhost:8080/hello
點(diǎn)擊后如圖所示:
#6.關(guān)閉vapor的運(yùn)行,使用組合鍵:Control+C即可
#7.創(chuàng)建出xcode能運(yùn)行的項(xiàng)目
vapor xcode -y
運(yùn)行完畢后宇植,Xcode會(huì)自動(dòng)打開項(xiàng)目得封。
實(shí)現(xiàn)GET請(qǐng)求
進(jìn)入項(xiàng)目中,Sources/App/Routes目錄中指郁,找到Routes.swift文件忙上。刪除掉setupRoutes()方法中的內(nèi)容,添加代碼闲坎,最終Routes.swift內(nèi)容如下:
import Vapor
extension Droplet {
func setupRoutes() throws {
/*
路由關(guān)閉的情況:
1.響應(yīng)了請(qǐng)求
2.拋出異常
*/
//最基本的GET請(qǐng)求
get("welcom") { request in
return "Hello"
}
//URL中包含了/
get("foo", "bar", "baz") { request in
return "You request /foo/bar/baz"
}
//動(dòng)態(tài)路由到某個(gè)HTTP方法
add(.get, "hh") { request in
return "Dynamically router"
}
//重新定向
get("baidu") { request in
return Response(redirect: "http://www.baidu.com")
}
//返回json數(shù)據(jù)
get("json") { request in
var json = JSON()
try json.set("number", 123)
try json.set("text", "unicorns")
try json.set("bool", false)
return json
}
//模糊匹配路徑
get("anything", "*") { request in
return "Matches anything anything/anything route"
}
//404錯(cuò)誤
get("404") { request in
throw Abort(.notFound)
}
//錯(cuò)誤的請(qǐng)求
get("error") { request in
throw Abort(.badRequest)
}
}
}
我們依次在瀏覽器中輸入如下鏈接可以看到結(jié)果:
http://localhost:8080/welcom
http://localhost:8080/foo/bar/baz
http://localhost:8080/hh
http://localhost:8080/baidu
http://localhost:8080/json
http://localhost:8080/anything/a/b/c/d
http://localhost:8080/404
http://localhost:8080/error
結(jié)果依次如下所示:
錯(cuò)誤: