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
}
}