/ / Klient interpretuje dane zwracane z Web Api - xml, json, http, asp.net-web-api

Klient interpretuje dane zwracane z Web Api - xml, json, http, asp.net-web-api

Aktualnie mam usługę web api, która pobiera parametr określający, czy powinienem zwrócić xml lub json.

Mam również usługę, która specjalnie nie dyktuje danych, które powinny zostać zwrócone (tak jak klient, taki jak Jquery, może określić rodzaj zwracanej treści).

Skoro XML jest drogi, aby powrócić z punktu widzenia przepustowości (będzie kosztować więcej pieniędzy od mojego operatora w chmurze), czy można ograniczyć klienta do JSON tylko w jakikolwiek sposób?

Zrobiłem liczby i XML jest 9 razy grubszy od JSON - i 9 razy więcej niż koszt !!

Wszelkie inne pomysły, jak zminimalizować koszty hostingu dla publicznego interfejsu API, są bardzo cenne !?

Dzięki

Odpowiedzi:

1 dla odpowiedzi № 1

Przede wszystkim można wykorzystać funkcję conneg (negociation treści) REST na podstawie nagłówka Accept określić oczekiwany format zawartości odpowiedzi zamiast parametru. Jeśli chcesz, aby zawartość JSON została zwrócona, po prostu dodaj to w swoim żądaniu:

Accept: "application/json"

Naprawdę trudno jest odpowiedzieć na twoje pytanie ;-). Czy możesz podać więcej wskazówek na tym poziomie?

Jeśli masz rękę na Web API, możemy wziąć pod uwagę takie rzeczy:

  • Zablokuj dyskusję treści (conneg). Jeśli klient określi, że oczekuje zawartości XML, możesz odesłać kod statusu HTTP 415 (Nieobsługiwany typ nośnika).
  • Zignoruj ​​żądany format w przypadku XML. Po prostu obsługujesz tylko format JSON ... Zawsze zwracasz ten format.

Możesz także zaimplementować optymalizacje po stronie serwera:

  • Kompresja zawartości przed odesłaniem. Może po prostu polegać na minimalizowaniu, a nawet kompresji zip (ale wymaga od klienta dekompresji treści). Minifikacja jest często obsługiwana przez konwertery bean / format (na przykład Jackson).
  • Buforowanie po stronie serwera. Zgodnie z tym, co robi twoja aplikacja, możesz dodać pamięć podręczną, aby nie zawsze żądać swojego magazynu danych.

Mam nadzieję, że to pomoże, Thierry


0 dla odpowiedzi nr 2

Mógłbym wykonać następujące czynności:

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

Który działa, ale spowodowałby błąd parsowania, gdyby klient ustawił typ zawartości na xml.

Jest to rozwiązanie, ale czy jest idealne?