JAX-RS é uma específicação Java para criação de serviços REST, e oferece um rico conjunto de anotações. O java-restify fornece suporte para utilizar as mesmas anotações no client-side.
Instalação
Para utilizar as anotações do JAX-RS, adicione a dependência java-restify-jaxrs-contract, que fornece a implementação JaxRsContractReader.
importjavax.ws.rs.ApplicationPath;importjavax.ws.rs.Consumes;importjavax.ws.rs.DELETE;importjavax.ws.rs.GET;importjavax.ws.rs.HeaderParam;importjavax.ws.rs.CookieParam;importjavax.ws.rs.POST;importjavax.ws.rs.PUT;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importjavax.ws.rs.QueryParam;@ApplicationPath("http://myapi.com") //@Path também é suportado no topo da interfaceinterfaceMyApi { @Path("/resource") //@Path para métodos (@ApplicationPath é suportado apenas no topo da interface) @GETStringgetResource(); @Path("/resource/{id}") @GETStringgetResourceById(@PathParam("id") String id); @Path("/resource") @GETStringgetResourceWithHeader(@HeaderParam("X-Custom-Header") String id); @Path("/resource") @GETStringgetResourceWithCookie(@CookieParam("whatever") String content); @Path("/resource") @GETStringgetResourceByName(@QueryParam("name") String name); @Path("/resource/{id}") @DELETEvoiddeleteResourceById(@PathParam("id") String id); @Path("/resource/{id}") @PUT @Consumes("application/json") //adiciona o cabeçalho Content-Type:application/jsonvoidupdateResourceById(@PathParam("id") String id,Resource body); //o argumento sem anotação será considerado como request body @Path("/resource") @POST @Consumes("application/json") //adiciona o cabeçalho Content-Type:application/jsonvoidcreateResource(Resource body); //o argumento sem anotação será considerado como request body @Path("/resource/{id}") @GET @Produces("application/json") //adiciona o cabeçalho Accept:application/jsonStringgetResourceByIdAsJson(@PathParam("id") String id);}MyApi myApi =newRestifyProxyBuilder().contract(newJaxRsContractReader()).target(MyApi.class).build();