Vapor 3 Routing

Проблема маршрутизации

Я использую последнюю версию Vapor и пытаюсь изучить ее.

Я пытаюсь создать маршрут в контроллере. Я зарегистрировал контроллер в файле rout.swift. Теперь мне нужно правильно зарегистрировать маршруты в файле контроллера.

Я расширил класс с помощью RouteCollection и пишу маршрут для пост-запроса. Я намерен передать объект JSON и иметь класс, который расширен от Content, чтобы упростить создание объекта из данных JSON.

Затем запрос на публикацию отправляет данные в базу данных FoundationDB. У меня есть чтение и запись, когда я жестко пишу код, но теперь мне нужно использовать запросы для отправки данных.

Это то, что у меня есть.

func boot(router: Router) throws {
        router.post(  ) { // need to send JSON data in the request to the createCountry function


    }

func createCountry( ) { // I need to put the JSON data into a class called Country which has three string fields; country_name, Timezone and default_location. This will then be written to the foundationDB


    }

Как отформатировать router.post() и как отформатировать заглушку функции createCountry()? Я набираю в req: Request и различные -> безрезультатно. Я явно делаю что-то не так на фундаментальном уровне.

1 ответ

Решение

Я не знаю, понимаю ли я, но чтобы зарегистрировать маршрут и затем обработать запрос, вы должны написать что-то вроде этого:

class CountryController: RouteCollection {
    // Register routes for country
    func boot(router: Router) throws {
        let group = router.grouped("api", "country")
        group.post(Country.self, at: "new", use: newCountryHandler)
    }
}

private extension CountryController {

    func newCountryHandler(_ request: Request, newCountry: Country) throws -> Future<HTTPResponseStatus> {

        // Handle your new Country object
    }

}
Другие вопросы по тегам