Я новичок в платформе API. Я думаю, что это здорово, но я не могу найти пример того, как создать пользовательскую конечную точку, которая не основана на какой-либо сущности. Есть много примеров, основанных на сущности, и обычно они все о CRUD. Но как насчет пользовательских операций?
Мне нужно создать пользовательский поиск по базе данных с некоторыми пользовательскими параметрами, которые не связаны ни с одним объектом. Например, я хочу получить POST-запрос примерно так:
{
"from": "Paris",
"to": "Berlin"
}
Эти данные не сохраняются в БД, и у меня нет сущности для них. После того, как я получу эти данные, должно появиться много бизнес-логики, включая запросы к базе данных через множество таблиц базы данных, а также получение данных из внешних источников. Затем, после завершения бизнес-логики, я хочу вернуть обратный результат, который также является нестандартным и не связан с какой-либо сущностью. Например,
{
"flights": [/* a lot of json data*/],
"airports": [/* a lot of json data*/],
"cities": [/* a lot of json data*/],
.......
}
Итак, я думаю, что я не единственный, кто делает что-то подобное. Но я действительно не могу найти решение или лучшие практики, как это сделать. В документации я нашел как минимум три подхода и не могу реализовать ни один из них. Лучшее, я думаю, самое подходящее для меня это использование пользовательских операций и контроллеров. Но документация говорит, что это не рекомендуется. Также я думаю, что я должен использовать DTO для запроса и ответа, но для этого подхода я не уверен, что смогу их использовать.
Второй, который я обнаружил, - это использование объектов передачи данных, но для этого подхода требуется сущность. Согласно документации, я должен использовать DTO и DataTransformers для преобразования DTO в сущность. Но мне не нужна сущность, мне не нужно сохранять ее в БД. Я хочу просто обработать полученный DTO самостоятельно.
Третий, я полагаю, использует провайдеров данных, но я не уверен, что он подходит для моих требований.
Итак, главноеВопрос заключается в том, какой подход или передовой опыт следует использовать для реализации пользовательских операций, не связанных с какими-либо объектами. И будет здорово использовать DTO для запросов и ответов.