Po przeczytaniu poprzednich postów wiesz już jak zwrócić w Pistache odpowiedź w formacie JSON. Po wprowadzeniu poprawek omówionych w tym wpisie będziesz w stanie powiadomić aplikacje klienckie o tym odpowiedź z Twoich webserwisów że to właśnie JSON.

Nagłówki Content-Type w Pistache

Nagłówek Content-Type to jeden z najczęściej wykorzystywanych nagłówków HTTP. Informuje on aplikacje klienckie o tym jak zinterpretować odpowiedź z serwera HTTP, czy to jest tekst, czy obrazek, czy wideo, itp.

Domyślnie odpowiedź z Pistache wysłana jest bez tego nagłówka.

Jak sprawdzić czy odpowiedź zawiera nagłówek Content-Type?

Najprościej sprawdzić to poleceniem narzędziem curl:

curl -I -X GET http://localhost:9080/drugs/drug_one

W odpowiedzi możemy zobaczyć taki tekst, wskazujący że nagłówek jest przekazywany:

HTTP/1.1 200 OK
Content-Type: application/json

Możesz także posłużyć się dowolną przeglądarką i przejrzeć odpowiedź, np przy pomocy wbudowanych w nią narzędzi dla programistów.

Ustawianie Content-Type w Pistache

Dodanie nagłówka Content-Type w Pistache jest proste. Należy przed wysłaniem odpowiedzi (metodą send) wywołać na obiekcie odpowiedzi metodę pobierającą obiekt nagłówków, a następnie na tym obiekcie metodą dodającą kolejny, jak w przykładzie:

response.headers().add<Net::Http::Header::ContentType>(MIME(Application, Json));

Wykorzystywane tu jest makro MIME pozwalające w skróconej formie określić typ zwracanej odpowiedzi. Istnieją także inne, bardziej rozbudowane, metody wskazywania typów MIME, których opis można znaleźć w dokumentacji frameworka Pistache.

Pokazane w tym wpisie przykłady są zaczerpnięte z aplikacji DDS.