Implementación de la negociación de contenido en base a parámetros de solicitud

Las aplicaciones REST (Representational State Transfer) pueden devolver diferentes representaciones de recursos. Puede utilizar la negociación de contenido en base a patrones de solicitud para determinar el formato de contenido que se utiliza para intercambiar datos entre servidores y clientes.

Acerca de esta tarea

Los recursos pueden representar datos en formatos distintos. Puede implementar la negociación de contenido basada en URL, parámetros de solicitudes o cabeceras HTTP. En esta tarea se describe la negociación del contenido en base a los parámetros de solicitud para recibir diferentes formatos de datos.

Puede utilizar parámetros de solicitud, como los parámetros de consulta, para indicar el tipo de contenido del servidor que se debe devolver. Por ejemplo, si el valor del parámetro es xml, el servidor se espera que devuelva contenido XML. De forma similar, si el valor del parámetro es json, el servidor se espera que devuelva contenido JSON.

El uso de parámetros de solicitud reduce el número de URL, frente a la implementación de la negociación de contenido en función de los patrones de URL. Sin embargo, este método requiere el uso y el análisis de un parámetro en la implementación del método de recursos.

Procedimiento

Utilice un parámetro para determinar el tipo de contenido para los datos que devuelve el servidor.

En el ejemplo siguiente, los formatos de datos XML y JSON son aceptables, y el formato se especifica mediante un parámetro de consulta. De forma predeterminada, se devuelve XML. Una solicitud para /resources/resource?format=json provoca que el servidor devuelva el formato JSON; por ejemplo:

@Path("/resources")
public class Resource
{
    @Path("{resourceID}")
    @GET
    public Response getResource(@PathParam("resourceID") String resourceID, @QueryParam("format") String format)
    {
        if (format == null || "xml".equals(format)) {
            return Response.ok(/* entity in XML format */).type(MediaType.APPLICATION_XML).build();
        } else if ("json".equals(format)) {
            return Response.ok(/* entity in JSON format */).type(MediaType.APPLICATION_JSON).build();
        }
        return Response.notAcceptable(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_JSON_TYPE).add().build()).build();
    }
}

Resultados

Ha implementado la negociación de contenido utilizando los parámetros para determinar los formatos para recursos que representan los datos.


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_contentnegotiation_reqparm
File name: twbs_jaxrs_contentnegotiation_reqparm.html