Articles of descanso

Jersey: Retorna uma lista de strings

Eu tento retornar uma lista de Strings em Jersey como JSON e XML. Eu pensei que isso seria trivial. Minha primeira tentativa foi escrever algo assim @GET @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Path(“/bar”) public List get() { return dao.get(); } e eu esperava uma saída semelhante a esta: [“string1”, …, “stringN] infelizmente eu tenho isso: com.sun.jersey.api.MessageException: A message […]

Como testar um serviço da Web Jersey REST?

Eu escrevi um serviço Web Restful e tenho que testá-lo usando o JUnit4. Eu já escrevi um cliente usando o Jersey Client. Mas quero saber se posso testar meu serviço apenas com junit4. Alguém pode me ajudar com amostra, pelo menos. Meu serviço de descanso tem um método autenticado que usa nome de usuário, senha […]

No modelo de programação da Web do WCF, como escrever um contrato de operação com uma matriz de parâmetros de string de consulta (ou seja, com o mesmo nome)?

Usando o modelo de programação da Web do WCF, é possível especificar um contrato de operação da seguinte forma: [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = “SomeRequest?qs1={qs1}&qs2={qs2}”)] XElement SomeRequest1(string qs1, string qs2); Agora, se tivéssemos que fazer um contrato que aceita uma matriz de parâmetros com o mesmo nome (neste caso qs1 ) contrate assim … […]

Por que o RestTemplate não vincula a representação de resposta a PagedResources?

Estou usando spring-data-rest para expor entidades como resources de paginação (repouso). Tudo funciona bem, mas quando eu solicito dados via RestTemplate , recebo um inútil HATEOAS JSON (que eu não pedi). O JSON parece ser um PagedResources. Eu poderia viver com isso, mas o JSON não é convertido em um object corretamente. Não há content […]

Passando objects complexos em um serviço de descanso do WCF

Eu tenho um contrato de operação que aceita um object complexo e estou chamando a operação através do jQuery. Como faço para passar em um object de tipo complexo como esse usando jQuery. Abaixo está a assinatura da operação: public Resolution CreateNewResolution(Resolution NewResolution); Eu preciso passar em um object de resolução no cliente, mas não […]

REST, HTTP DELETE e parâmetros

Existe algo não REST em fornecer parâmetros para uma solicitação HTTP DELETE? Meu cenário é que estou modelando o “Tem certeza de que deseja excluir isso?” cenário. Em alguns casos, o estado do recurso sugere que a exclusão solicitada pode ser inválida. Você provavelmente pode imaginar alguns cenários em que a confirmação de uma exclusão […]

API REST 404: URI ruim ou recurso ausente?

Estou construindo uma API REST, mas encontrei um problema. Parece que a prática aceita no design de uma API REST é que, se o recurso solicitado não existir, um 404 será retornado. No entanto, para mim, isso adiciona ambiguidade desnecessária. O HTTP 404 é mais tradicionalmente associado a um URI ruim. Então, na verdade, estamos […]

Complemento do Firefox RESTclient – Como inserir parâmetros do POST?

Eu instalei o Firefox RESTclient add-on, mas estou tendo dificuldade em descobrir como passar os parâmetros do POST. Existe um formato específico para fazer isso? Ou existe alguma outra ferramenta que possa ser usada para depurar uma API REST no Mac OS X?

Cabeçalho de Autorização HTTP Personalizado

Eu queria saber se é aceitável colocar dados personalizados em um header de autorização HTTP. Estamos projetando uma API RESTful e podemos precisar de uma maneira de especificar um método personalizado de autorização. Como exemplo, vamos chamá-lo FIRE-TOKEN autenticação FIRE-TOKEN . Algo assim seria válido e permitido de acordo com a especificação: Authorization: FIRE-TOKEN 0PN5J17HBGZHT7JJ3X82:frJIUN8DYpKDtOLCwo//yllqDzg= […]

Qual é o código de resposta REST adequado para uma solicitação válida, mas um dado vazio?

Por exemplo, você executa uma solicitação GET para users/9 mas não há um usuário com o id # 9. Qual é o melhor código de resposta? 200 OK 202 Aceito 204 Nenhum conteúdo 400 pedido incorreto 404 não encontrado