Добавить ссылку на службу к веб-сервису ASP.NET API-интерфейс


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

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

3 17

3 ответа:

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

У нас нет никакого стандартного механизма для этого. REST - это построение систем, которые все клиенты должны развиваться независимо от сервера. HTTP определяет единый интерфейс GET, PUT, POST, DELETE и т. д. Таким образом, нет необходимости в описании метода. По обеим причинам нет эквивалента REST WSDL, или я бы сказал, нет эквивалента, который действительно получил импульс среди сообщества REST (т. е. есть WADL).

Точка сопряжения в службах REST на самом деле находится вокруг медиа тип / формат тела. Для этого мы поддерживаем строго типизированный механизм. В Web API мы отправляем HttpClient (HttpClient on Nuget), который позволяет вам взять тип CLR и преобразовать его в некоторое представление. Из коробки он поддерживает XML и JSON.

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

Для создания самого типа существует также несколько вариантов.

  1. создайте его вручную
  2. Используйте "вставить как Xml" автоматический инструмент и использовать API веб-страницу помощи копирования/вставки.

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