/ / Client интерпретира данните, върнати от Web Api-XML, json, http, asp.net-web-api

Клиентът интерпретира данните, върнати от Web Api-XML, json, http, asp.net-web-api

Понастоящем имам услуга web api, която взема параметър, за да определи дали трябва да върна xml или json.

Също така имам услуга, която конкретно не диктува какви данни трябва да се връщат (тъй като клиент като Jquery може да определи типа на връщането на съдържание).

Тъй като XML е скъпо да се върне от гледна точка на честотната лента (ще ми струва повече пари от моя облачен оператор), възможно ли е да се ограничи клиента до JSON само по някакъв начин?

Аз направих фигурите и XML е 9 пъти по-дебел от JSON - и 9 пъти по-скъпо!

Всички други идеи за това как да се сведе до минимум хостинг разходи за публичен API, оценени много !?

Благодаря

Отговори:

1 за отговор № 1

На първо място, можете да използвате функцията за свързване (съдържание negotiation) на REST въз основа на заглавката Accept за да определите очаквания формат на съдържанието на отговора вместо на параметър. Ако искате съдържанието на JSON да бъде върнато, просто го добавете в заявката си:

Accept: "application/json"

Трудно е да се отговори на въпроса ви ;-) Можете ли да дадете повече съвети на това ниво?

Ако имате ръка в приложния програмен интерфейс (API) за уеб, можем да разгледаме такива неща:

  • Блокиране на съдържанието на преговорите (свързване), Ако клиентът посочи, че очаква XML съдържание, можете да изпратите отново HTTP кода на състоянието 415 (Неподдържан тип носител).
  • Игнорирайте желания формат в случай на XML, Просто поддържате само формата JSON ... Винаги връщате този формат.

Можете също така да приложите оптимизации от страна на сървъра:

  • Съдържание на компресия преди изпращане, Тя може просто да се състои в минимизиране или дори компресиране на zip (но изисква клиентът да декомпресира съдържанието). Смазването често се поддържа от преобразуватели на боб / формати (например Джаксън).
  • Кеширане от страна на сървъра, Според това, което прави приложението ви, можете да добавите кеш, за да не изисквате винаги данните си.

Надявам се, Тиери


0 за отговор № 2

Мога да направя следното:

 return Content(HttpStatusCode.OK, returnList, Configuration.Formatters.JsonFormatter);

Кое работи, но би предизвикало грешка при синтактичен анализ, ако клиентът зададе типа съдържание на xml.

Неговото решение, но е идеално?