Í þessari API prófunarleiðbeiningu skoðum við hvernig á að flokka JSON svörun og draga út upplýsingar með því að nota REST-fullvissa bókasafn.
Þegar þú prófar API ertu venjulega að biðja um auðlind, (t.d. með GET eða POST beiðni). Miðlarinn kemur aftur með svar og þá gerir þú nokkrar fullyrðingar um svarið.
Í þessari kennslu mun ég nota JSONPlaceholder sem er falsað REST API fyrir prófanir og frumgerð. JSONPlaceholder er ókeypis REST þjónustu á netinu sem þú getur notað hvenær sem þú þarft einhver fölsuð gögn.
Nánar tiltekið mun ég nota endapunkt notenda jsonplaceholder .
Þegar við gerum GET beiðni við ofangreinda auðlind fáum við JSON svar sem inniheldur lista yfir notendur. Þessi listi er táknaður sem JSON Array. Hver fylking hefur uppbyggingu sem þessa:
{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: 'Sincere@april.biz',
address: {
street: 'Kulas Light',
suite: 'Apt. 556',
city: 'Gwenborough',
zipcode: '92998-3874',
geo: {
lat: '-37.3159',
lng: '81.1496'
}
},
phone: '1-770-736-8031 x56442',
website: 'hildegard.org',
company: {
name: 'Romaguera-Crona',
catchPhrase: 'Multi-layered client-server neural-net',
bs: 'harness real-time e-markets'
} }
Þess vegna, í fullri svörun, verða tíu skrár í fylkinu, hver með sömu JSON uppbyggingu, en með mismunandi gildi.
Tengt:
Nú skulum við byrja á því að flokka og draga út nokkur gildi úr JSON.
Fyrsta prófið væri venjulega að telja fjölda skráninga í fylkinu, svo við skulum byrja á því.
import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.parsing.Parser; import io.restassured.response.Response; import java.util.List; import static io.restassured.RestAssured.given; public class RestTest {
public static Response doGetRequest(String endpoint) {
RestAssured.defaultParser = Parser.JSON;
return
given().headers('Content-Type', ContentType.JSON, 'Accept', ContentType.JSON).
when().get(endpoint).
then().contentType(ContentType.JSON).extract().response();
}
public static void main(String[] args) {
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users');
List jsonResponse = response.jsonPath().getList('$');
System.out.println(jsonResponse.size());
} }
Niðurstaðan af ofangreindu símtali myndi prenta 10
. Athugaðu $
táknmynd sem þýðir rótarefnið.
Í dæminu hér að ofan, ef við vildum fá notendanafn allra færslna, gætum við notað:
String usernames = response.jsonPath().getString('username'); System.out.println(usernames);
Þetta myndi prenta fylkið eins og:
[Bret, Antonette, Samantha, Karianne, Kamren, Leopoldo_Corkery, Elwyn.Skiles, Maxime_Nienow, Delphine, Moriah.Stanton]
Ef við viljum fá notendanafn fyrstu færslunnar sem við gætum notað:
String usernames = response.jsonPath().getString('username[0]');
Þetta myndi prenta fyrsta notandanafnið:
Bret
Með því að nota lista getum við notað:
List jsonResponse = response.jsonPath().getList('username'); System.out.println(jsonResponse.get(0));
Þetta myndi prenta fyrsta notandanafnið:
Bret
Þegar litið er á ofangreinda JSON uppbyggingu er fyrirtækið í raun kort. Ef við værum bara með eina plötu gætum við notað:
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/1'); Map company = response.jsonPath().getMap('company'); System.out.println(company.get('name'));
sem myndi prenta:
Romaguera-Crona
En ef svarið skilar fylki og við viljum draga fyrsta nafn fyrirtækisins út, gætum við notað:
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); Map company = response.jsonPath().getMap('company[0]'); System.out.println(company.get('name'));
Einnig gætum við notað:
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); List
báðir munu prenta:
Romaguera-Crona