рд╕реНрд╡-рдкреНрд░рд▓реЗрдЦрд┐рдд рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрд╕ (рдЕрд░рдВрдЧрдмреАрдбреАрдмреА + рд╕реНрд╡реИрдЧрд░)

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

рдореИрдВ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд░реНрд╡рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдРрд╕реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ "рдкрд╛рд░рдВрдкрд░рд┐рдХ" рд░реАрд╕реНрдЯ-рдПрдкреАрдЖрдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреА рд╕рдорд╛рди рд╕реНрд╡-рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реЛред рдФрд░ рд╡рд╣, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред

рд╣рдо рдЙрди рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдФрд░ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред

ArangoDB рдПрдХ рд╣рд╛рдЗрдмреНрд░рд┐рдб, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ + рдЧреНрд░рд╛рдлрд╝-рдЙрдиреНрдореБрдЦ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред

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

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

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

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

рдЖрдЧреЗ рдХреА рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ ArangoDB рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

  1. рд╣рдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реИрд╕ рд╕рд░реНрд╡рд┐рд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ-> рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝реЗрдВ-> рдирдпрд╛ред
  2. рд╣рдо рдЦреЛрд▓реЗ рдЧрдП рдлреЙрд░реНрдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлреЙрд░реНрдо рднрд░рддреЗ рд╣реИрдВред "рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрдЧреНрд░рд╣" рдлрд╝реАрд▓реНрдб рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рддрдм рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВред
  3. рд╣рдо рдЗрдВрд╕реНрдЯреЙрд▓ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, url рдлрд╝реАрд▓реНрдб рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВ, рдЬрд┐рд╕ рдкрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд░ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

"рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрдЧреНрд░рд╣" рдлрд╝реАрд▓реНрдб (рдЕрдиреБрднрд╛рдЧ 2 рджреЗрдЦреЗрдВ) рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ POST, GET, PUT рдФрд░ DELETE рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ CRUD рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдорд╕реМрджрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдирдП рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рддрдм рдЪреБрдирд╛ рдерд╛, рдЬрдм рд╣рдо рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ (рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рдереЗ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдордиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдЬреЛрдбрд╝рд╛ред

рдЕрдм, рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ CRUD рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рд╣реИрдВ, рдФрд░ рд╣рдо API рдЯреИрдм (рд╕реЗрд╡рд╛ -> [рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд░ рдирд╛рдо] -> рдПрдкреАрдЖрдИ) рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рд╕реЗ рдЗрди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЯреИрдм рдореЗрдВ рдкрд░рд┐рдЪрд┐рдд рд╕реНрд╡реИрдЧрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдПрдХ рдмрд╛рд╣рд░реА рдорд╛рд░реНрдЧ рдкрд░ рд╕реНрд╡реИрдЧрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рди рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд URL рдХреЗ рд░реВрдк рдореЗрдВред

рдпрджрд┐ рд╣рдо POST {"рдирд╛рдо": "рдЯреЙрдо"} рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдорд┐рд▓рддреА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрднреА рддрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо ArangoDB рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

4. рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, ArangoDB рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдкрд░ рд╕рдХреНрд╖рдо рд╣реИ (рд╕реЗрд╡рд╛рдПрдБ -> [рдорд╛рдЗрдХреНрд░реЛрд╕реЙрд░реНрд╕реНрдЯ рдирд╛рдо] -> рд╕реЗрдЯрд┐рдВрдЧ-рд╕реЗрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ)

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

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ POST рдорд╛рд░реНрдЧ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИред

'use strict'; const dd = require('dedent'); const joi = require('joi'); const httpError = require('http-errors'); const status = require('statuses'); const errors = require('@arangodb').errors; const createRouter = require('@arangodb/foxx/router'); const Cat = require('../models/cat'); const cats = module.context.collection('cats'); const keySchema = joi.string().required() .description('The key of the cat'); const ARANGO_NOT_FOUND = errors.ERROR_ARANGO_DOCUMENT_NOT_FOUND.code; const ARANGO_DUPLICATE = errors.ERROR_ARANGO_UNIQUE_CONSTRAINT_VIOLATED.code; const ARANGO_CONFLICT = errors.ERROR_ARANGO_CONFLICT.code; const HTTP_NOT_FOUND = status('not found'); const HTTP_CONFLICT = status('conflict'); const router = createRouter(); module.exports = router; router.tag('cat'); router.post(function (req, res) { const cat = req.body; let meta; try { meta = cats.save(cat); } catch (e) { if (e.isArangoError && e.errorNum === ARANGO_DUPLICATE) { throw httpError(HTTP_CONFLICT, e.message); } throw e; } Object.assign(cat, meta); res.status(201); res.set('location', req.makeAbsolute( req.reverse('detail', {key: cat._key}) )); res.send(cat); }, 'create') .body(Cat, 'The cat to create.') .response(201, Cat, 'The created cat.') .error(HTTP_CONFLICT, 'The cat already exists.') .summary('Create a new cat') .description(dd` Creates a new cat from the request body and returns the saved document. `); 


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

 'use strict'; const _ = require('lodash'); const joi = require('joi'); module.exports = { schema: { // Describe the attributes with joi here _key: joi.string(), name: joi.string().description('cat`s name'), //    }, forClient(obj) { // Implement outgoing transformations here obj = _.omit(obj, ['_id', '_rev', '_oldRev']); return obj; }, fromClient(obj) { // Implement incoming transformations here return obj; } }; 


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

apapacy@gmail.com
12 рдирд╡рдВрдмрд░ 2018ред

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


All Articles