Vapor 4 - Создайте маршрут, в котором перечислены все доступные маршруты.

Я хочу создать маршрут на 127.0.0.1:8080/help/routes, в котором перечислены все доступные маршруты (например, страница справки). Как я могу этого добиться? Спасибо


person ExeRhythm    schedule 05.07.2020    source источник


Ответы (3)


Вы можете сделать это, распечатав содержимое app.routes.all

Отредактируйте свой routes.swift файл следующим образом

import Vapor

func routes(_ app: Application) throws {
    app.get("help", "routes") { req -> String in
        app.routes.all.description
    }
}
person imike    schedule 05.07.2020

Вы должны использовать routes.all, как указано в ответе @imike.

Сначала получите массив маршрутов из запроса:

import Vapor

func help(_ req: Request) -> EventLoopFuture<View>  {
    struct Context: Codable {
        var routes: [Route]
    }
    
    let routes: [Route] = req.application.routes.all
    let context = Context(routes: routes)
    return req.view.render("help", context)
}

А затем на странице help.leaf переберите этот маршрут:

<ol>
    #for(route in routes):
        <li>
            #(route.description)
        </li>
    #endfor
</ol>

Маршрут имеет атрибуты для отображения типа метода, пути и прочего.

person Juan Valera    schedule 06.07.2020

Кстати (я знаю, что это не совсем ответ на ваш вопрос, но это может быть полезно знать другим), вы можете получить эту информацию напрямую из пара (Vapor 4):

Перейдите в корневой каталог вашего проекта в терминале:

prompt: vapor run routes
+-----+------------+
| GET | /          |
+-----+------------+
| GET | /hello     |
+-----+------------+
| GET | /about/all |
+-----+------------+
person GeeElle    schedule 02.10.2020
comment
Было бы здорово, если бы вы знали и добавляли в свой ответ прямую команду без vapor tools, она должна начинаться с swift run ... - person imike; 14.10.2020