рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдк REST API рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ рдФрд░ HATEOAS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗред
рд╡реЗрдм рдкреЗрдЬ рджреЗрдЦрддреЗ рд╕рдордп, рдЖрдк рдкреГрд╖реНрда рдкрд░ рдбреЗрдЯрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
REST API рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдЖрдк рдХрд┐рд╕реА REST рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрд╕рд╛рдзрди рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рдкрд╕ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рдЖрдк рдЬреЛ рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ:
- HATEOAS рдХреНрдпрд╛ рд╣реИ?
- рдЖрдкрдХреЛ HATEOAS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
- HATEOAS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░реЗрдВ?
рдЕрдиреНрдп рдПрдкреАрдЖрдИ
REST API рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдпрд╣ рдкрд╛рдБрдЪрд╡рд╛рдБ рд▓реЗрдЦ рд╣реИ:
HATEOAS рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?
HATEOAS рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде рд╣реИ "
рд╣рд╛рдЗрдкрд░рдореЗрдбрд┐рдпрд╛ рдП рдПрд╕
рдЯреА рд╡реЗ рдЗрдВрдЬрди
рдУ рдПрдл
рдП рдкреНрд▓реЗрдкреНрд▓рд┐рдХреЗрд╢рди
рдПрд╕ рдЯреЗрдЯ" (рд╣рд╛рдЗрдкрд░рдореАрдбрд┐рдпрд╛ рдПрдХ рдПрдкреНрд▓реАрдХреЗрд╢рди рд╕реНрдЯреЗрдЯ рдХреЗ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ)ред рдЗрд╕реЗ рдФрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рд╛рдЗрдкрд░рдореАрдбрд┐рдпрд╛ рдХрд╛ рдЕрд░реНрде рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реЗрдмрдкреЗрдЬ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд┐рд╕реА рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреЗрдЬ рдЖрдкрдХреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрдИ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рдмрдЯрди рджрдмрд╛рдиреЗ (рд╣рд░рд╛ "рдХреНрд▓реЛрди" рдпрд╛ "рдбрд╛рдЙрдирд▓реЛрдб" (рдбрд╛рдЙрдирд▓реЛрдб)
- рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдореБрджреНрджреЗ" рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП)
- рдФрд░ рдХреБрдЫ рдФрд░
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдмрд╛рдХреА рдПрдкреАрдЖрдИ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рдкрд░ GET рдЕрдиреБрд░реЛрдз рдХреЛ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрддреЗ рд╣реИрдВ:
GET рдЕрдиреБрд░реЛрдз рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ : 8080 / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддреАрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
GET рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ : 8080 / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░, рдЖрдк рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрдм рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреЛрдИ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ HATEOAS рдЕрдВрддрд░ рдХреЛ рднрд░рддрд╛ рд╣реИред рдПрдХ HATEOAS рдЕрдиреБрд░реЛрдз рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреА рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдпрд╣ рдЙрджрд╛рд╣рд░рдг JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдерд╛ред рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП XML рдкреНрд░рд╛рд░реВрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЬрдм рдЖрдк рдЦрд╛рддреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ:
- рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╢реЗрд╖ рдбреЗрдЯрд╛
- рд▓рд┐рдВрдХ рдЬреЛ рдЬрдорд╛ / рдирд┐рдХрд╛рд╕реА / рд╣рд╕реНрддрд╛рдВрддрд░рдг / рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ
HATEOAS рдХреЗ рд╕рд╛рде, рдПрдХ REST рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдореБрдЭреЗ рдбреЗрдЯрд╛ рдФрд░ рдбреЗрдЯрд╛-рд╕рдВрдмрдВрдзрд┐рдд рджреЛрдиреЛрдВ рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╣рдореЗрдВ HATEOAS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
HATEOAS рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рдвреАрд▓реА рдпреБрдЧреНрдорди рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА REST рд╕реЗрд╡рд╛ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рд╕рднреА рд╕рдВрд╕рд╛рдзрди URL рдХреЛ рд╣рд╛рд░реНрдб-рдХреЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрджрд┐ рдЖрдк рдЙрди URL рдХреЛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╣ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╢рд┐рдерд┐рд▓ рд░реВрдк рд╕реЗ рдпреБрдЧреНрдорд┐рдд рд╣реЛрдЧрд╛ред рдпреВрдЖрд░рдЖрдИ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдХреЛрдИ рд╕рдЦреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрдВрдЧрд┐рдд рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред HATEOAS рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╖рдп:
рдПрдЪрдПрдПрд▓ - рд╣рд╛рдЗрдкрд░рдЯреЗрдХреНрд╕реНрдЯ рдПрдкреНрд▓реАрдХреЗрд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ
рдПрдХ RESTful рд╕реЗрд╡рд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдФрд░ рд▓рд┐рдВрдХ рдХреЛ рдХреИрд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред HAL рдПрдХ рдРрд╕рд╛ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬреЛ рдЖрдкрдХреЗ REST API рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╕рдВрдЧрдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

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