Estruturas mais fáceis para implementar os Serviços da Web Java REST [fechados
-
18-09-2019 - |
Pergunta
Quais são as melhores estruturas para a implementação de estruturas de repouso do cliente e do servidor em Java? Eu tenho lutado um pouco para encontrar uma solução fácil de usar.
Atualizar: Jersey e Restlet parecem boas opções. Provavelmente usaremos RestLet, mas experimentaremos ambos.
Solução
RestLet Parece que deve fornecer o que você está procurando:
- Suporte para cliente e servidor (em uma API relativamente simétrica)
- Vinculação inteligente de URL
- Entendimento do tipo MIME (dados os tipos de MIME aceitos, ele solicitará seus recursos para a representação deles nesse tipo)
- Suporta anotações Jax-Rs (assim como Jersey)
Outras dicas
Jersey é realmente fácil para ambos. Para escrever serviços da web, você usa anotações:
@Path("/helloworld")
public class HelloWorldResource {
// The Java method will process HTTP GET requests
@GET
// The Java method will produce content identified by the MIME Media
// type "text/plain"
@Produces("text/plain")
public String helloWorld() {
// Return some cliched textual content
return "Hello World";
}
}
Para um cliente:
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/helloworld");
String s = webResource.get(String.class);
System.out.println(s); // prints Hello World
Dar uma olhada em DropWizard também.
O RestLet também suporta anotações em sua versão 2.0, tanto no cliente quanto no servidor. A API JAX-RS também é suportada como uma extensão.
Aqui está um exemplo simples para o lado do servidor:
public class HelloWorldResource extends ServerResource {
@Get
public String represent() {
return "hello, world";
}
}
No lado do cliente:
// Outputting the content of a Web page
new ClientResource("http://www.restlet.org").get().write(System.out);
Para mais documentação, Verifique esta página.
Há o novo Jboss ' Restasy biblioteca. Parece estar sob rápido desenvolvimento desde o seu lançamento inicial. Não faço ideia se é bom; Está na minha lista de 'conferir'.
Você pode dar uma olhada na implementação do CXF JAX-RS. Para uma lista completa de seus recursos, verifique o Site CXF para Jax-Rs. A comunidade por trás do projeto parece ser muito ativa (julho de 2013). Uma indicação disso é o número de mensagens por dia no Listas de correspondência CXF.
Não o usei pessoalmente, mas algumas equipes com as quais trabalho estão usando o Spring 3 MVC. Descanse na primavera 3: @mvc Parece uma boa visão geral do blog. Os recursos RESTful incluem "Modelos de URI", "Negociação de Conteúdo", "Conversão do Método HTTP", "Suporte ETAG" e muito mais.
Editar: Além disso, veja esta pergunta: Alguém pode recomendar uma estrutura da Web Java baseada no MVC e suporta REST?
Eu posso recomendar o Apache Wink, uma nova estrutura ainda no modo de incubação, mas muito madura e de alta qualidade.
http://incubator.apache.org/wink/
Ele implementa a especificação JAX-RS, possui uma estrutura de clientes e servidores para o desenvolvimento do REST. Apache está por trás deste projeto - isso é sempre um bom sinal (e uma boa licença :-))
O que eu mais amo nessa estrutura é a integração intuitiva com a primavera, é muito útil se você deseja que sua estrutura seja facilmente configurada e estendida.
ATUALIZAÇÃO: O Xydra inquieto não é mais mantido +++ se você estiver usando o Goolge AppEngine antes de liberar um recurso "Reserve Instância", você pode considerar Xydra inquieto que tem poucos recursos, mas carrega rapidamente.