powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Web API. Как открыть интерфейсы?
25 сообщений из 51, страница 1 из 3
Web API. Как открыть интерфейсы?
    #39992384
Фотография Renziglov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Как клиент узнает какие интерфейсы доступны у Web API? В WCF для этого есть специальный MEF-endpoint. Там создается прокси на клиенте и все нтерфейсы клиенту сразу же становятся известны.
В какой-нибудь Web API REST нет никаких прокси. Как задисковерить чего этот зйпиай экспонирует?
Спасибо.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #39992448
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov,

на данный момент есть OpenAPI спецификация, изначально известная как Swagger, для описания и взаимодействия с API
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #39992623
Фотография Renziglov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Я вполне подозреваю, что что-то есть. Но если это что-то просто заставляет разработчика API составлять некий документ, а получателя читать этот документ, чтоб получить список интерфейсов, то мои подозрения оправдываются. Если вы работали с этим, можете сказать как именно открываются интерфейсы? КоротЕнько, вот как я сказал про MEX и mexHttpBinding в случае с WCF.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #39992662
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov
Я вполне подозреваю, что что-то есть. Но если это что-то просто заставляет разработчика API составлять некий документ

Нет, моглы бы и потратить пять минут на чтение хотя бы Википедии.

OpenAPI (Swagger) - это целый набор инструментов, позволяющий как сгенерировать документацию по вашему коду, так и библиотеку-клиента к вашему API.
Эта библиотека оформляется как NuGet-пакет, и кому надо, тот ставит себе и пользуется.

А вот пример сгенерированной API-документации для разработчика: https://petstore.swagger.io/
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #39992665
Фотография Renziglov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Именно в Википедии и потратил. А вам спасибо за линк, он все прояснил. Т.е. создается документация и пользователь ее читает. Умно.
На одной из микрософтовских конференций мне была выдана маечка с таким принтом:

.NOT .NET
ASP.NET Forms Blazor
WCF gRPC
JavaScript C# 8.0

Надо смелее осваивать gRPC, товарищи!
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #39992681
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov
Надо смелее осваивать gRPC, товарищи!

Зачем?
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #39992802
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
быстро, маленький размер сообщения, контракт на обращение к эндпоинту- все за что любят WCF.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #39992900
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov
Именно в Википедии и потратил.

И до второго параграфа даже не дочитали что-ли?

ЦитируюOpenAPI рассматривается как универсальный интерфейс для пользователей (клиентов) по взаимодействию с сервисами (серверами).
Если спроектирована спецификация для некоторого сервиса, то на её основании можно генерировать исходный код для библиотек клиентских приложений, текстовую документацию для пользователей, варианты тестирования и др .
Для этих действий имеется большой набор инструментов для различных языков программирования и платформИ ссылки на Getting Started и Tools and Integrations.

Вообщем если вы хотите аналог "прокси на клиенте и все нтерфейсы клиенту сразу же становятся известны",
то повторюсь, что не проблема этот самый аналог сгенерировать и отдать вашему пользователю.
Или он самостоятельно может это сделать под нужный ему язык и платформу.

А может конечно и документацию читать и писать код ручками.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40013922
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
за что любят WCF.

За угрёбищный SOAP?
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014104
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
За угрёбищный SOAP?

Ээ.. а что, при работе с WCF кто-то работает непосредственно с SOAP? Мне доводилось сталкиваться со случаями, когда аппликухи на джаве при работе с веб-сервисами костылили SOAP-разметку, но в дотнете, где это всё хозяйство глубоко под капотом??
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014131
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
А может конечно и документацию читать и писать код ручками.

Ну, когда из какого-нибудь развесистого API нужно всего пару методов, то, может быть, проще и руками написать :))
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014137
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Дмитрий Мух
А может конечно и документацию читать и писать код ручками.

Ну, когда из какого-нибудь развесистого API нужно всего пару методов, то, может быть, проще и руками написать :))

Написать что? Клиента, или вызов этих пары методов у готового клиента? :)
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014181
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
vb_sub
за что любят WCF.

За угрёбищный SOAP?

Можно его любить например за быстрый net tcp.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014491
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Клиента, или вызов этих пары методов у готового клиента? :)

Возможно я к вечеру туплю, но зачем писать или генерировать какие-то вызовы для готового клиента, если он уже готовый?
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014503
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
skyANA
Клиента, или вызов этих пары методов у готового клиента? :)

Возможно я к вечеру туплю, но зачем писать или генерировать какие-то вызовы для готового клиента, если он уже готовый?

Я не понял к чему ты написал "может быть, проще и руками написать". Проще, чем что?
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014561
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Проще, чем что?

Чем настраивать конфигурацию кодогенерилки.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014643
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

А чё там её настраивать? OpenAPI это как бы есть конфиг, изначально на языке YAML, что как бы намекает :)
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014645
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Некоторые идут дальше, пишут сначала спеку на OpenAPI, чтобы нагенерить как клиента, так и начальный код сервера :)
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014683
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
fkthat,

А чё там её настраивать? OpenAPI это как бы есть конфиг, изначально на языке YAML, что как бы намекает :)

Да это все понятно. На нашем проекте у меня вообще все в процесс билда встроено (NSwag) еще и дополнительным параметром "-p:blablabla" можно заставить его свежую копию OpenAPI Doc с сервера перед этим вытянуть. Но это наш собственный API, где под сотню методов, который нужен нам целиком, и который периодически обновляется.

Если же мне просто нужен какой-то один метод со стороннего сервиса, да и из него всего пару полей, то зачем мне все это шапито разворачивать, это как на самосвале за булкой хлеба в магазин поехать, быстрее руками какой-нибудь GET написать и забыть.

Да и какой там YAML, кстати? Там же JSON. Или ты о чем-то другом?
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014684
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Некоторые идут дальше, пишут сначала спеку на OpenAPI

Это как-то вообще бесчеловечно. Разве что, если какими-нибудь тулзами её рисовать. До сих пор с содроганием вспоминаю свой небольшой опыт разработки FE под ExtJS, в которой кода считай что вообще нет, потому что почти все приложение это куча каких-то километровых абсолютно наркоманских конфигов.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014685
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Да это все понятно. На нашем проекте у меня вообще все в процесс билда встроено (NSwag)


Немного оффтопа, но мы от NSwag даже не просто ушли, а убежали со всех ног, ибо косяк на косяке, полный игнор в коммьюнити, не решаемые годами проблемы.

fkthat
Если же мне просто нужен какой-то один метод со стороннего сервиса, да и из него всего пару полей, то зачем мне все это шапито разворачивать, это как на самосвале за булкой хлеба в магазин поехать, быстрее руками какой-нибудь GET написать и забыть.


Я всё же предпочту сгенить клиента и пользовать столько методов, сколько мне надо, так как человеческий фактор никто не отменял и человеческое право на ошибку. Автоматизация даже с диким оверхедом призвана как раз нивелировать подобные проблемы.

fkthat
Да и какой там YAML, кстати? Там же JSON. Или ты о чем-то другом?


Ну изначально Swagger на YAML-е основан, JSON-YAML обратно конвертируемы. Далее объясню зачем это всё.

fkthat
Это как-то вообще бесчеловечно. Разве что, если какими-нибудь тулзами её рисовать. До сих пор с содроганием вспоминаю свой небольшой опыт разработки FE под ExtJS, в которой кода считай что вообще нет, потому что почти все приложение это куча каких-то километровых абсолютно наркоманских конфигов.


Ну вот как раз YAML затем, чтобы писать спеку ручками.

Просто ты мыслишь исключительно из опыта 100% бекенд based API. Типа сначала пишем код сервиса, ток потом уже генерируем API спецификацию. А все остальные в то время курят бамбук, ждут когда же ты там разродишься своими спеками, ага :)

Если хотя бы на часок ты примеришь на себя роль постановщика, который должен спеку разрабатывать, прорабатывать и согласовывать, ты поймёшь, что писать в формате OpenAPI -- наверное лучшее, что на сегодняшний момент есть. При чём это универсально подойдёт для разных платформ, команд. Минимальными усилиями.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014716
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Немного оффтопа, но мы от NSwag даже не просто ушли, а убежали со всех ног, ибо косяк на косяке, полный игнор в коммьюнити, не решаемые годами проблемы.

Да ладно там.

Swashbuckle: 3.5k stars, 863 forks, used by 5000+, 126 contributors
NSwag: 3.9k stars, 766 forks, used by 1330, 170 contributors

NSwag просто помоложе и он не просто OpenAPI, а еще и куча тулзов для той же кодогенерации в комплекте - из-за этого и был в свое время выбран.

hVostt
Просто ты мыслишь исключительно из опыта 100% бекенд based API. Типа сначала пишем код сервиса, ток потом уже генерируем API спецификацию. А все остальные в то время курят бамбук, ждут когда же ты там разродишься своими спеками, ага :)

Для меня, как для разработчика, код контроллера это такая же спека, как все то же самое описанное на yaml/json. История показывает, что все эти подходы "понарисуем квадратиков со стрелочками, а чудо-инструмент нам сам по ним код сгенерирует" это полный фейл. Лет десять назад резюме разработчика без упоминания UML это было вообще не резюме. Ну и где сейчас этот UML - впиши его в резюме и тебя засмеют :)) Единственное применение кодогенерации сервера что я сразу так вижу, это когда тебе надо реализовать какой-то чужой API точно в соответствие с чужой спецификацией (например web-hooks для стороннего сервиса)
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014725
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и всё же
В большой сервисной или микросервисной архитектуре, когда есть куча независимых команд, разрабатывающая кучу независимых сервисов, именно спецификация API будет точкой отсчета и будет разрабатываться раньше кода.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014875
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
и всё же
В большой сервисной или микросервисной архитектуре, когда есть куча независимых команд, разрабатывающая кучу независимых сервисов, именно спецификация API будет точкой отсчета и будет разрабатываться раньше кода.

Так необязательно сразу реализовывать. Напиши типы данных, которые actions принимают/отдают, пропиши роуты, и поставь везде всеми любимый
Код: c#
1.
throw new NotImplementedExceptions();


Я выше писал - интерфейс контроллеров и акций это ровно такая же спецификация API как и OpenAPI Doc, просто в другом формате, причем генерировать одно из другого можно и в ту и в другую сторону. Тут, наверное, просто вопрос, с чем команде удобней работать - описывать API на C# или на YAML/JSON. Точно так же как в древние времена COM - ты мог сначала написать кодом интерфейсы, а потом из них сгенерировать IDL/TypeLib, а мог наоборот - написать сначала IDL, а из него сгенерировать интерфейсы - и то и другое абсолютно равнозначно.
...
Рейтинг: 0 / 0
Web API. Как открыть интерфейсы?
    #40014940
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Тут, наверное, просто вопрос, с чем команде удобней работать - описывать API на C# или на YAML/JSON.

Или на XML. Доводилось мне сталкиваться с требованием, что перед созданием сервиса (WCF) сначала пишется его WSDL.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Web API. Как открыть интерфейсы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]