МЫЛО, ОТДЫХ И НАРОДНОЕ ТВОРЧЕСТВО
Для SOAP необходим документ описания, такой как WSDL, поскольку каждый ресурс может использоваться с различными сообщениями, в протоколе нет определения ограничений на возможные имена / сообщения, которыми вы можете манипулировать ресурсом.
Например, в SOAP ваш веб-сервис, который позволяет клиентам манипулировать пользователем, может представить операцию, которая создает пользователя во многих различных сообщениях, например:
addUser
createUser
insertUser
Конечно, это всего лишь несколько примеров сообщений, потому что я видел много забавных имен методов веб-сервисов. Там действительно творческие люди.
С другой стороны, если вы представляете свою базовую систему с помощью веб-API, действительно уважающего принципы REST, клиенту просто нужно знать, что у вас есть ресурс с именем Users, потому что есть 99% шансов, что вы сможете создать пользователя в этом путь
POST /Users
И это происходит для каждой операции, которую вы хотите представить с помощью SOAP или REST веб-API.
Несмотря на то, что SOAP является протоколом, который ограничивает то, что вы можете или не можете делать, а REST является стилевой архитектурой, которая оставляет много открытых точек для того, как что-то делать. Прилагаются усилия для определения соглашений о том, как выставлять и использовать веб-API REST.
Описание веб-API REST
В области описания веб-API REST я могу привести Swagger . Это не попытка создать WSDL, подобный REST web api, но это хорошая попытка создать открытый стандарт для описания REST web apis.
Swagger - это спецификация и полная реализация инфраструктуры для описания, создания, потребления и визуализации веб-сервисов RESTful.
Я часто использую Swagger и действительно люблю его, главным образом потому, что Swagger UI позволяет создавать приятную живую консоль и документацию для веб-API.
Существует множество реализаций Swagger для большинства языков: C #, Java, Python, Ruby и т. Д.
Если вы используете ASP .NET Web API, есть несколько проектов для автоматической генерации спецификации Swagger, например Swagger.NET
Генерация клиентов для веб-API REST
Поскольку ограничения REST, такие как ограниченный набор глаголов (GET, POST, PUT, DELETE и т. Д.), Не так сложны для создания клиентской библиотеки для REST web api.
Такие проекты, как WebApiProxy, могут легко генерировать клиенты на C # и Javascript.
КОНВЕНЦИИ ДЛЯ ОТДЫХА WEB API
Чтобы облегчить жизнь разработчикам, определите некоторые правила поведения REST нашего веб-интерфейса. Лучшее, что я знаю в этой области, - это очень хорошая книга Apigee - Web Api Design . Электронная книга - это не попытка создать библию или мантру о том, как создать ваш API, а скорее набор соглашений, наблюдаемых в больших веб-API REST, таких как Twitter, Facebook, Linkedin, Google и т. Д.