በዚህ የኤ.ፒ.አይ. የሙከራ ማጠናከሪያ ትምህርት ውስጥ የ JSON ን ምላሽ እንዴት መተንተን እና በ REST የተረጋገጠ ቤተ-መጽሐፍት በመጠቀም መረጃን ማውጣት እንደሚቻል እንመለከታለን ፡፡
ኤ.ፒ.አይ. ሲሞክሩ በተለምዶ ለሀብት (ለምሳሌ በ GET ወይም POST ጥያቄ) ጥያቄ ያቀርባሉ ፡፡ አገልጋዩ ከምላሽ ጋር ተመልሶ ይመጣል ከዚያም በምላሹ ላይ አንዳንድ ማረጋገጫዎችን ያካሂዳሉ ፡፡
ለዚህ መማሪያ እኔ እጠቀማለሁ JSONPlaceholder ለሙከራ እና ለፕሮቶታይፒንግ የሐሰት የመስመር ላይ REST ኤ.ፒ.አይ. JSONPlaceholder አንዳንድ የሐሰት መረጃዎች በሚፈልጉበት ጊዜ ሁሉ ሊጠቀሙበት የሚችሉት ነፃ የመስመር ላይ REST አገልግሎት ነው ፡፡
በይበልጥ በተለይም የተጠቃሚዎችን የመጨረሻ ነጥብ እጠቀማለሁ jsonplaceholder .
ከላይ ለተጠቀሰው ሀብት የ GET ጥያቄ ስናቀርብ የተጠቃሚዎችን ዝርዝር የያዘ የ JSON ምላሽ እናገኛለን ፡፡ ይህ ዝርዝር እንደ JSON ድርድር ነው የተወከለው። እያንዳንዱ ድርድር እንደዚህ የመሰለ መዋቅር አለው
{
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'
} }
ስለዚህ ፣ በሙሉ ምላሹ ውስጥ ፣ በድርድሩ ውስጥ አሥር መዝገቦች ይኖራሉ ፣ እያንዳንዳቸው አንድ የ ‹JSON› መዋቅር አላቸው ፣ ግን የተለያዩ እሴቶች ያላቸው ፡፡
ተዛማጅ:
አሁን ከ JSON የተወሰኑ እሴቶችን በመተንተን እና በማውጣት እንጀምር ፡፡
የመጀመሪያው ሙከራ በተለምዶ በድርድሩ ውስጥ ያሉትን የመዝገቦች ብዛት መቁጠር ይሆናል ፣ ስለሆነም በዚህ እንጀምር።
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());
} }
ከላይ የተጠቀሰው ጥሪ ውጤት 10
. ማስታወሻ $
ማስታወሻ ማለት የስር አካል ነው ፡፡
ከላይ በተጠቀሰው ምሳሌ ውስጥ የሁሉም ግቤቶች የተጠቃሚ ስም ማግኘት ከፈለግን ልንጠቀምባቸው እንችላለን
String usernames = response.jsonPath().getString('username'); System.out.println(usernames);
ይህ ድርድርን እንደዚህ ያትማል
[Bret, Antonette, Samantha, Karianne, Kamren, Leopoldo_Corkery, Elwyn.Skiles, Maxime_Nienow, Delphine, Moriah.Stanton]
ከዚያ ልንጠቀምበት የምንችለውን የመጀመሪያውን ግቤት የተጠቃሚ ስም ማግኘት ከፈለግን
String usernames = response.jsonPath().getString('username[0]');
ይህ የመጀመሪያውን የተጠቃሚ ስም ያትማል
Bret
ልንጠቀምባቸው የምንችላቸውን ዝርዝር በመጠቀም-
List jsonResponse = response.jsonPath().getList('username'); System.out.println(jsonResponse.get(0));
ይህ የመጀመሪያውን የተጠቃሚ ስም ያትማል
Bret
ከላይ ያለውን የ JSON መዋቅርን በመመልከት ኩባንያው በእውነቱ ካርታ ነው ፡፡ አንድ መዝገብ ብቻ ቢኖረን ኖሮ ልንጠቀምባቸው እንችላለን
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/1'); Map company = response.jsonPath().getMap('company'); System.out.println(company.get('name'));
የሚያትመው
Romaguera-Crona
ግን ምላሹ ብዙዎችን ከመለሰ እና የመጀመሪያውን የኩባንያ ስም ለማውጣት ከፈለግን ልንጠቀም እንችላለን
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); Map company = response.jsonPath().getMap('company[0]'); System.out.println(company.get('name'));
እንደ አማራጭ እኛ ልንጠቀምባቸው እንችላለን
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); List
ሁለቱም ያትማሉ
Romaguera-Crona