рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдз, рдЙрдирдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ

  • рдХреНрдпрд╛ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрдИ рдкрд░рд╕реНрдкрд░ рд╕реЗрд╡рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ?
  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдмрджрд▓рддреЗ рд╕рдордп рд╕реЗрд╡рд╛ рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ?
  • рдЖрдкрдХреА рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ?

рдпрджрд┐ рдЖрдкрдиреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рд╣рд╛рдБ рдореЗрдВ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рд╢рд░реНрддреЗрдВ


рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдз, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ - рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╛рда рдореЗрдВ рдЙрдирдХрд╛ рд╡рд╣реА рдЕрд░реНрде рд╣реИред

рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ


рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдФрд░ рдСрдЯреЛрдореИрдЯрд┐рдХ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рдпреВрдирд┐рдлрд╛рдЗрдб рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЯреВрд▓реНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рдбреЗрд╡рд▓рдк рдХреА рдЧрдИ рд╡реЗрдм рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред

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

рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИ?


рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд╕реЗрд╡рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЯреАрдореЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред



рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрд╡рд╛рдПрдВ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред
рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рджрд┐рди рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдЕрдкрдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред



рдпрджрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрд╡рд╛рдПрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред



рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ


рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рд╕реЗрд╡рд╛ рдЯреАрдо рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░ рджреЗрдЧреА


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

рдЙрдкрднреЛрдХреНрддрд╛ рдЯреАрдо рдХреЛ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХрд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ


рдЕрдиреНрдп рд▓реЛрдЧ рдХреНрдпреЛрдВ рдЯреВрдЯ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рдорд░рдореНрдордд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

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

рд╕реЛрдЪреЗрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП


рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╕рдмрд╕реЗ рдЙрдЪрд┐рдд рд╡рд┐рдХрд▓реНрдкред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдХреИрд╕реЗ рд░реЛрдХрд╛ рдЬрд╛рдП


рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЛ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдбрд┐рдЬрд╛рдЗрди, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдкрд░реАрдХреНрд╖рдгред

рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдбрд┐рдЬрд╛рдЗрди рдЪрд░рдг рдореЗрдВ рдШреЛрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛;
  2. рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдЕрдиреБрдмрдВрдз рдХреЗ рддрд╣рдд рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ;
  3. рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЕрдиреБрдмрдВрдзреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЬрд░реВрд░рддреЛрдВ (рд╕реАрдбреАрд╕реА) рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЛ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЧреЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреИрд╕реЗ рджрд┐рдЦрддреА рд╣реИ




рдпрд╣ рд╣рдорд╛рд░рд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдордВрдбрд▓рд┐рдпрд╛рдВ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ, рдФрд░ рддреАрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рд╣реИрдВред

рдлреНрд░рдВрдЯреЗрдВрдб рдПрдХ рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред

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

рдХреНрдпрд╛ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред



рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕реНрд░реЛрдд рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реА # рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧреЛ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рднреА рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВред рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдПрдВ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИрдВред



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

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреНрд▓рд╛рдЗрдВрдЯ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХрд╛рд░реНрдп рддрдХ


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб - рдирд┐рдпрдВрддреНрд░рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ;
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрд╡рд╛ рдХрд╛ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╣реИ;
  • рд╕реЗрд╡рд╛рдПрдВ HTTP рдкрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рддреА рд╣реИрдВред
  • рдЬрдирд░реЗрд╢рди рдХреЛ рдЯреНрдпреВрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JWT рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ред

рдкреНрд░рд╢рди


рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рд╕рд╡рд╛рд▓ рдЙрдареЗ:

  • рдХреМрди рд╕рд╛ рдЙрдкрдХрд░рдг рдЪреБрдирдирд╛ рд╣реИ;
  • рдЕрдиреБрдмрдВрдз рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
  • рдареЗрдХреЗ рдХрд╣рд╛рдВ рд░рдЦреЗрдВ;
  • рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдП;
  • рдХрд┐рд╕ рдкреАрдврд╝реА рдХреЛ рдХрд░рдирд╛ рд╣реИред

рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВред

рдХреМрди рд╕рд╛ рдЯреВрд▓ рдЪреБрдирдирд╛ рд╣реИ


рдЕрдиреБрдмрдВрдз рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рджреЛ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдЖрд░рдкреАрд╕реА рдФрд░ рдЖрд░рдИрдПрд╕рдЯреАред



RPC рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рджреВрд░рд╕реНрде рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ REST рдХреЛ HTTP рдХреНрд░рд┐рдпрд╛ рдФрд░ URL рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реНрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЖрд░рдкреАрд╕реА рдФрд░ рдЖрд░рдИрдПрд╕рдЯреА рдХреЙрд▓ рдореЗрдВ рдЕрдВрддрд░ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрд░рдкреАрд╕реА - рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓REST Representational State Transfer
, HTTP- URL
Restaurant:8080/Orders/PlaceOrderPOSTRestaurant:8080/Orders
Restaurant:8080/Orders/GetOrder?OrderNumber=1GETRestaurant:8080/Orders/1
Restaurant:8080/Orders/UpdateOrderPUTRestaurant:8080/Orders/1


рдЙрдкрдХрд░рдг


рддрд╛рд▓рд┐рдХрд╛ REST рдФрд░ RPC рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рджрд░реНрд╢рд╛рддреА рд╣реИред
рдЧреБрдгOpenapiWSDLрдХрд┐рдлрд╝рд╛рдпрддgRPC
рдПрдХ рдкреНрд░рдХрд╛рд░рдЖрд░рд╛рдоRPC
рдордВрдЪрдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдЬреБрдмрд╛рдирдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рд╡рд┐рдХрд╛рд╕ рдХреНрд░рдо *рдХреЛрдб рдкрд╣рд▓реЗ, рдХрд▓реНрдкрдирд╛ рдкрд╣рд▓реЗрдХреЛрдб рдкрд╣рд▓реЗ, рдХрд▓реНрдкрдирд╛ рдкрд╣рд▓реЗрдкрд╣рд▓реЗ рдХрд▓реНрдкрдирд╛рдХреЛрдб рдкрд╣рд▓реЗ, рдХрд▓реНрдкрдирд╛ рдкрд╣рд▓реЗ
рдкрд░рд┐рд╡рд╣рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓HTTP / 1.1рдХреЛрдИ рднреА (HTTP рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)рдЕрдкрдирд╛HTTP / 2
рд░рд╛рдпрд╡рд┐рдирд┐рд░реНрджреЗрд╢рдврд╛рдВрдЪрд╛
рдЯрд┐рдкреНрдкрдгреАрдХрдо рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛, рдмрд╣реБрдд рд╕рд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬXML рдЕрддрд┐рд░реЗрдХ, SOAP, рдЖрджрд┐редрдЙрдЪреНрдЪ рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛, рдереЛрдбрд╝рд╛ рдкреНрд░рд▓реЗрдЦрдирдФрд╕рдд рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛, рдмреЗрд╣рддрд░ рдкреНрд░рд▓реЗрдЦрди
рдХреЛрдб рдкрд╣рд▓реЗ - рдкрд╣рд▓реЗ рд╣рдо рд╕рд░реНрд╡рд░ рднрд╛рдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдЙрд╕ рдкрд░ рдЕрдиреБрдмрдВрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

рдЖрдЙрдЯрдкреБрдЯ

рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред

рдЕрдкрд╛рдЪреЗ рдереНрд░рд┐рдлреНрдЯ рдмрд╣реБрдд рд╣реА рдЖрдХрд░реНрд╖рдХ рд╣реИ рдФрд░ рд╕реАрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдЬреАрдЖрд░рдкреАрд╕реА рдХреЛ рдиреЗрдЯ рдХреЛрд░ 3.0 рдФрд░ рдиреЗрдЯ рд╕реНрдЯреИрдВрдбрд░реНрдб 2.1 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рдордп, рд╢реБрджреНрдз рдХреЛрд░ 2.2 рдФрд░ рд╢реБрджреНрдз рдорд╛рдирдХ 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреЛрдИ рдЬреАрдЖрд░рдкреАрд╕реА рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреАрдЖрд░рдкреАрд╕реА рдкреНрд░реЛрдЯреЛрдмреЙрдл рдФрд░ рдПрдЪрдЯреАрдЯреАрдкреА / 2 рдмрд╛рдЗрдирд░реА рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдПрдкреАрдЖрдИ рдЬреИрд╕реЗ рдкреЛрд╕реНрдЯрдореИрди, рдЖрджрд┐ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рд╕реАрдорд╛ рд╕рдВрдХреАрд░реНрдг рд╣реЛ рд░рд╣реА рд╣реИред рдХреБрдЫ JMeter рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдЬреАрдЖрд░рдкреАрд╕реА рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

OpenAPI рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдкрдбреЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ REST рдФрд░ рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдмрд╣реБрддрд╛рдпрдд рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред

OpenAPI рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг


рддрд╛рд▓рд┐рдХрд╛ OpenAPI рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рджрд┐рдЦрд╛рддреА рд╣реИред
рдЙрдкрдХрд░рдгswashbuckleNSwagOpenapitools
рд╕рдорд░реНрдерд┐рдд рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕рдВрд╕реНрдХрд░рдгOpenApi v2, v3 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдХреЛрдб рдкрд╣рд▓рд╛ рд╕рдорд░реНрдердирд╡рд╣рд╛рдБ рд╣реИрд╡рд╣рд╛рдБ рд╣реИрдирд╣реАрдВ
рд╕рдорд░реНрдерд┐рдд рд╕рд░реНрд╡рд░ рднрд╛рд╖рд╛рдПрдБрдирд╣реАрдВрд╕реА #рдмрд╣реБрдд рд╕рд╛рд░рд╛
рд╕рдорд░реНрдерд┐рдд рдЧреНрд░рд╛рд╣рдХ рднрд╛рд╖рд╛рдПрдБрдирд╣реАрдВC #, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, AngularJS, рдХреЛрдгреАрдп (v2 +), window.fetch APIрдмрд╣реБрдд рд╕рд╛рд░рд╛
рдЬрдирд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕рдирд╣реАрдВрд╡рд╣рд╛рдБ рд╣реИрд╡рд╣рд╛рдБ рд╣реИ
рд░рд╛рдпрдирдЧреЗрдЯ рдкреИрдХреЗрдЬNuget рдкреИрдХреЗрдЬ + рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛


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

OpenApiTools рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрдкрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рдХреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд▓рд╛рдн рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред

NSwag рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ Nuget рдкреИрдХреЗрдЬ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рдорд╛рд░реА рдЬрд╝рд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: c # рдореЗрдВ рдХреЛрдб рдХрд╛ рдкрд╣рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдкреАрдврд╝реА рдХреЛрдбред рд╣рдо рдЗрд╕рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред

рдареЗрдХреЗ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд╣рд╛рдВ рд╕реЗ рдХрд░реЗрдВред рдЕрдиреБрдмрдВрдзреЛрдВ рддрдХ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ


рдЕрдиреБрдмрдВрдз рднрдВрдбрд╛рд░рдг рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВред рд╕рдорд╛рдзрд╛рди рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред

  • рдкреНрд░рджрд╛рддрд╛ рд╕реЗрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЪреБрдиреЗрдВред
  • рдПрдХ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдПрдХ рд╡реИрдз рд╡рд┐рдХрд▓реНрдк рд╣реИ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╕рдорд╛рди рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИрдВред рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ, рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
  • рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА - рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИрдВ, рддреЛ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреБрдХрд╕рд╛рди рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред
  • рд╕реЗрд╡рд╛ рдПрдкреАрдЖрдИ (swagger.ui, swaggerhub) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ - рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдЬреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

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

рдЖрдк рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ


рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЛ рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрд░рдирд╛ рд╣реИред
рдпрджрд┐ рдЕрдиреБрдмрдВрдз рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрд╡рд╛рдПрдВ рдЕрдиреБрдмрдВрдз рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдХреЛрдб рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рд╣рдордиреЗ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдиреБрдмрдВрдз рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рд╕реЗрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдмрд╛рдж рд╣реА рдкреАрдврд╝реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХрд╣рд╛рдВ рд░рдЦреЗрдВ


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

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд╛рдн:

  • рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рдХрд░реАрдм рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдЕрджреНрдпрддрд┐рдд рд╣реИ;
  • рдЙрдкрднреЛрдХреНрддрд╛ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рднреАрддрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдиреБрдХрд╕рд╛рди:

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

рд╣рдо NSwag рдЙрдкрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ


рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ


NSwag рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

[Microsoft.AspNetCore.Mvc.Routing.Route("[controller]")]  //  url
[Microsoft.AspNetCore.Mvc.ApiController] //     
public class DescriptionController : ControllerBase {
[NSwag.Annotations.OpenApiOperation("GetDescription")] //    
[Microsoft.AspNetCore.Mvc.ProducesResponseType(typeof(ConversionDescription), 200)] //    200  
[Microsoft.AspNetCore.Mvc.ProducesResponseType(401)] //    401
[Microsoft.AspNetCore.Mvc.ProducesResponseType(403)] //    403
[Microsoft.AspNetCore.Mvc.HttpGet("{pluginName}/{binaryDataId}")] //  url
public ActionResult<ConversionDescription> GetDescription(string pluginName, Guid binaryDataId) { 
 // ... 
}

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, NSwag MIME рдЯрд╛рдЗрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдСрдХреНрдЯреЗрдЯ-рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рддрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

[Microsoft.AspNetCore.Mvc.Route("[controller]")]
[Microsoft.AspNetCore.Mvc.ApiController]
public class FileController : ControllerBase {
[NSwag.Annotations.OpenApiOperation("SaveFile")]
[Microsoft.AspNetCore.Mvc.ProducesResponseType(401)]
[Microsoft.AspNetCore.Mvc.ProducesResponseType(403)]
[Microsoft.AspNetCore.Mvc.HttpPost("{pluginName}/{binaryDataId}/{fileName}")]
[OurNamespace.FileUploadOperation] //  
public async Task SaveFile() { // ... }

рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░


рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм NSwag рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ред

рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, NSwag OpenApiOperationProcessorAttribute рдФрд░ IOperationProcessor рдХрдХреНрд╖рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдирд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдмрдирд╛рдпрд╛:

  • FileUploadOperationAttribute: OpenApiOperationProcessorAttribute
  • FileUploadOperationProcessor: IOperationProcessor

рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдФрд░ рдкрдврд╝реЗрдВред

рдХрд▓реНрдкрдирд╛ рдФрд░ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП NSwag рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ 3 рдореБрдЦреНрдп рдЦрдВрдб:

  • рд░рдирдЯрд╛рдЗрдо - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдиреЗрдЯ рд░рдирдЯрд╛рдЗрдоред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NetCore22;
  • documentGenerator - рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ;
  • codeGenerators - рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

NSwag рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рдХреЙрдиреНрдлрд┐рдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВ

рд╕рд░реНрд╡рд┐рд╕ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд╕реЗрдореНрдмрд▓ рдХрд░рдиреЗ рдкрд░ рд╣рдо рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ


рддрд╛рдХрд┐ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдмрд╛рдж, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВ:

  1. рд╣рдордиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдмрдПрдкреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ред
  2. рд╣рдордиреЗ Nswag CLI - Nswag.json (рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд) рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рд▓рд┐рдЦрд╛ рдерд╛ред
  3. рд╣рдордиреЗ csproj рд╕рд░реНрд╡рд┐рд╕ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ PostBuild Target рд▓рд┐рдЦрд╛ рд╣реИред

<Target Name="GenerateWebApiProxyClientтАЬ AfterTargets="PostBuildEvent">
<Exec Command="$(NSwagExe_Core22) run nswag.jsonтАЭ/>

  • $ (NSwagExe_Core22) nswag.json рдЪрд▓рд╛рддреЗ рд╣реИрдВ - nswag.json рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде NSWag рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ .bet runtetine netCore 2.2 рдкрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред

рд▓рдХреНрд╖реНрдп рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:

  1. NSwag рдПрдХ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕реЗрд╡рд╛ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рддрд╛ рд╣реИред
  2. NSwag рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИред

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

NSwag рдЖрдкрдХреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ / рдХреЛрдб рдкреАрдврд╝реА рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

JWT рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ


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

рдпрд╣рд╛рдБ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА jwt.io ред

рдХрд╛рд░реНрдп рдирд┐рд╡рд░реНрддрдорд╛рди HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд╣реЗрдбрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдмрд╛рд▓рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, NSwag рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ - CreateHttpRequestMessageAsync рд╡рд┐рдзрд┐ред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ HTTP рдЕрдиреБрд░реЛрдз рддрдХ рдкрд╣реБрдБрдЪ рд╣реИред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
protected Task<HttpRequestMessage> CreateHttpRequestMessageAsync(CancellationToken cancellationToken) {
      var message = new HttpRequestMessage();

      if (!string.IsNullOrWhiteSpace(this.AuthorizationToken)) {
        message.Headers.Authorization =
          new System.Net.Http.Headers.AuthenticationHeaderValue(BearerScheme, this.AuthorizationToken);
      }

      return Task.FromResult(message);
    }


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


рд╣рдордиреЗ OpenAPI рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рдХрд╕рд┐рдд рд╣реИрдВред

OpenAPI рдФрд░ GRPC рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖:

OpenAPI

  • рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреНрд░рд┐рдпрд╛ рд╣реИ;
  • , ;
  • ;
  • .

GRPC

  • , URL, HTTP ..;
  • OpenAPI;
  • ;
  • ;
  • HTTP/2.

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рдЯрдХрд╛ рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

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

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

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг


рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпреЛрдВ?


рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж, рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА рдПрдХ рд╕реБрд╕рдВрдЧрдд, рдкрд░рд┐рдЪрд╛рд▓рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рди рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗред

рд╕рдорд╛рдзрд╛рди рдХреЗ рд╡рд┐рдХрд▓реНрдк


рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд┐рдирд╛


рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдЯреАрдо рд╕реНрд╡рдпрдВ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рддреА рд╣реИред



рдпрджрд┐ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдЯреАрдо рдХреЗ рдкрд╛рд╕ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрд╡рд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХрдорд┐рдпреЛрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ рддреЛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдмрд┐рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдЯреАрдо рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИред



рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреА рдХрдорд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • рдХрд┐рд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ;
  • рдЬрдм рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП;
  • рдХрдм рддрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рдХрд┐рд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ OpeanAPI рдФрд░ рдЬреАрдЖрд░рдкреАрд╕реА рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
gRPCOpenapi
рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдкреНрд░реЛрдЯреЛрдмреБрдлрд╝ рд╕реНрддрд░ рдкрд░, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреИрдХреЗрдЬ [packageName] рд╣реИред [рд╕рдВрд╕реНрдХрд░рдг]рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕реНрддрд░ рдкрд░, рдмреЗрд╕рдкрд╛рде (URL рдХреЗ рд▓рд┐рдП) рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ
рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрджрд╛рд╡рдирдд рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд╛рдВ, рд▓реЗрдХрд┐рди C # рдХреЗ рддрд╣рдд рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛рд╣рд╛рдВ, рдЗрд╕реЗ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
ред NSwag рдкрд╣рд▓реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдкрджрд╛рд╡рдирдд рд╡рд┐рд╢реЗрд╖рддрд╛рдЕрдкреНрд░рдЪрд▓рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрд╣рд╛рдВ, рдЗрд╕реЗ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
ред NSwag рдкрд╣рд▓реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдкрджрд╛рд╡рдирдд рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рдЕрдм рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рджреЛрдиреЛрдВ рдЙрдкрдХрд░рдг рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдкреНрд░реЗрдХреНрдЯреЗрдб рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБред

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

рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрдм рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдП


рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЕрдиреБрдмрдВрдзреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдиреБрдмрдВрдз рдХреЗ рдирдП рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрдЧрддрддрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ?

  • OpenAPI рдХреЗ рд▓рд┐рдП 2 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ github.com/Azure/openapi-diff рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Azure opeanapi-diff рдЙрдкрдХрд░рдг рд╣реИ ;
  • рдЬреАрдЖрд░рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛, рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг рдиреАрддрд┐рдпрд╛рдВ рд╣реИрдВ;
  • рд╕рд╛рдорд╛рдиреНрдп github.com/grpc/grpc/blob/master/doc/versioning.md;
  • under .Net docs.microsoft.com/en-us/aspnet/core/grpc/versioning?view=aspnetcore-3.1 ред

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдм рддрдХ


рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдХреЛрдИ рд╕рд╣реА рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИред

рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреМрди рдХрд░рддрд╛ рд╣реИред

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

рддреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

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

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╕рд▓рд╛рд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдзреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

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

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


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

рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдмрдВрдз рдФрд░ рд╕реАрдбреАрд╕реА


рдЗрд╕ рдЦрдВрдб рдХреЛ рдЕрд▓реМрдХрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЧрдВрднреАрд░ рд╢рд░реНрдд рдирд╣реАрдВ рд╣реИрдВред

рдЙрдкрднреЛрдХреНрддрд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдЕрдиреБрдмрдВрдз (рд╕реАрдбреАрд╕реА)


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

  1. рдЙрдкрднреЛрдХреНрддрд╛ рдЕрдиреБрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
  2. рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдЗрд╕ рдЕрдиреБрдмрдВрдз рдХреЛ рдШрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
  3. рдЗрд╕ рдЕрдиреБрдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрднреЛрдХреНрддрд╛ рдФрд░ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдореЗрдВ CI рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдиреЗ рдЕрдиреБрдмрдВрдз рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рд╕рдВрдзрд┐


PACT рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдкреНрд░рджрд╛рддрд╛ рд╕реНрдЯрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рджреЛрдиреЛрдВ рд╕реНрдЯрдмреНрд╕ рдПрдХ рдкреИрдХреНрдЯ рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдареВрдВрда рдирд┐рд░реНрдорд╛рдг рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡реИрдЧрд░ рдореЙрдХ рд╡реИрд▓рд┐рдбреЗрдЯрд░ bitbucket.org/atlassian/swagger-mock-validator/src/master рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдкреИрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


  • рд╕рдВрдзрд┐ рджрд▓рд╛рд▓ - рд╕рдВрдзрд┐ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрди рд╕рдорд╛рдзрд╛рди docs.pact.io/pact_broker
  • рд╕рдВрдзрд┐ рдЕрднреА рддрдХ рдЬреАрдЖрд░рдкреАрд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд░реЛрдбрдореИрдк рд╕рдВрдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ pact.canny.io ред
  • PACT рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА docs.pact.io рдкрд░ рджреЗрдЦреЗрдВ ред
  • рдЖрдкрдХреЛ PACT docs.pact.io/faq/convinceme рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП



CDC рдХреЛ CI рдореЗрдВ рдХреИрд╕реЗ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


  • рдкреИрдХреНрдЯ + рдкреИрдХреНрдЯ рдмреНрд░реЛрдХрд░ рдХреА рддреИрдирд╛рддреА рд╕реНрд╡рдпрдВ;
  • рдПрдХ рддреИрдпрд╛рд░ рдкреИрдХреНрдЯ рдлреНрд▓реЛ рд╕рд╛рд╕ рд╕рдорд╛рдзрд╛рди рдЦрд░реАрджред

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


рд╕рдВрд╡рд┐рджрд╛ рдЕрдиреБрдкрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЬрдм рдЕрдиреБрдмрдВрдзреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЙрдореНрдореАрджреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдЙрдкрдХрд░рдг рддрдм рдЙрдкрдпреБрдХреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдЧреНрд░рд╛рд╣рдХ - рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЕрдбреЙрдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреГрдердХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЕрдВрджрд░ рд╣реА рд╕рдВрднрд╡ рд╣реИред

рдпрджрд┐ рдЖрдк рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдЧреНрд░рд╛рд╣рдХ рдХреМрди рд╣реИрдВ, рддреЛ рдкреИрдХреНрдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред

All Articles