Swashbuckle и полиморфизм GET-запросов...
От: Shmj Ниоткуда  
Дата: 30.09.22 13:01
Оценка:
Для тела можно добавить полиморфизм, описание схемы и выбор oneOf — https://stackoverflow.com/questions/70555022/swagger-swashbuckle-polymorphism-doesnt-work-with-interface-types

А вот как быть если хочется классический GET-запрос?

REST обязывает не использовать глаголы и именовать на основе сущностей. Для примера, хочешь получить предпросмотр некой финансовой сводки по заказу без оформления заказа (без сохранения в системе). Делаем запрос типа GET /order-preview и передаем туда фильтр. Варианта два — либо на основе шаблона либо на основе данных (как то ID количество товаров).

Как бы REST обязывает тут использовать полиморфизм — т.е. два разных типа запроса. Не назвать же OrderPreviewByTemplateId и просто OrderPreview. Так нельзя, ибо получается что мыслим в концепции RPC — нужно как-то подогнать под концепцию.

Но! Поскольку у нас GET-параметры, то нет встроенной схемы, как по ссылке выше, и поддержки оного полиморфизма. Можно просто тупо все параметры в кучу. Но тогда сразу минус — не ясно какие параметры совместимы а какие нет, какие предавать а какие нет для каждого из двух случаев.

Как же натянуть концепцию REST на данный случай? Или, все же, не все в мире гвозди, даже если в руках молоток?
Re: Swashbuckle и полиморфизм GET-запросов...
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.10.22 16:39
Оценка: +3
Здравствуйте, Shmj, Вы писали:

S>Как же натянуть концепцию REST на данный случай? Или, все же, не все в мире гвозди, даже если в руках молоток?

Всё смешалось в кучу.
В чистом REST нет никакой проблемы полиморфизма. Передали URL — вы вернули результат.
С одними параметрами — один результат. С другими — другой.

То, что вы считаете какую-то часть URL "путём", а какую-то — "параметрами" — существует только в вашей голове. REST-у на это всё равно.
Можно любой урл вывернуть наизнанку: GET /order-preview?templateID=42 и GET /templates/42/order-preview совершенно равноправны.

Вас, похоже, интересует другой вопрос — как задокументировать поведение вашего API при помощи swagger.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Swashbuckle и полиморфизм GET-запросов...
От: Ночной Смотрящий Россия  
Дата: 04.10.22 17:48
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Для тела можно добавить полиморфизм, описание схемы и выбор oneOf — https://stackoverflow.com/questions/70555022/swagger-swashbuckle-polymorphism-doesnt-work-with-interface-types

S>А вот как быть если хочется классический GET-запрос?

Вообще не стоит использовать в REST полиморфизм. Ни в теле, ни в GET.

S>Как бы REST обязывает тут использовать полиморфизм


Нет, не обязывает.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.