AngularJS рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП RESTful рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдВрдЧреБрд▓рд░ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЛрдб рдФрд░ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХреЗ рдмреАрдЪ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП $ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ CRUD рдСрдкрд░реЗрд╢рди рдХрд░рдирд╛ рдЕрдм рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рддрдм рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдПрдХ рдорд╛рдирдХ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдорд╛рдирдХ CRUD рд╡рд┐рдзрд┐рдпреЛрдВ (рдпрд╛рдиреА, рдкрдврд╝реЗрдВ, рдЕрдкрдбреЗрдЯ, рдбрд┐рд▓реАрдЯ) рд╕реЗ рдкрд░реЗ рдЬрд╛рддреА рд╣реИ? рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдгреАрдп RESTful рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ "рдирд┐рдпрдВрддреНрд░рдХреЛрдВред"

рдорд╛рд░реНрдХ рдореИрд╕реЗрдЯ рдХреЗ рд░реАрд╕реНрдЯ рдПрдкреАрдЖрдИ рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ , рдЪрд╛рд░ рд╕рдВрд╕рд╛рдзрди рдЖрд░реНрдХрдЯрд┐рдХ рд╣реИрдВ:


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдирд┐рдпрдВрддреНрд░рдХ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдЖрдк рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTTP рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдзрд╛рд░рдг CRUD рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рд▓реЗрдВ:


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


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

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

рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдкрд░реЛрдХреНрдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреЛрдгреАрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐, рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдкрд╣рд▓реЗ URL рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИред рдХреНрдпрд╛ ": рдЖрдИрдбреА" рдПрдХ рд╕рдВрдЧреНрд░рд╣-рдЖрдзрд╛рд░рд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ? рдпрд╛ рдпрд╣ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдИрдбреА рд▓рд┐рдВрдХ рд╣реИ?

рдЗрд╕ рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдгреАрдп рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ URL рдХреЗ рдПрдХ рд╣реА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ URL рдкреИрдЯрд░реНрди рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:


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

<!doctype html> <html ng-app="Demo"> <head> <meta charset="utf-8" /> <title>  RESTful    AngularJS</title> <!-- . .   ,     AngularJS  ngResource. --> <script type="text/javascript" src="../angular-1.0.2/angular.js"></script> <script type="text/javascript" src="../angular-1.0.2/angular-resource.js"></script> <script type="text/javascript"> //    ngResource   //   . var app = angular.module( "Demo", [ "ngResource" ] ); // ,  app . app.run( function( $resource ) { //   ,     //  ,    get()  query(),   //   HTTP.     RESTful //        // ,       CRUD. var messages = $resource( "./api.cfm/messages/:listController:id/:docController", { id: "@id", listController: "@listController", docController: "@docController" }, { clear: { method: "POST", params: { listController: "clear-all" } }, archive: { method: "POST", params: { docController: "archive" } } } ); //    ,   //    . // GET  ID. messages.query(); // POST   . messages.clear(); // GET  ID. messages.get( { id: 4 } ); // POST   . messages.archive( { id: 8 } ); } ); </script> </head> <body> <!--   . --> </body> </html> 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░рд╛ рдХреЛрдгреАрдп рд╕рдВрд╕рд╛рдзрди рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:


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


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Angular рдиреЗ REST рдХреЗ рдЕрдиреБрд╕рд╛рд░ URL рдХреА рд╕рд╣реА рдкрд╣рдЪрд╛рди рдХреА рд╣реИред рдХреИрдл!

рдпрджрд┐ рд░реБрдЪрд┐ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдкреАрдЖрдИ рдлрд╝рд╛рдЗрд▓ рд╣реИ:

 <!---    ,   . ---> <cfset resourcePath = cgi.path_info /> <!--- : ,  ColdFusion 10 ,         POST.  , . ---> <cfif ( cgi.request_method neq "GET" )> <cfset requestBody = getHTTPRequestData().content /> </cfif> <!---   ,  ,      . ---> <cfif reFind( "^/messages$", resourcePath )> <cfset response = "GET without ID." /> <cfelseif reFind( "^/messages/clear-all$", resourcePath )> <cfset response = "POST with clear-all Controller." /> <cfelseif reFind( "^/messages/\d+$", resourcePath )> <cfset response = "GET with ID." /> <cfelseif reFind( "^/messages/\d+/archive+$", resourcePath )> <cfset response = "POST with archive controller" /> <cfelse> <cfset response = "Hmm, couldn't match resource." /> </cfif> <!---    JSON.   ,   . ---> <cfset serializedResponse = serializeJSON( response ) /> <!---     . ---> <cfheader name="X-Debug-Path" value="#cgi.path_info#" /> <!---      . ---> <cfcontent type="application/json" variable="#charsetDecode( serializedResponse, 'utf-8' )#" /> 


рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдХреЛрд▓реНрдбрдлрд╝реНрдпреВрдЬрд╝рди 10 POST рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдЕрдиреБрд░реЛрдз рдмреЙрдбреА (getHttpRequestData () рдлрд╝рдВрдХреНрд╢рди) рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдорд┐рд▓реАред рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ JSON (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрдХреЗрддрди) рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдпрд╣ рдЦрд╛рд▓реА рдерд╛, рддреЛ рдЕрдиреБрд░реЛрдз рд▓рдЯрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрд▓реНрдбрдлреНрдпреВрдЬрди 9 рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореВрд▓

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


All Articles