with headers example contenttype accept json rest request-headers

headers - rest json post



API REST: use el encabezado HTTP "Aceptar: aplicaciĆ³n/json" (3)

Cuando hago una solicitud, recibo una respuesta en XML, pero lo que necesito es JSON. En el documento se indica para obtener un JSON a cambio: Utilice el encabezado HTTP Accept: application/json .

¿Dónde encuentro el encabezado HTTP para poner Accept: application/json dentro?

Supongo que no se supone que esté dentro de la solicitud de URL, que se parece a:

http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00


Aquí hay un sitio útil para probar sus encabezados . Puedes ver los encabezados de tu navegador y también utilizar cURL para reflejar los encabezados que envíes.

Por ejemplo, puede validar la negociación de contenido de esta manera.

Este encabezado de Accept prefiere texto sin formato, por lo que se devuelve en ese formato:

$ curl -H "Accept: application/json;q=0.9,text/plain" http://gethttp.info/Accept application/json;q=0.9,text/plain

Mientras que éste prefiere JSON y lo devuelve en ese formato:

$ curl -H "Accept: application/json,text/*;q=0.99" http://gethttp.info/Accept { "Accept": "application/json,text/*;q=0.99" }


Bueno, Curl podría ser una mejor opción para la representación de json, pero en ese caso sería difícil entender la estructura de json porque está en la línea de comando. Si desea obtener su json en el navegador, simplemente elimine todas las anotaciones XML como:

@XmlRootElement(name="person") @XmlAccessorType(XmlAccessType.NONE) @XmlAttribute @XmlElement

de su clase de modelo y luego ejecute la misma url, que ha usado para la representación xml.

Asegúrese de tener la dependencia de jacson-databind en su pom.xml

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1</version> </dependency>


Has acertado, los encabezados HTTP no forman parte de la URL.

Y cuando escriba una URL en el navegador, la solicitud se emitirá con encabezados estándar. De todos modos, las Apis de REST no deben consumirse escribiendo el punto final en la barra de direcciones de un navegador.

El escenario más común es que su servidor consume una API REST de terceros.

Para hacerlo, el código del lado del servidor forja una solicitud GET (/ PUT / POST / DELETE) adecuada que apunta a un punto final determinado (URL) (cuando sea necesario, como su caso) algunos encabezados y finalmente (tal vez) enviando algunos datos (como normalmente ocurre en una solicitud POST por ejemplo).

El código para falsificar la solicitud, enviarlo y finalmente obtener la respuesta depende del idioma del servidor.

Si desea probar una API REST, puede usar la herramienta de curl desde la línea de comandos.

curl realiza una solicitud y envía la respuesta a la salida estándar (a menos que se indique lo contrario).

En su caso, la solicitud de prueba se emitirá así:

$curl -H "Accept: application/json" ''http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00''

La directiva H o --header establece un encabezado y su valor.