Dropwizard is an open source Java framework for the rapid development of REST APIs. Dropwizard é um tipo de ecossistema que contém todas as dependências (como Jersey, jackson ou jetty) agrupadas em um único pacote ou pode ser adicionado como módulo separado. Se você não estiver usando o dropwizard, você vai acabar coletando todas as dependências você mesmo e isso muitas vezes resulta em problemas de carregamento de classes devido ao desajustamento de versões entre várias bibliotecas java. Dropwizard resolve este problema para você, e reúne bibliotecas estáveis e maduras em um simples pacote leve que permite que você se concentre em fazer as coisas. Vamos aprender a usar o dropwizard para construir APIs de descanso-passo a passo.
Table of ContentsLibraries included inside dropwizardSetup dropwizard with mavenCreate REST Application ClassCreate REST Resource and APIsBuild Resource RepresentationsRequest ValidationVerify REST APIs
- bibliotecas incluídas dentro do dropwizard
- Setup dropwizard with maven
- Create REST Application Class
- Create REST Resource and APIs
- Build Resource Representations
- solicitar validação
- verificar APIs de repouso
- Build application uber jar file
- Start application in jetty server
- Access URI http://localhost:8080/employees
- URI de acessohttp://localhost:8080/employees/1
- enviado HTTP PUT http://localhost:8080/employees / 1 com dados de pedido inválidos
- Sent HTTP PUT http://localhost:8080/employees / 1 with correct data
bibliotecas incluídas dentro do dropwizard
uma vez que você inclui dropwizard em seu projeto, você recebe as seguintes bibliotecas adicionadas ao seu classpath.
- Jersey-For building RESTful web applications.
- Jetty-Dropwizard usa a biblioteca HTTP Jetty para incorporar um Servidor HTTP diretamente no seu projeto.
- Jackson-para objeto de conversão de JSON. Ele permite exportar seus modelos de domínio diretamente com anotações JAXB.
- goiaba-estruturas de dados imutáveis altamente otimizadas para acelerar o desenvolvimento.
- Logback e SLF4j-para registro flexível e performante.
- hibernar validador – um quadro declarativo fácil para validar a entrada do utilizador e gerar mensagens de erro úteis e amigáveis com i18n.
- Apache HTTPClient-para a interação de baixo e alto nível com outros serviços web.JDBI-a maneira mais direta de usar um banco de dados relacional com Java.
- Liquidbase-para manter o esquema da sua base de dados em cheque ao longo do seu ciclo de desenvolvimento e lançamento.
- sistemas FreeMarker – templating.Bigode-Sistemas de templação simples para aplicações mais viradas para o utilizador.
- Joda Time-biblioteca muito completa e sà para manusear datas e horas.
Setup dropwizard with maven
nosso projeto será baseado no arquétipo-quickstart maven-archetype. Você pode criar o projeto usando a linha de comandos ou usar o eclipse para criar um projeto simples Maven java.
mvn archetype:generate -DgroupId=com.howtodoinjava.demo -DartifactId=DropWizardExample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
projeto gerado terá pom.xml
arquivo também. Adicionar dependência dropwizard aqui.
isto irá baixar todos os ficheiros jar e adicioná-los ao seu classpath. Para adicionar suporte de compilação e pacote ao nosso projeto, vamos usar o plugin maven-shade, que nos permitirá empacotar o nosso projeto completamente, juntamente com suas dependências, em um único arquivo jar autônomo (JAR Fat/Uber) que pode ser distribuído e executado como está.
pom completo.o ficheiro xml parece-se com isto.
Create REST Application Class
Application class is entry point for any dropwizard application. É necessário alargar a classe io.dropwizard.Application
e aplicar os métodos initialize(Bootstrap<Configuration>)
e run(Configuration, Environment)
. Eles preparam o ambiente de execução da aplicação.
para invocar o método de execução, terá de ter o método public static void main(String args) {}
, que será invocado pelo comando java -jar
quando executar a aplicação como ficheiro jar.
para executar o ficheiro JAR, adicionamos o argumento do servidor ao comando que inicia o Servidor HTTP embutido (Jetty) para executar o nosso serviço.
java -jar target\DropWizardExample.jar server
Dropwizard embedded Jetty server will try to bind to ports 8080 and 8081 by default. A porta 8080 é usada pelo servidor para atender pedidos HTTP de entrada para a aplicação, enquanto o 8081 é usado pela interface de administração do Dropwizard.
também importamos as classes necessárias Logger
e LoggerFactory
para construir uma instância de Logger que poderíamos usar para nossas necessidades de registro.
Create REST Resource and APIs
Now when you have added Application bootstrap class, you can now add REST resources containing REST APIs. Neste exemplo, eu criei e aplicativo de gestão de funcionários-então ele tem APIs para criar/atualizar / excluir registros de funcionários. Esta classe será responsável por lidar com solicitações HTTP e gerar respostas JSON.Como temos Jersey no nosso classpath, vamos usá-la para construir APIs de descanso.
para imitar o DB, eu criei classe EmployeeDB
que armazena registros de funcionários e atualizações na memória.
Build Resource Representations
Representation is what holds the data and serialized into JSON. É modelo para uma aplicação repousante. Ao usar Jersey com Jackson, tudo que você precisa para construir uma representação de recursos é – um simples POJO seguindo os padrões java bean. Jackson constrói a cadeia de JSON recursivamente de acordo com os métodos getter de cada classe e seu tipo de retorno.
java.util.List
será convertida para uma matriz JSON. se necessário em alguns casos, você pode evitar que uma propriedade faça parte da representação JSON adicionando a anotação @JsonIgnore
ao seu getter.
solicitar validação
ao aceitar pedidos PUT
e POST
, terá de validar o conteúdo de entidade apresentado pelo utilizador no organismo de pedido. Dropwizard usa hibernate validator para este propósito. A adição de validação requer passos seguintes.
verificar APIs de repouso
agora, quando criamos e adicionamos validações para APIs de repouso, vamos testar isto.
Build application uber jar file
> mvn clean package
Start application in jetty server
> java -jar target\DropWizardExample-0.0.1-SNAPSHOT.jar server
Access URI http://localhost:8080/employees
This will return employees collection and related response headers.
URI de acessohttp://localhost:8080/employees/1
isto vai devolver o registo do empregado com o id 1.
enviado HTTP PUT http://localhost:8080/employees / 1 com dados de pedido inválidos
irá receber mensagens de validação.
Sent HTTP PUT http://localhost:8080/employees / 1 with correct data
Employee record will be updated successfully.
In same way, you can test other APIs and scenarios.