Я использую ServiceStack для создания моего первого API. В моем сервисе пользователь может вводить новые заказы и получать те, которые он уже выполнил. Каждый заказ имеет очень сложную структуру, состоящую из различных полей и списков объектов (некоторые из которых состоят из 10 или 100 наименований, другие состоят из тысяч записей, поэтому требуется подкачка страниц).
Вопросявляется: что и сколько данных для отправки клиенту.
Гипотетически, когда клиент запрашивает список последних выполненных заказов, я должен предоставить список заказов с несколькими полями.
Когда клиент вместо этого запрашивает деталь заказа, я мог бы дать ему больше информации.
В мире REST я видел 2 метода:
[просмотр] параметр
/ orders? View = list
/ orders? View = detail
, который может быть«list | detail», который предоставляет более краткую или более подробную версию запрошенного объекта.
[раскрыть] параметр
/ orders? expand = customer
/ orders? Expand = customer, address, phone, address
, что позволяет указывать, какие поля извлекать
Таким образом, запрашивает ли пользователь список объектов или сведения, которые он может указать, сколько информации он хочет получить.
Это решение принято Stripe.com, которое также предоставляет клиент ac #.
https://github.com/stripe/stripe-dotnet/blob/master/src/Stripe.net/Entities/ExpandableField.cs
Как эти решения могут быть реализованы с помощью ServiceStack и, в частности, стот факт, что один и тот же API-интерфейс может использоваться как через http, так и через ServiceStack.Client?
Может ли быть хорошей идеей создать два типа DTO? )
OrderDetailDTO (содержит все поля)