Início rápido

O funcionamento do java-restify é baseado em proxies de interfaces.

Primeiro, precisamos de uma interface Java para abstrair a API que desejamos consumir. Com o uso de algumas anotações, podemos representar os detalhes das requisições HTTP.

import com.github.ljtfreitas.restify.http.contract.Path;
import com.github.ljtfreitas.restify.http.contract.Get;
import com.github.ljtfreitas.restify.http.contract.Post;
import com.github.ljtfreitas.restify.http.contract.BodyParameter;
import com.github.ljtfreitas.restify.http.contract.PathParameter;

@Path("http://whatever.api.com")
public interface WhateverApi {

  @Path("/resource") @Get
  String getResource();

  @Path("/resource/{id}") @Get
  String getResourceById(@PathParameter("id") String id);

  @Path("/resource") @Post
  String createResource(@BodyParameter String content);
}

Os métodos da interface acima irão se comportar da seguinte maneira:

  • o método getResource irá realizar uma chamada HTTP GET para a URL http://whatever.api.com/resource

  • o método getResourceById irá realizar uma chamada HTTP GET para a URL http://whatever.api.com/resource/{id}, sendo que o placeholder "{id}" será substituído pelo valor do parâmetro anotado com @PathParameter.

  • o método createResource irá realizar uma chamada HTTP POST para a URL http://whatever.api.com/resource, e o valor do parâmetro anotado com @BodyParameter será enviado no corpo da requisição.

Agora, precisamos criar uma instância dessa interface. Para criá-la, usamos o objeto RestifyProxyBuilder.

Também é possível definir a URL base da API no builder, ao invés da anotação @Path no topo da interface.

Por padrão, você pode utilizar apenas String, byte[] ou InputStream como retornos de método, para obter a resposta da requisição. Mas existem diversos plugins que extendem esse comportamento, permitindo utilizar vários objetos diferentes.

No exemplo abaixo, vamos consumir a API do GitHub (que utiliza JSON), deserializando a resposta para um objeto. Podemos utilizar o Jackson para lidar com o JSON, e para usá-lo com o java-restify, precisamos adicionar a dependência java-restify-json-jackson-converter. Com essa dependência no seu classpath, o java-restify irá registrar automaticamente um componente que utiliza o Jackson para serializar/deserializar requisições e respostas no formato JSON.

Usando o Maven:

Ou o Gradle:

Primeiro, criamos os objetos representando a API do Github.

Agora podemos utilizar o RestifyProxyBuilder para obter uma instância da interface.

Last updated

Was this helpful?