Erstellen einer Route mit Sinatra, um nur einen bestimmten Inhaltstyp zu akzeptieren

7

Ich versuche eine Route mit Sinatra zu erstellen, die nur POST mit einem Content-type: application/json ohne Erfolg akzeptiert.

Mein Ansatz ist wie folgt:

%Vor%

Beim Testen mit curl habe ich gesehen, dass :provides => :json die Route so konfiguriert, dass sie mit Content-Type: application/json antwortet.

Das ist richtig, weil ich auch mit einer JSON-Nachricht auf die POST-Anfrage antworten möchte, aber ich brauche wirklich, dass diese Route nur auf POST-Anfragen mit einem Content-Type: application/json antwortet und nicht zB auf andere (zB Content-Type: application/xml ) .

Gibt es in Sinatra eine Möglichkeit, die Route so einzuschränken, dass nur Anfragen mit einem bestimmten Content-Type akzeptiert werden?

    
jfcalvo 22.11.2011, 10:59
quelle

3 Antworten

13

Anfragen enthalten keinen Header "Content-Type", sondern "Accept". Sinatra sollte grundsätzlich nur auf Anfragen mit "Accept" antworten, die "application / json" enthalten. Nur um sicher zu gehen:

%Vor%     
phil pirozhkov 22.11.2011, 13:48
quelle
8

Lesen Sie dies

Ссылка

request.content_type wird es Ihnen sagen

Phil könnte bezüglich RFC recht haben, aber in Wirklichkeit setzen viele Dinge einen Inhaltstyp in eine POST-Anfrage, daher ist es nützlich zu wissen, was es ist.

    
Geoff 23.11.2011 21:26
quelle
0

Ich würde denken, dass es so etwas wie:

ist %Vor%     
Mischa Molhoek 04.02.2014 18:16
quelle