vapor學(xué)習(xí)教程-Collection

Route Collections

路由集合允許將多個(gè)路由和路由組組織在不同的文件或模塊中。

Example


以下是v1API部分的路由集合示例:

import Vapor
import HTTP
import Routing

class V1Collection: RouteCollection {
    typealias Wrapped = HTTP.Responder
    func build<B: RouteBuilder where B.Value == Wrapped>(_ builder: B) {
        let v1 = builder.grouped("v1")
        let users = v1.grouped("users")
        let articles = v1.grouped("articles")

        users.get { request in
            return "Requested all users."
        }

        articles.get(Article.self) { request, article in
            return "Requested \(article.name)"
        }
    }
}

這個(gè)類可以放在任何文件中,可以將它添加到vapor或甚至添加到另一個(gè)路由組中。

let v1 = V1Collection()
drop.collection(v1)

然后Dropletbuild(_:)方法傳遞給路由集合,并添加各種路由。

Breakdown


我們逐一分解路由集合,來(lái)了解它們到底生發(fā)了什么。

typealias Wrapped = HTTP.Responder

這限制了路由集合只添加HTTP響應(yīng)。雖然底層路由器能夠路由任何類型,但Vapor只針對(duì)HTTP響應(yīng)者。如果在vapor要使用這個(gè)路由集合,首先它的包裹類型需要匹配。

func build<B: RouteBuilder where B.Value == Wrapped>(_ builder: B) {

這個(gè)方法接收一個(gè)路由構(gòu)造器并通過(guò)接收Wrapped來(lái)驗(yàn)證路由構(gòu)造器,如上一行所定義,HTTP.Responders。vaporDropletVapor創(chuàng)建的任何路由組都是只接受HTTP響應(yīng)的RouteBuilders。

let v1 = builder.grouped("v1")

從上面代碼看出,照??梢酝ㄟ^(guò)builder來(lái)創(chuàng)建路由。builder:B同樣像Droplet或路由組一樣工作。任何在Droplet和路由組上工作的方法都可以在這個(gè)builder上工作。

Empty Initializable


如果有空的init方法,可以將EmptyInitializable添加到路由集合。這允許通過(guò)其類型名稱添加路線集合。

class V1Collection: RouteCollection, EmptyInitializable {
    init() { }
    ...

現(xiàn)在我們可以添加到集合而不初始化它。

drop.collection(V1Collection.self)

繼續(xù)學(xué)習(xí)vapor學(xué)習(xí)教程-目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,971評(píng)論 6 342
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,252評(píng)論 4 61
  • 上篇文章帶大家基本了解了一下開(kāi)始一個(gè) Vapor 項(xiàng)目的流程,本篇緊接著來(lái)說(shuō)說(shuō)在所有 Web 框架中都最關(guān)鍵的 “...
    isaced閱讀 1,256評(píng)論 0 10
  • 致前任: 我親愛(ài)的前任,我的周漂亮先生。 不知道這樣稱呼你對(duì)不對(duì)。 和你在一起以后,我給你起過(guò)很多很多亂七八糟昵稱...
    啊B沒(méi)有魔法棒閱讀 784評(píng)論 0 3