Добавить ссылку на службу в службу ASP.NET Web API - PullRequest
18 голосов
/ 13 июля 2011

У меня есть решение MVC, которое содержит несколько маршрутов для сервисов Web API.В некоторых ситуациях я буду вызывать их из JavaScript с простым HTTP get.В других я хочу вызывать их из некоторого кода .NET, возможно, из другого приложения MVC.

Есть ли способ добавить ссылку на службу к этим конечным точкам Web API и использовать инструментальные средства для создания прокси-клиента и типов CLRкак это было бы сделать с типичным сервисом WCF?Я знаю, что здесь нет SOAP, но я читал, что это возможно, но не как.

Ответы [ 3 ]

18 голосов
/ 13 июля 2011

Нет, это служба ОТДЫХА. Служба REST не предоставляет метаданные для создания прокси по ссылке на службу (кроме служб данных WCF, которые имеют какую-то особую форму метаданных). Используйте класс HttpClient Web-API для вызова службы.

8 голосов
/ 02 сентября 2011

У нас нет стандартного механизма для этого.REST - это создание систем, которые позволяют клиентам развиваться независимо от сервера.HTTP определяет единый интерфейс GET, PUT, POST, DELETE и т. Д., Поэтому нет необходимости в описании метода.По обеим причинам нет REST WSDL-эквивалента, или я должен сказать, что нет эквивалента, который действительно получил импульс среди сообщества REST (т. Е. Есть WADL).тип / формат тела.Для этого мы поддерживаем строго типизированный механизм.В Web API мы поставляем HttpClient (HttpClient на Nuget), который позволяет вам брать тип CLR и преобразовывать его в некоторое представление.Из коробки он поддерживает XML и JSON.

Таким образом, вы можете создать тип CLR и поделиться им с клиентами, а затем использовать HttpClient на клиенте.

Чтобы создать сам тип, есть также несколько вариантов.

  1. Создайте его вручную
  2. Используйте инструмент «Вставить как XML» и используйте автоматическую справку веб-API.функция страницы для копирования / вставки.
1 голос
/ 13 июля 2011

Не напрямую, а из нескольких примеров, которые я видел, использование Web Api предполагает настройку ServiceContract. Похоже, что если вы добавите второй интерфейс контракта на обслуживание с обычными атрибутами OperationContract и DataContract по мере необходимости, вы сможете создать конечную точку со стандартной привязкой WCF по вашему выбору и соответствующую конечную точку MEX. Служба будет реализовывать оба интерфейса, так что Справочник по службам может получить документ WSDL из стандартной конечной точки WCF.

...