Intestazioni, cookie e parametri con garanzia REST

1. Panoramica

In questo breve tutorial, esploreremo alcuni scenari avanzati garantiti da REST. Abbiamo già esplorato REST-assicurato nel tutorial una guida per REST-assicurato.

Per continuare, tratteremo esempi che mostrano come impostare intestazioni, cookie e parametri per le nostre richieste.

La configurazione è la stessa dell'articolo precedente, quindi tuffiamoci nei nostri esempi.

2. Impostazione dei parametri

Ora, discutiamo come specificare parametri diversi per la nostra richiesta, a partire dai parametri del percorso.

2.1. Parametri del percorso

Possiamo usare pathParam (nome-parametro, valore) per specificare un parametro di percorso:

@Test public void whenUsePathParam_thenOK() { given().pathParam("user", "eugenp") .when().get("/users/{user}/repos") .then().statusCode(200); }

Per aggiungere più parametri di percorso useremo il metodo pathParams () :

@Test public void whenUseMultiplePathParam_thenOK() { given().pathParams("owner", "eugenp", "repo", "tutorials") .when().get("/repos/{owner}/{repo}") .then().statusCode(200); given().pathParams("owner", "eugenp") .when().get("/repos/{owner}/{repo}","tutorials") .then().statusCode(200); }

In questo esempio, abbiamo utilizzato parametri di percorso con nome, ma possiamo anche aggiungere parametri senza nome e persino combinare i due:

given().pathParams("owner", "eugenp") .when().get("/repos/{owner}/{repo}", "tutorials") .then().statusCode(200);

L'URL risultante, in questo caso, è //api.github.com/repos/eugenp/tutorials.

Notare che i parametri senza nome sono basati sull'indice.

2.2. Parametri di query

Successivamente, vediamo come possiamo specificare i parametri di query usando queryParam ():

@Test public void whenUseQueryParam_thenOK() { given().queryParam("q", "john").when().get("/search/users") .then().statusCode(200); given().param("q", "john").when().get("/search/users") .then().statusCode(200); }

Il metodo param () agirà come queryParam () con le richieste GET.

Per aggiungere più parametri di query, possiamo concatenare diversi metodi queryParam () o aggiungere i parametri a un metodo queryParams () :

@Test public void whenUseMultipleQueryParam_thenOK() { int perPage = 20; given().queryParam("q", "john").queryParam("per_page",perPage) .when().get("/search/users") .then().body("items.size()", is(perPage)); given().queryParams("q", "john","per_page",perPage) .when().get("/search/users") .then().body("items.size()", is(perPage)); }

2.3. Parametri del modulo

Infine, possiamo specificare i parametri del modulo usando formParam ():

@Test public void whenUseFormParam_thenSuccess() { given().formParams("username", "john","password","1234").post("/"); given().params("username", "john","password","1234").post("/"); }

Il metodo param () agirà in forma di vitaParam () per le richieste POST.

Si noti inoltre che formParam () aggiunge un'intestazione Content-Type con il valore " application / x-www-form-urlencoded ".

3. Impostazione delle intestazioni

Successivamente, possiamo personalizzare le nostre intestazioni di richiesta utilizzando header ():

@Test public void whenUseCustomHeader_thenOK() { given().header("User-Agent", "MyAppName").when().get("/users/eugenp") .then().statusCode(200); }

In questo esempio, abbiamo utilizzato header () per impostare l' intestazione User-Agent .

Possiamo anche aggiungere un'intestazione con più valori utilizzando lo stesso metodo:

@Test public void whenUseMultipleHeaderValues_thenOK() { given().header("My-Header", "val1", "val2") .when().get("/users/eugenp") .then().statusCode(200); }

In questo esempio, avremo una richiesta con due intestazioni: My-Header: val1 e My-Header: val2.

Per aggiungere più intestazioni, useremo il metodo headers () :

@Test public void whenUseMultipleHeaders_thenOK() { given().header("User-Agent", "MyAppName", "Accept-Charset", "utf-8") .when().get("/users/eugenp") .then().statusCode(200); }

4. Aggiunta di cookie

Possiamo anche specificare cookie personalizzati alla nostra richiesta utilizzando cookie () :

@Test public void whenUseCookie_thenOK() { given().cookie("session_id", "1234").when().get("/users/eugenp") .then().statusCode(200); }

Possiamo anche personalizzare il nostro cookie utilizzando biscotto Builder :

@Test public void whenUseCookieBuilder_thenOK() { Cookie myCookie = new Cookie.Builder("session_id", "1234") .setSecured(true) .setComment("session id cookie") .build(); given().cookie(myCookie) .when().get("/users/eugenp") .then().statusCode(200); }

5. conclusione

In questo articolo, abbiamo mostrato come possiamo specificare parametri di richiesta, intestazioni e cookie quando si utilizza REST-assicurato.

E, come sempre, il codice sorgente completo per gli esempi è disponibile su GitHub.