Como usar Rest Client em Quarkus

Tudo que está nesse projeto pode ser encontrado no repositório GitHub.

Para criar o projeto utilizamos o próprio site de bootstrap do quarkus para criar o seu pode acessar aqui.

Dependências adicionadas

As dependências que vamos usar podem ser encontradas diretamente pelo bootstrap. São as seguintes:

  • JSON-B Utilizada para fazer json bind automático
  • REST Cliente Utilizada para criar chamada rest

Para quem usa maven as dependencias vão ficar assim:

     <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-resteasy-jsonb</artifactId>
     </dependency>
     <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-rest-client</artifactId>
     </dependency>

e em gradle:

io.quarkus:quarkus-rest-client
io.quarkus:quarkus-resteasy-jsonb

Background do projeto

Para facilitar a utilização do projeto vamos usar uma api já pronta que retorna usuários aleatórios, ela pode ser encontrada no site randomuser.me

Para ele vamos utilizar uma chamada no endpoint https://randomuser.me/api/

Quando fazemos um get nesse endpoint recebemos um usuário aleatório no formato de json como o a seguir:

{ "results": [ { "gender": "male", "name": { "title": "mr", "first": "brad", "last": "gibson" }, "location": { "street": "9278 new road", "city": "kilcoole", "state": "waterford", "postcode": "93027", "coordinates": { "latitude": "20.9267", "longitude": "-7.9310" }, "timezone": { "offset": "-3:30", "description": "Newfoundland" } }, "email": "brad.gibson@example.com", "login": { "uuid": "155e77ee-ba6d-486f-95ce-0e0c0fb4b919", "username": "silverswan131", "password": "firewall", "salt": "TQA1Gz7x", "md5": "dc523cb313b63dfe5be2140b0c05b3bc", "sha1": "7a4aa07d1bedcc6bcf4b7f8856643492c191540d", "sha256": "74364e96174afa7d17ee52dd2c9c7a4651fe1254f471a78bda0190135dcd3480" }, "dob": { "date": "1993-07-20T09:44:18.674Z", "age": 26 }, "registered": { "date": "2002-05-21T10:59:49.966Z", "age": 17 }, "phone": "011-962-7516", "cell": "081-454-0666", "id": { "name": "PPS", "value": "0390511T" }, "picture": { "large": "https://randomuser.me/api/portraits/men/75.jpg", "medium": "https://randomuser.me/api/portraits/med/men/75.jpg", "thumbnail": "https://randomuser.me/api/portraits/thumb/men/75.jpg" }, "nat": "IE" } ], "info": { "seed": "fea8be3e64777240", "results": 1, "page": 1, "version": "1.3" } } 

Caso chamemos o mesmo endpoint mas dessa vez com um Query Param results=N ele traz N resultados pra gente.

Modelagem

Os dados vão ser modelados da seguinte forma:

### Names.java
A classe name é utilizada para criar a parte name do usuário, que tem os campos String title, first, last

 package org.luizleiteoliveira.entity;

 public class Names {

     private String title;
     private String first;
     private String last;

     public String getTitle() {
         return title;
     }

     public void setTitle(String title) {
         this.title = title;
     }

     public String getFirst() {
         return first;
     }

     public void setFirst(String first) {
         this.first = first;
     }

     public String getLast() {
         return last;
     }

     public void setLast(String last) {
         this.last = last;
     }
 }

User.java

Para modelar o usuário a api vem com diversos campos, vamos utilizar além do objeto name , email, gender,
phone, cell, nat:

package org.luizleiteoliveira.entity;

public class User {

    private String email;
    private String gender;
    private Names name;
    private String phone;
    private String cell;
    private String nat;

    public User() {}

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Names getName() {
        return name;
    }

    public void setName(Names name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getCell() {
        return cell;
    }

    public void setCell(String cell) {
        this.cell = cell;
    }

    public String getNat() {
        return nat;
    }

    public void setNat(String nat) {
        this.nat = nat;
    }
}

Results.java

Pra finalizar a classe que faz ficam todos os nossos resultados, pra nossa modelagem só vai conter uma lista de usuários.

package org.luizleiteoliveira.entity;

import java.util.List;

public class Results {

    private List<User> results;
    public Results() {}

    public List<User> getResults() {
        return results;
    }

    public void setResults(List<User> results) {
        this.results = results;
    }
}

Conclusão

Eu fiquei bem feliz com o modo que foi implementado, achei extremamente simples e intuitivo. Usar as mesmas notações para registrar o controller você utilizar pra executar a chamada facilita muito.

Quer acompanhar um pouco mais? Me siga nas plataformas.

GitHub: luizleite-hotmart

Twitter: luizleite_

Twitch: coffee_and_code

Linkedin: luizleiteoliveira

dev.to: luizleite_

原文链接:Como usar Rest Client em Quarkus

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容