Это сложный вопрос, в первую очередь потому, что в нынешнем состоянии отрасли правильный ответ очень непрактичен.
Правильный ответ, на мой взгляд, заключается в том, что вы не должны использовать 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