Обычно вы создаете специальную структуру, которая соответствует Content
, чтобы получить данные JSON и вернуть данные JSON. Для вашего примера это будет выглядеть примерно так:
struct TeamPlayerContent: Content {
let team: Team
let players: [Player]
}
Затем, когда вы получите запрос, вы можете декодировать тело и получить экземпляр структуры:
router.post(TeamPlayerContent.self, at: "teams") { request, body in
// Save the team and player models
}
И когда вы получаете данные Team
и Player
из базы данных, вы можете создать экземпляр структуры и вернуть его по маршруту:
router.get("teams", Team.parameter) ( request in
return try request.paramaters.next(Team.self).flatMap { team in
let players = try Player.query(on: request).filter(\.teamID == team.requireID()).all()
return players.and(team)
}.map { data in
return TeamPlayerContent(team: data.1, players: data.0)
}
}