Cap 4 Http Method And Uri Matching

In questo capitolo verrà usata l'annotazione @Path per legare una uri a un metodo java.

Binding HTTP Methods

Ecco i metodi che sono mappati

  • @javax.ws.rs.GET
  • @javax.ws.rs.PUT
  • @javax.ws.rs.POST
  • @javax.ws.rs.DELETE
  • @javax.ws.rs.HEAD

Ecco un esempio già visto

  Path("/customers")
public class CustomerService {
    @GET
    @Produces("application/xml")
    public String getAllCustomers() {
    }
}

In quest'esempio viene processata una richiesta di get alla uri customers
Non si possono avere più annotazione per un metodo java.
L'implementazione del metodo get è la seguente
package javax.ws.rs;
import ...;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod(HttpMethod.GET)
public @interface GET {
}

Semplicemente un'altra annotazione legata proprio al metodo get dell'http usata dentro l'annotazione di get semplice che vedevamo prima.

HTTP Method Extensions

Dato quello che si è detto prima si può estendere ulteriormente il modo di accedere al protocollo, per esempio utilizzando webdav.

@Path

La notazione path può essere usata in maniera molto più approfondita di come è stato fatto nel capitolo 3.

Binding URIs

L'annotazione @javax.ws.rs.Path può essere applicata sopra una classe o un metodo. Perchè una classe sia eleggibile per ricevere richieste http deve avere almeno una annotazione @Path("/") . Questo tipo di classi sono chiamate jax-rs root resources.
Le uri dell'espressione path sono relative a quelle dell'applicazione dove sono contenute, quindi con queste vanno completate.

Per ricevere una richiesta deve avere almeno una annotazione get non è necessario che vi sia passato il parametro.
Per esempio

@Path("/orders")
public class OrderResource {
   @GET
   public String getAllOrders() {
        ...
   }
}

Un path può essere applicato anche al metodo java in questo modo si otterrà una uri più complessa. Per esempio

@Path("/orders")
public class OrderResource {
   @GET
   @Path("unpaid")
   public String getUnpaidOrders() {
      ...
   }
}

Il risultato sarà una uri /orders/unpaid

@Path Expressions

Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License