Header, Cookies, dan Parameter dengan REST-terjamin

1. Ikhtisar

Dalam tutorial singkat ini, kita akan menjelajahi beberapa skenario lanjutan yang dijamin REST. Kami menjelajahi REST-terjamin sebelumnya dalam tutorial Panduan untuk REST-terjamin.

Untuk melanjutkan, kami akan membahas contoh-contoh yang menunjukkan cara menyetel header, cookie, dan parameter untuk permintaan kami.

Penyiapannya sama dengan artikel sebelumnya, jadi mari selami contoh kami.

2. Parameter Pengaturan

Sekarang, mari kita bahas cara menentukan parameter yang berbeda untuk permintaan kita - dimulai dengan parameter jalur.

2.1. Parameter Jalur

Kita dapat menggunakan pathParam (nama-parameter, nilai) untuk menentukan parameter jalur:

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

Untuk menambahkan beberapa parameter jalur kita akan menggunakan metode 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); }

Dalam contoh ini, kami telah menggunakan parameter jalur bernama, tetapi kami juga dapat menambahkan parameter tanpa nama, dan bahkan menggabungkan keduanya:

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

URL yang dihasilkan, dalam hal ini, adalah //api.github.com/repos/eugenp/tutorials.

Perhatikan bahwa parameter yang tidak disebutkan namanya berbasis indeks.

2.2. Parameter Kueri

Selanjutnya, mari kita lihat bagaimana kita dapat menentukan parameter kueri menggunakan 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); }

Metode param () akan bertindak seperti queryParam () dengan permintaan GET.

Untuk menambahkan beberapa parameter kueri, kita bisa merangkai beberapa metode queryParam () , atau menambahkan parameter ke metode 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. Parameter Bentuk

Akhirnya, kita bisa menentukan parameter formulir menggunakan formParam ():

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

Metode param () akan menjalankan formParam () untuk permintaan POST.

Perhatikan juga bahwa formParam () menambahkan header Content-Type dengan nilai " application / x-www-form-urlencoded ".

3. Pengaturan Header

Selanjutnya, kita dapat menyesuaikan header permintaan kita menggunakan header ():

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

Dalam contoh ini, kami telah menggunakan header () untuk menyetel header User-Agent .

Kami juga dapat menambahkan header dengan beberapa nilai menggunakan metode yang sama:

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

Dalam contoh ini, kita akan memiliki permintaan dengan dua header: My-Header: val1 dan My-Header: val2.

Untuk menambahkan beberapa header, kita akan menggunakan metode headers () :

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

4. Menambahkan Cookies

Kami juga dapat menentukan cookie khusus untuk permintaan kami menggunakan cookie () :

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

Kami juga dapat menyesuaikan cookie kami menggunakan Pembuat Cookie :

@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. Kesimpulan

Di artikel ini, kami telah menunjukkan bagaimana kami dapat menentukan parameter permintaan, header, dan cookie saat menggunakan REST-terjamin.

Dan, seperti biasa, kode sumber lengkap untuk contoh tersedia di GitHub.