Как вы используете Restful APIs? - PullRequest
0 голосов
/ 01 ноября 2010

Когда вы используете Restful API других веб-приложений, обычно вы используете библиотеку-оболочку или Restful API напрямую с HTTP-клиентом?

Ответы [ 2 ]

2 голосов
/ 01 ноября 2010

Это сложный вопрос, в первую очередь потому, что в нынешнем состоянии отрасли правильный ответ очень непрактичен.

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

Сказав это, нет ничего плохого в том, что есть вспомогательные классы, которые анализируют медиа-типы для генерации строго типизированных версий.Примерно так:

var response = HttpClient.Get(linkTofoo);
if (response.ContentType =='application/foo') {
   var strongFoo = FooHelper.Parse(fooResponse);
   HandleFoo(strongFoo);
}

К сожалению, подавляющее большинство apis, утверждающих, что они RESTful, таковыми не являются.Они не уважают ограничения на самоописание и гипермедиа и поэтому очень затрудняют их взаимодействие с RESTful.Они требуют от вас создания URI на стороне клиента и предварительного знания типов, которые будут возвращаться с конечных точек.

Печальный факт заключается в том, что со многими API у вас нет иного выбора, кроме как использовать предоставленную клиентскую прокси-библиотеку.Этого не должно быть.

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

e.g.

var foo = remotelibrary.GetFoo(233);
var bar = foo.bar; // If this causes an HTTP request
var barcopy2 = foo.bar // and this doesn't because it already has a reference to bar 
                       // I would be very leary of using this library
1 голос
/ 01 ноября 2010

В долгосрочной перспективе почти наверняка будет лучше использовать библиотеку.Это позволяет вам абстрагироваться от спокойствия дизайна и игнорировать весь HTTP-бизнес.

Если не существует какой-либо библиотеки для какого-либо API, который вы используете, вам следует написать свой собственный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...