REST рдПрд╢реНрдпреЛрд░реНрдб: рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд╛рдБрдЪ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣рдордиреЗ рдЬреЛ рд╕реАрдЦрд╛ рд╣реИ

REST рдПрд╢реНрдпреЛрд░реНрдб - REST рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП DSL, рдЬреЛ рдЬрд╛рд╡рд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдиреМ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛ рдФрд░ рдЕрдкрдиреА рд╕рд╛рджрдЧреА рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░рдг рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рд╣реИред


DINS рдореЗрдВ, рд╣рдордиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде 17,000 рд╕реЗ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗ рдФрд░ рдкрд╛рдВрдЪ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рдХрдИ "рдиреБрдХрд╕рд╛рди" рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд╣реА рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн, рднреНрд░рдо рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреНрд╡реЗрд░реА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВред


рдпрд╣ рд▓реЗрдЦ REST рдПрд╢реНрдпреЛрд░реНрдб рдХреА рдРрд╕реА рдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рддреЗрдЬреА рд╕реЗ рдмрдврд╝реЗрдЧреА - рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рди рдкрдбрд╝реЗред


рдЫрд╡рд┐


рд╣рдо рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ


DINS UCaaS рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо рдЙрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдВрдЧрд╕реЗрдВрдЯрд░рд┐рдпрд▓ рд╕реНрд╡рдпрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред


рдХрд┐рд╕реА рднреА рдПрдкреАрдЖрдИ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЗрд╕реЗ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рджрд░реНрдЬрдиреЛрдВ рдФрд░ рд╕реИрдХрдбрд╝реЛрдВ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЯреЗрд╕реНрдЯ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЯреЗрд╕реНрдЯрдПрдирдЬреА рдХреЛ рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд░реАрд╕реНрдЯ рдПрд╢реНрдпреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЬрдм REST рдПрд╢реНрдпреЛрд░реНрдб рдХреЛ рдлрд╛рдпрджрд╛ рд╣реЛрдЧрд╛


рдпрджрд┐ рдЖрдкрдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрдкреВрд░реНрдг рдПрдкреАрдЖрдИ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ REST рдПрд╢реНрдпреЛрд░реНрдб рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд░рдЪрдирд╛, рдкреАрд╡реАрдбреА рдФрд░ рдзреБрдЖрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИред


рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдЬреЛ рдпрд╣ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ 200 рдУрдХреЗ рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ:


given() .baseUri("http://cookiemonster.com") .when() .get("/cookies") .then() .assertThat() .statusCode(200); 

given рдХреАрд╡рд░реНрдб, when рдФрд░ then рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреЗ рд╣реИрдВ: given рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреНрдпрд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, when -рдХрд┐рд╕ рдкрджреНрдзрддрд┐ рд╕реЗ рдФрд░ рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣рдо рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ, рдФрд░ then рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреЙрдбреА рдХреЛ JsonPath рдпрд╛ XmlPath рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдЖрдорддреМрд░ рдкрд░ рдмрдбрд╝реЗ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рд╣реЗрдбрд░, рдХреБрдХреАрдЬрд╝, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдЕрдиреБрд░реЛрдз рдмреЙрдбреА рдХреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдПрдкреАрдЖрдИ рдореЗрдВ рджрд░реНрдЬрдиреЛрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрд╕рд╛рдзрди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред


рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрд╢реНрд╡рд╕реНрдд рдЖрд╢реНрд╡рд╛рд╕рди рдореЗрдВ рд╣реИрдВ:


  • RequestSpecification / ResponseSpecification / ResponseSpecification ;
  • рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдиреНрдпрд╛рд╕;
  • рдлрд┐рд▓реНрдЯрд░ред

рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛


рдпреЗ рджреЛ рд╡рд░реНрдЧ рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:


 RequestSpecification requestSpec = given() .baseUri("http://cookiemonster.com") .header("Language", "en"); requestSpec.when() .get("/cookiesformonster") .then() .statusCode(200); requestSpec.when() .get("/soup") .then() .statusCode(400); 

 ResponseSpecification responseSpec = expect() .statusCode(200); given() .expect() .spec(responseSpec) .when() .get("/hello"); given() .expect() .spec(responseSpec) .when() .get("/goodbye"); 

рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрдИ рдХреЙрд▓, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред рдЖрдк рдПрдХрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрдИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрдд рд╣реИ :


 RequestSpecification requestSpec = given() .baseUri("http://cookiemonster.com") .header("Language", "en"); RequestSpecification yetAnotherRequestSpec = given() .header("Language", "fr"); given() .spec(requestSpec) .spec(yetAnotherRequestSpec) .when() .get("/cookies") .then() .statusCode(200); 

рдХреЙрд▓ рд▓реЙрдЧ:


 Request method: GET Request URI: http://localhost:8080/ Headers: Language=en Language=fr Accept=*/* Cookies: <none> Multiparts: <none> Body: <none> java.net.ConnectException: Connection refused (Connection refused) 

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рднреА рд╣реЗрдбрд░ рдХреЛ рдХреЙрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпреВрдЖрд░рдЖрдИ рдЕрдЪрд╛рдирдХ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдмрди рдЧрдпрд╛ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред


рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реБрдЖ рдХрд┐ REST рдПрд╢реНрдпреЛрд░реНрдб рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддрд╛ рд╣реИ (рд╡рд╣реА рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде рд╣реИ)ред рд╣реЗрдбрд░ рдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдмрджрд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдпреВрдЖрд░рдЖрдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд┐рдо рдПрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛрдбрд╝реЗ рдЧрдП рдЕрдВрддрд┐рдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЗрд╕рд▓рд┐рдП, REST рдПрд╢реНрдпреЛрд░реНрдб рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ) рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред


рдпрджрд┐ рдЖрдк рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреЛрдИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЬреЛрдбрд╝реЗрдВ ред рд╕рд▓рд╛рд╣ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝рддреА рд╣реИ, рддреЛ рд╕рд╣рд╛рдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЙрдирдХреЗ рдЕрдВрджрд░ рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдХрдИ рд▓реЛрдЧ рдПрдХ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВред


рдмреЗрд╕рд┐рдХ рд░реЗрд╕реНрдЯ рдПрд╢реНрдпреЛрд░реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


REST рдПрд╢реНрдпреЛрд░реНрдб рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдмреБрдирд┐рдпрд╛рджреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдФрд░ RestAssured рдХреНрд▓рд╛рд╕ рдХреЗ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ:


 @BeforeMethod public void configureRestAssured(...) { RestAssured.baseURI = "http://cookiemonster.com"; RestAssured.requestSpecification = given() .header("Language", "en"); RestAssured.filters(new RequestLoggingFilter(), new ResponseLoggingFilter()); ... } 

рд╣рд░ рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдорд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдПрдВрдЧреЗред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдПрдиреЛрдЯреЗрд╢рди @BeforeMethod in TestNG рдФрд░ @BeforeEach рд╕рд╛рде JUnit рдореЗрдВ @BeforeEach рдЧрдпрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рди рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ред


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрдд рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рд╣реИ ред


рдЙрджрд╛рд╣рд░рдг: рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдпрд╛ рдореВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝рд┐рд▓реНрдЯрд░ред рдЬрдм рддрдХ рдкрд░реАрдХреНрд╖рдг рдПрдХ рд╣реА рдзрд╛рдЧреЗ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ, рддрдм рддрдХ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЬрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХрдИ рдереНрд░реЗрдб рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрдгрдп рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдПрдХ рдзрд╛рдЧреЗ рд╕реЗ рдПрдХ рдЯреЛрдХрди рдкрдбрд╝реЛрд╕реА рдореЗрдВ рди рдЧрд┐рд░реЗред


рдмрд╛рдХреА рдЖрд╢реНрд╡рд╛рд╕рди рдлрд┐рд▓реНрдЯрд░


рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг - рд▓реЙрдЧрд┐рдВрдЧ, рдпрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЬреЛрдбрд╝рдирд╛:


 public class OAuth2Filter implements AuthFilter { String accessToken; OAuth2Filter(String accessToken) { this.accessToken = accessToken; } @Override public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) { requestSpec.replaceHeader("Authorization", "Bearer " + accessToken); return ctx.next(requestSpec, responseSpec); } } 

 String accessToken = getAccessToken(username, password); OAuth2Filter auth = new OAuth2Filter(accessToken); given() .filter(auth) .filter(new RequestLoggingFilter()) .filter(new ResponseLoggingFilter()) ... 

рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдлрд╝рд┐рд▓реНрдЯрд░ LinkedList рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, REST рдПрд╢реНрдпреЛрд░реНрдб рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдХрд░ рдФрд░ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдЬреЛ рдЬрд╡рд╛рдм рдЖрдпрд╛ рдЙрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдХреНрд░рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ ред рдпреЗ рджреЛ рдкреНрд░рд╢реНрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЙрдЧ рдХреЛ рдЬрдиреНрдо рджреЗрдВрдЧреЗ: рдкрд╣рд▓рд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реЗрдбрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛, рджреВрд╕рд░рд╛ - рдирд╣реАрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╢реАрд░реНрд╖ рд▓реЗрдЦ рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ - рдмрд╕ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, REST рдПрд╢реНрдпреЛрд░реНрдб рд╕рд╛рдЗрди рдЕрдк рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред


 given() .filter(auth) .filter(new RequestLoggingFilter()) тАж given() .filter(new RequestLoggingFilter()) .filter(auth) 

рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рд┐рд▓реНрдЯрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА OrderedFilter рдХрд┐рдП рдЧрдП OrderedFilter рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (1000) рд╕реЗ рдКрдкрд░ рдпрд╛ рдиреАрдЪреЗ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдлрд┐рд▓реНрдЯрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдиреАрдЪреЗ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде - рдЙрдирдХреЗ рдмрд╛рджред


рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рдЖрдк рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЧрд▓рддреА рд╕реЗ рджреЛ рдлрд┐рд▓реНрдЯрд░ рдПрдХ рд╣реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 999 рдкрд░ред рдлрд┐рд░ рдЬреЛ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдлрд┐рд▓реНрдЯрд░ рд╣реА рдирд╣реАрдВ


рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди REST рдПрд╢реНрдпреЛрд░реНрдб рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛, AuthenticationScheme рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдФрд░ рд╣реИ:


 String accessToken = getAccessToken(username, password); OAuth2Scheme scheme = new OAuth2Scheme(); scheme.setAccessToken(accessToken); RestAssured.authentication = scheme; 

рдпрд╣ рдПрдХ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╡рд┐рдзрд┐ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдХреЛ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рджреЛ рдХрд╛рд░рдг рд╣реИрдВ:


рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛


REST рдПрд╢реНрдпреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ Oauth1 рдпрд╛ Oauth2 (рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ Scribe рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА - рдЖрдк рдЦреБрд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг 2.5.3 рдХреЛ рдЖрдпрд╛рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЖрдПрдБрдЧреЗред


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, Scribe рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг Oauth2 REST рдПрд╢реНрдпреЛрд░реНрдб рд╕рдВрд╕реНрдХрд░рдг 3.0.3 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдФрд░ рд╣рд╛рд▓рд┐рдпрд╛ рд░рд┐рд▓реАрдЬрд╝ 4.0.0 рдиреЗ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛)ред


рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рддрд╛


рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЙрдирдХреЗ рдмрд╛рдж AuthenticationScheme рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ - рдпрд╣ рдкреНрд░рддрд┐рдЬреНрдЮрд╛ рдирд╣реАрдВ рд╣реИред


REST рдПрд╢реНрдпреЛрд░реНрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ


рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЖрдорддреМрд░ рдкрд░ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рднреА рдЬрдЯрд┐рд▓ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рд╖рдп рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдЬреЙрдиреНрд╕ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ, рддреЛ REST рдПрд╢реНрдпреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдПрдХ рд╢реАрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:


 @Test public void shouldCorrectlyCountAddedCookies() { Integer addNumber = 10; JsonPath beforeCookies = given() .when() .get("/latestcookies") .then() .assertThat() .statusCode(200) .extract() .jsonPath(); String beforeId = beforeCookies.getString("id"); JsonPath afterCookies = given() .body(String.format("{number: %s}", addNumber)) .when() .put("/cookies") .then() .assertThat() .statusCode(200) .extract() .jsonPath(); Integer afterNumber = afterCookies.getInt("number"); String afterId = afterCookies.getString("id"); JsonPath history = given() .when() .get("/history") .then() .assertThat() .statusCode(200) .extract() .jsonPath(); assertThat(history.getInt(String.format("records.find{r -> r.id == %s}.number", beforeId))) .isEqualTo(afterNumber - addNumber); assertThat(history.getInt(String.format("records.find{r -> r.id == %s}.number", afterId))) .isEqualTo(afterNumber); } 

рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдПрдХ рд░рд╛рдХреНрд╖рд╕ рдХреБрдХреА рдЦрд┐рд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕реЗ рдХрд┐рддрдиреЗ рдХреБрдХреАрдЬрд╝ рджрд┐рдП рдЧрдП рдереЗ, рдФрд░ рдХрд╣рд╛рдиреА рдореЗрдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╕рднреА рдЕрдиреБрд░реЛрдз рд╕рдорд╛рди рджрд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреА рддреИрдпрд╛рд░реА рдХрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрд░реЛрдз рдХрд╣рд╛рдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред


given() , when() рдФрд░ then() рдмреАрд╕реНрдЯ рд╕реЗ рдмреАрдбрд╕реНрдЯрд░реНрдб, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдкреЙрдХ рдпрд╛ рдХрдХрдбрд╝реА, рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЙрдирдХрд╛ рдЕрд░реНрде рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкреИрдорд╛рдирд╛ рдПрдХ рдЕрдиреБрд░реЛрдз рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрдк REST рдПрд╢реНрдпреЛрд░реНрдб рдХреЙрд▓ рдХреЛ рд╕рд╣рд╛рдпрдХ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 public class CookieMonsterHelper { public static JsonPath getCookies() { return given() .when() .get("/cookiesformonster") .then() .extract() .jsonPath(); } ... } 

рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВ:


 JsonPath response = CookieMonsterHelper.getCookies(); 

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рдРрд╕реЗ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХ рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рдХреЙрд▓ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ - рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЕрдЪрд╛рдирдХ, рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд░реЗрд╕реНрдЯ рдПрд╢реНрдпреЛрд░реНрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдХ рд╣реА рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдЕрдХреНрд╕рд░ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖


REST рдПрд╢реНрдпреЛрд░реНрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рд╡рд╣ рдЬрд╛рдирддреА рд╣реИ рдХрд┐ рджреЛ рдХрд╛рдо рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ рдФрд░ рдЙрддреНрддрд░ рдЬрд╛рдВрдЪреЗрдВред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдФрд░ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ ред


рдпрджрд┐ рдЖрдкрдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реИ - рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдмреЛрдЭрд┐рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕, рд╕реНрдерд┐рд░ рд╡рд┐рдиреНрдпрд╛рд╕, рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рднреНрд░рдо рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреВрдЯрдиреЗ рд╡рд╛рд▓реЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдиреМ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, REST рдПрд╢реНрдпреЛрд░реНрдб рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджрд┐рдП - рд░реЗрдЯреНрд░реЛрдлрд┐рдЯ, рдлрд┐рдЧ, рдпреВрдиреАрд╕реНрдЯ, рдЖрджрд┐ - рдЬрд┐рдирдореЗрдВ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВред


рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЦреБрдж рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд░реЗрдЯреНрд░реЛрдлрд┐рдЯ рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ REST рдПрд╢реНрдпреЛрд░реНрдб рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред


рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА REST рдПрд╢реНрдпреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рд╡реЗ рд╕реНрдерд┐рд░ рдФрд░ рддреЗрдЬ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд╕рдордп рдХрд╛ рдЕрдзрд┐рдХ рдЦрд░реНрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рд╛рдн рд▓рд╛рдПрдЧрд╛ред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ REST рдПрд╢реНрдпреЛрд░реНрдб рдЖрдкрдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред


рд╣рд░ рджрд┐рди, рд░рд┐рдВрдЧрд╕реЗрдВрдЯрд░рд┐рдпрд▓ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП DINS рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдФрд░ рд╡реЗ рдЕрднреА рднреА REST рдПрд╢реНрдпреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рдирдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдордп рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╡рд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рдмрдирд╛рдП рдЧрдП рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдФрд░ рддрд░реАрдХреЗ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЕрдЦрдВрдбрддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рдФрд░ рдлреИрд╢рдиреЗрдмрд▓ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред REST рдПрд╢реНрдпреЛрд░реНрдб, рдЕрдкрдиреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЕрдкрдирд╛ рдореБрдЦреНрдп рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi464225/


All Articles