Поддерживает ли ServiceStack обратную маршрутизацию?

После REST желательно, чтобы API был доступен для обнаружения и должен быть взаимосвязан.

Поддерживает ли ServiceStack какую-либо обратную маршрутизацию? Я ищу что-то вроде Url.RouteLink в ASP MVC.

6
nl ja de

1 ответы

Здесь есть несколько смешанных понятий.

  1. В попытке выполнить REST вы хотите внедрить URI в свои ответы.
  2. Как лучше всего добиться внедрения URI в ваши ответы. Вы предположили, что механизм «обратной маршрутизации» - это то, как это должно быть сделано.

Стиль REST против сильной типизации

Я хочу здесь прямо указать, что это не означает другого. С одной стороны, вы хотите следовать архитектуре REST (с помощью любой системы, которую вы создаете), а с другой стороны, вы хотите следовать правилам типичной типизации типизированного API, в этом случае для генерации внешних URI ваш API. Это несколько контрастные стили, так как REST не продвигает типизированные API, предпочитая вместо этого привязываться к внешней поверхности URI ваших API-интерфейсов и не типично типизированных Content-Types. В то время как строго типизированный язык будет рекомендовать привязку к типизированному API, например. например, API-интерфейсы с завершающим концом . ServiceStack поддерживает готовые приложения.

Создание строго типизированных URI в ServiceStack

В ServiceStack нет концепции ASP.NET MVC «Обратная схема маршрутизации», но вы можете повторно использовать те же функции, что { public int? Age { get; set; } } var relativeUrl = new SearchReqstars { Age = 20 }.ToUrl("GET"); var absoluteUrl = EndpointHost.Config.WebHostUrl.CombineWith(relativeUrl); relativeUrl.Print(); //= /reqstars/aged/20 absoluteUrl.Print(); //= http://www.myhost.com/reqstars/aged/20

Или, если вы просто хотите Абсолютный URL-адрес, вы можете использовать метод расширения ToAbsoluteUri :

var absoluteUrl = new SearchReqstars { Age = 20 }.ToAbsoluteUri();
Спасибо за метод ToUrl (). Вы полностью правы в своем 2. пункте. Но я смущен. Поэтому вы не рекомендуете вставлять Uris в свои DTO-ответы? Я просто хочу убедиться, что клиенту не нужно жестко кодировать URI.
добавлено автор Kugel, источник
Интересная точка зрения. Таким образом, альтернативой было бы просто документировать URI.
добавлено автор Kugel, источник
ИМО вы должны встраивать URI в свои ответы, когда есть явное преимущество в этом. Я бы проанализировал нагрузку на клиентов между использованием URI и типизированным API, чтобы помочь вам определить это. Чтобы оставаться ценностно ориентированным, я принимаю только практики, о которых я знаю, какие преимущества (так что я могу максимизировать его эффективность). Бывают случаи, когда встроенные URI предоставляют ценность (то есть документы с горячей ссылкой), но чистая система REST/HATEOS/HAL - это совсем другое зверь для создания службы квази-REST - , который, как я полагаю, не дает значения .
добавлено автор mythz, источник
Правильно, вы можете документировать свой API. Автоматически созданные страницы /metadata в основном делают это автоматически для вас, и вы можете дополнительно аннотировать ваши DTO с помощью [Api] и [ApiMember] , чтобы предоставить дополнительный контент на соответствующих страницах метаданных. Другим вариантом является предоставление привязок на языке с типизированным API (SS поддерживает это с помощью C# /. NET Service Clients), поэтому потребителям не нужно вручную анализировать типы ответов, создавать URL-адреса или беспокоиться об использовании HTTP + Serialization libs для использования для вызова ваши услуги. IMO Native SDK обеспечивает максимальную нагрузку для конечных пользователей.
добавлено автор mythz, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot