Как я могу найти контракт не-SOAP веб-API? - PullRequest
3 голосов
/ 01 мая 2010

Допустим, у меня есть URI для RESTful или другого API без контракта. Можно ли программно определить его интерфейс? Я использую C # / ASP.net MVC, но не уверен, что это важно.

Я понимаю, что не будет опубликованного контракта, но мне интересно, есть ли что-то, о чем я не думаю (обычно это так).

Ответы [ 2 ]

2 голосов
/ 01 мая 2010

Нет. К сожалению, ты прав. Как правило, нет никаких контрактов с RESTful API, кроме опубликованной документации.

1 голос
/ 01 мая 2010

Если система имеет RESTful, возвращаемое представление предоставит вам ссылки на доступные конечные точки. Эти ссылки легко обнаружить программно. См. этот пример.

HTTP-заголовок типа содержимого должен указывать, какой тип информации возвращается. Предполагая, что ваше клиентское приложение понимает этот тип носителя, у вас должна быть вся информация, необходимая вам для использования службы.

К сожалению, стало обычным делом возвращать универсальные типы мультимедиа, такие как application / xml и application / json, которые ничего не говорят вам о контенте, чем о том, как его анализировать. Если это так, то вашему клиенту нужно будет хранить некоторую дополнительную информацию о том, какой тип данных ожидается от определенного URL. Это неприятная связь, но неизбежное зло, пока люди не начнут по-настоящему понимать «самоописательное» ограничение REST.

...