Swift服務(wù)端框架Vapor實(shí)現(xiàn)GET請(qǐng)求

前提條件:請(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ù)大小不能超過(guò)2KB。
  • GET請(qǐng)求安全性低,因?yàn)槭敲魑膫鬏敗?/li>

創(chuàng)建項(xiàng)目

#1.打開(kāi)終端
#2.創(chuàng)建項(xiàng)目
vapor new HelloVapor --branch=beta

這個(gè)過(guò)程會(huì)花費(fèi)十來(lái)分鐘的樣子。最終成功后結(jié)果如圖:


image.png
#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)行完畢后,如圖所示:


image.png

此時(shí),我們打開(kāi)瀏覽器,瀏覽:
http://localhost:8080/hello

點(diǎn)擊后如圖所示:


image.png
#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)打開(kāi)項(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é)果依次如下所示:


image.png

image.png

image.png

image.png

image.png

image.png

錯(cuò)誤:


image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,978評(píng)論 25 709
  • 因?yàn)橐Y(jié)局swift3.0中引用snapKit的問(wèn)題,看到一篇介紹Xcode8,swift3變化的文章,覺(jué)得很詳細(xì)...
    uniapp閱讀 4,859評(píng)論 0 12
  • 每次出門(mén),都能長(zhǎng)進(jìn)一點(diǎn),大腦從來(lái)都是不愿意停止思考,做了,想了,總會(huì)得到些什么。 悠悠八天過(guò)得很快,就像媽媽開(kāi)心地...
    周洋_圖樂(lè)園閱讀 390評(píng)論 1 3
  • 肺與脾的關(guān)系,主要表現(xiàn)在氣的生成、津液的輸布待著兩個(gè)方面。 肺吸人之清氣和脾化生的水谷精氣,是...
    鬼谷子之天易閱讀 599評(píng)論 0 0

友情鏈接更多精彩內(nèi)容