Implementando Negociação de Conteúdo com Base nos Parâmetros de Pedido

Os aplicativos Representational State Transfer (REST) podem retornar representações de recursos diferentes. É possível usar a negociação de conteúdo com base nos parâmetros de pedido para determinar o formato de conteúdo que é usado para trocar dados entre os servidores e clientes.

Sobre Esta Tarefa

Os recursos podem representar dados em formatos diferentes. É possível implementar negociação de conteúdo com base nas URLs, nos parâmetros de pedidos ou nos cabeçalhos HTTP. Essa tarefa descreve a negociação de conteúdo com base nos parâmetros de pedido para receber formatos de dados diferentes.

É possível usar os parâmetros de pedido, como parâmetros de consulta, para indicar o tipo de conteúdo para o servidor retornar. Por exemplo, se o valor de parâmetro for xml, espera-se que o servidor retorne o conteúdo XML. Da mesma forma, se o valor de parâmetro for json, espera-se que o servidor retorne o conteúdo JSON.

O uso dos parâmetros de pedido reduz os números de URLs em relação à implementação da negociação de conteúdo com base nos padrões de URL. Entretanto, esse método requer o uso e a análise de um parâmetro na implementação de método de recurso.

Procedimento

Use um parâmetro para determinar o tipo de conteúdo de dados que o servidor retorna.

No seguinte exemplo, os formatos de dados XML e JSON são aceitáveis e o formato é especificado por um parâmetro de consulta. Por padrão, XML é retornado. Um pedido para /resources/resource?format=json resulta no formato JSON que está sendo retornado a partir do servidor, como por exemplo:

@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

Você implementou a negociação de conteúdo usando parâmetros para determinar os formatos de recursos que representam dados.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_contentnegotiation_reqparm
Nome do arquivo: twbs_jaxrs_contentnegotiation_reqparm.html