Objetos suportados

Tipos suportados

Por padrão, os seguintes tipos de retorno de método são suportados:

  • String

public interface MyApi {

    @Path("/customers/{id}") @Get
    String getCustomerAsString(@PathParameter String id);
}
  • Tipos primitivos ou wrappers

public interface MyApi {

    @Path("/integer") @Get
    int integer();

    @Path("/boolean") @Get
    Boolean boolean();

    @Path("/double") @Get
    double double();
}
  • byte[]

  • InputStream

  • Optional

  • Collection

  • Stream

  • Enumeration

  • Iterator

  • ListIterator

  • Iterable

  • Queue

  • Callable

Callable é um objeto que representa uma computação qualquer que retorna algum valor. A requisição HTTP será feita de modo lazy, eventualmente em outra thread (o seu código será responsável pela execução do Callable).

  • Runnable

Runnable é um objeto que representa uma computação qualquer, e não retorna nenhum valor. A requisição HTTP será feita de modo lazy, eventualmente em outra thread (o seu código será responsável pela execução do Runnable).

  • EndpointCall<>

Esse objeto representa uma operação HTTP realizada pelo java-restify. O seu código será responsável por invocar o método execute.

  • Headers

Esse objeto é uma coleção imutável de cabeçalhos. Quando utilizado como retorno de método, irá conter os headers da resposta.

  • StatusCode

Esse objeto representa o status HTTP da resposta.

  • EndpointResponse<>

Esse objeto fornece acesso a todos os dados da resposta (incluindo cabeçalhos e status code). Também fornece acesso ao corpo, já deserializado para um objeto.

Tipos assíncronos

Alguns tipos de retorno farão com que a requisição seja executada da maneira assíncrona automaticamente. De maneira simplificada, a requisição simplesmente será realizada em uma thread separada. O mecanismo é explicado com mais detalhes na documentação sobre requisições assíncronas HTTP.

O java-restify oferece suporte para vários tipos de retorno assíncronos, e os handlers para esses objetos são registrados automaticamente. Para tornar essa configuração explícita:

Os seguintes tipos assíncronos são suportados:

  • Future

  • CompletableFuture

  • FutureTask

  • AsyncEndpointCall

Esse objeto é análogo ao EndpointCall, e fornece métodos para execução assíncrona.

@CallbackParameter

Ao invés de lidar com o retorno do método, outra possibilidade é utilizar um parâmetro anotado com @CallbackParameter, que represente um callback para a execução assíncrona.

Ao utilizar parâmetros anotados com @CallbackParameter, o retorno do método deve ser void.

Configuração

Os handlers responsáveis pela execução de métodos assíncronos utilizam o mesmo thread pool configurado para requisições assíncronas. A documentação sobre requisições assíncronas fornece mais detalhes de configuração e customizações.

Last updated

Was this helpful?