рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдПрдХ рдФрд░ рдУрдкрдирдПрдкреАрдЖрдИ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди v3 рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдпрд╣ рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ) рд╕реЗ рдПрдХ рдореБрдлреНрдд рдХреЛрдб рдЬрдирд░реЗрдЯрд░ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрджрд┐рдо рдФрд░ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдХреБрд╢рд▓ рдкреАрдврд╝реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд┐рднрд┐рдиреНрди JSON рд╕реНрдХреАрдорд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП , рдЬреИрд╕реЗ рдХрд┐ oneOf / anyOf / allOf , рдЖрджрд┐ред (рд╕реНрд╡реИрдЧрд░ рдХреЗ рдореВрд▓ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ)ред рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ рд╕рд╛рдордиреЗ, рдкреАрдЫреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рд╕реНрдХреАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЕрдм рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рддреИрдпрд╛рд░ рд╣реИ - рдпрд╣ рдПрдорд╡реАрдкреА рдЪрд░рдг рдореЗрдВ рд╣реИред рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдлреНрд░рдВрдЯ-рдПрдВрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ (рдЕрдм рддрдХ рдХреЛрдгреАрдп) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдШрдЯрдирд╛рдХреНрд░рдо рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдУрдкрдирдПрдкреАрдЖрдИ v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд░рд╛рд╕реНрддреЗ рдХреЗ рд╕рд╛рде, рдореИрдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдФрд░ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореЗрд░реА рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдП рд╣реИрдВред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмреИрдХрд╕реНрдЯреЛрд░реА рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╕реНрдкреЙрдЗрд▓рд░ рдореЗрдВ рдЫрд┐рдкрд╛ рджрд┐рдпрд╛ рдерд╛ рддрд╛рдХрд┐ рддрдХрдиреАрдХреА рднрд╛рдЧ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рди рд╣реЛред
рд╕рд╛рдордЧреНрд░реА
- рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕
- рд╡рд┐рд╡рд░рдг
- рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ
- рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ
- рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- OAS рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рднреАрддрд░ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдЕрдкрдШрдЯрди
- рдиреЗрд╕реНрдЯреЗрдб рдЕрдкрдШрдЯрди
- REST API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдГ-рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдПрдБ
- рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
- рд╕реЗрд╡рд╛ рдкреАрдврд╝реА
- рдЙрддреНрдкрдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп
рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдХрд░реЗрдВ (рдЫреЛрдбрд╝реЗрдВ)рдпрд╣ рд╕рдм рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реБрдЖ рдерд╛ - рддрдм рдореИрдВрдиреЗ рдПрдХ рдбреЗрдЯрд╛ рдорд╛рдЗрдирд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдВрдкрдиреА рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдлрд╝реНрд░рдВрдЯреЗрдВрдб (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ + рдПрдВрдЧреНрд▓реЛ) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдерд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ (30 рдпрд╛ рдЕрдзрд┐рдХ) рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдереАрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рдереЗред рдХрдВрдкрдиреА рдмрдврд╝ рд░рд╣реА рдереА, рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛рдлреА рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рдерд╛ред рд╕реАрдорд╛ рдХреЛ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░ рд╣реЛрдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдЧрдгрдирд╛ рд╕рд╛рдордиреЗ рдФрд░ рдкреАрдЫреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рджреЛрд╣рд░рд╛рдИ рдЧрдИ рдереАрдВред рдпрд╣реА рд╣реИ, рдпрд╣ рдорд╛рдорд▓рд╛ рдерд╛ рдЬрдм OpenAPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдореБрдЭреЗ рдХрдВрдкрдиреА рдореЗрдВ рдПрдХ рдЕрд╡рдзрд┐ рдорд┐рд▓реА рдЬрдм рдХреБрдЫ рд╣реА рдорд╣реАрдиреЛрдВ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдиреЗ рдПрдХ рдПрдХрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдмреИрдХ, рдлреНрд░рдВрдЯ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрд░ рд╡рд┐рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХрд╛ рдЖрдзрд╛рд░ рдмрди рдЧрдпрд╛, рдЬреЛ рд╡реЗрдм рдмреИрдХрдПрдВрдб рдХреЗ рд╡реНрдпрд╛рдкрдХ рдмреИрдХ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдерд╛ред OpenAPI рд╕рдВрд╕реНрдХрд░рдг рдХреЛ "рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП" рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ - рдлрд┐рд░ рднреА рдХрд╛рдлреА рдпреБрд╡рд╛ v3.0
рдпрд╣ рдЕрдм рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ YML / JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рдерд╛, рдФрд░ рдПрдиреЛрдЯреЗрдЯрд░реНрд╕ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдШрдЯрдХреЛрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдФрд░ рдЧреБрдгреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдордВрдЪ рдХреА DDD рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдпреЛрдЬрд┐рдд рдХреА рдЧрдИ рдереАред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд▓реЗрдХреНрдЯрд░ рдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП OAS рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ред рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд╛ рдкреНрд░рд╡рд╛рд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдбрд┐рдЬрд╛рдЗрди-рдкреНрд░рдердо рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Yandex.Money рдХрдВрдкрдиреА рдХреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдлрд░реНрд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдЧрдИ рд╣реИ
рдбрд┐рдЬрд╝рд╛рдЗрди рдлрд░реНрд╕реНрдЯ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рд▓реЗрдХрд┐рди рдПрдХ рдирдИ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдИ - рдХреЛрдб рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ред рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдиреЗ рдХрдИ рджрд░реНрдЬрди рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рджрд░реНрдЬрдиреЛрдВ (рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ) рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдерд╛: рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рдЖрд░рдИрдПрд╕рдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реЗрд╡рд╛рдПрдВ рдЖрджрд┐ред рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╣рд╛рдирд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдПрдХ рдпрд╛ рджреЛ рд╕реНрдкреНрд░рд┐рдВрдЯ рдиреЗ рддрд╕реНрд╡реАрд░ рдХреЛ рдмрд╣реБрдд рдмрджрд▓ рджрд┐рдпрд╛; рдХрдИ рдХрд╣рд╛рдирд┐рдпреЛрдВ рдФрд░ рдорд╛рдирд╡ рдХрд╛рд░рдХ рдХреЗ рд╡рд┐рд▓рдп рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝реЗрдВред рджрд┐рдирдЪрд░реНрдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рдзрдордХреА рджреА, рдФрд░ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд▓рдЧ рд░рд╣рд╛ рдерд╛ - рдЖрдкрдХреЛ рдХреЛрдб рдкреАрдврд╝реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, OAS рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдм рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕ рди рдХрд┐рдпрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рдерд╛ред
рд╕реАрдорд╛рдВрдд рдЙрддреНрдкрд╛рджрди рдЪрдХреНрд░ рдХреЗ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдиреНрдп рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рджрд░реНрджрдирд╛рдХ рдкрд░рд┐рд╡рд░реНрддрди рдорд╣рд╕реВрд╕ рд╣реБрдПред REST API рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рдмреИрдХрдПрдВрдб рд╡рд╛рддрд╛рд╡рд░рдг рддрдп рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ "рдбрд┐рдЬрд╝рд╛рдЗрди рдлрд╝рд░реНрд╕реНрдЯ" рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рдмрд╛рдж рднреА, рдЬрдбрд╝рддрд╛ рдмрдиреА рд░рд╣реА; рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдХрдо рд╕реНрдкрд╖реНрдЯ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рд╢реБрд░реВ рд╕реЗ рд╣реА рд╕рдордЭрддрд╛ рдерд╛, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд┐рдЯреНрдЯреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ - рдЬрдм рдПрдХ "рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ" рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдмрд╛рдд рд╕рд┐рд░реНрдл рд╢реБрд░реБрдЖрдд рдереАред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдереА; рдореИрдВ рдмрд╕ рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдореИрдВ рдирд┐рд░рд╛рд╢ рдерд╛ред рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ: OAS рд╕рдВрд╕реНрдХрд░рдг 3.0, рдЬрд┐рд╕рдХреЗ рд╕рд╣рд╛рд░реЗ, рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдХреЛрдИ рднреА рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рдерд╛, рдФрд░ рд╕реНрд╡рдпрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ - рдЙрд╕ рд╕рдордп (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдпрд╣ рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдерд╛), рдореИрдВ рджреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛: рд╕реНрд╡реИрдЧрд░ рд╕реЗ рдФрд░ Microsoft рд╕реЗ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ )ред рдкрд╣рд▓реЗ рдореЗрдВ, OAS 3.0 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЧрд╣рд░реЗ рдмреАрдЯрд╛ рдореЗрдВ рдерд╛ред рджреВрд╕рд░реЗ рдиреЗ рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 2.x рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рдЕрд╕реНрдкрд╖реНрдЯ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдирд╣реАрдВ рдерд╛ред рд╡реИрд╕реЗ, рдореИрдВ рд╕реНрд╡реИрдЧрд░ 2.0 рдкреНрд░рд╛рд░реВрдк рдХреЗ рдкрд░реАрдХреНрд╖рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рднреА Microsoft рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рд╕реНрд╡реИрдЧрд░ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди $ рд░реЗрдл рд▓рд┐рдВрдХ рд╡рд╛рд▓реА рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛ рдПрдХ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдИ! тАЭ, рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдирд┐рд░реНрднрд░рддрд╛ рдиреЗ рдЗрд╕реЗ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ред рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдП - рд╡реЗ рджрд┐рдЦрд╛рд╡реЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдереЗ, рдФрд░ рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рд╣рд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХреАрдВред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдирдкреАрдПрдо-рдЙрдиреНрдореБрдЦ рд╕реАрдЖрдИ / рд╕реАрдбреА рдореЗрдВ рдЬрд╛рд░ рдлрд╛рдЗрд▓ рдХрд╛ рдПрдХреАрдХрд░рдг рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛: рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдерд╛, рдЬреЛ 13 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХрд╛ рд╡рдЬрди рд▓рдЧрддрд╛ рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдПрдХ рдмреНрд░реЗрдХ рд▓рд┐рдпрд╛ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
рд▓рдЧрднрдЧ рдкрд╛рдБрдЪ рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХрд╛ рдореБрджреНрджрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдард╛ред рдореБрдЭреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдерд╛, рдФрд░ рд╕рд╛рде рд╣реА рдореИрдВ рдкреБрд░рд╛рдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд░реАрд╕реНрдЯ рдПрдкреАрдЖрдИ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдЖрдХрд▓рди рдЖрд╢рд╛рд╡рд╛рджреА рдирд╣реАрдВ рдерд╛: рдПрдХ рдЖрджрдореА-рд╕рдкреНрддрд╛рд╣ рд╕реЗ рджреЛ рддрдХ - рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЖрд░рдИрдПрд╕ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдЙрджрд╛рд╕ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред рджреВрд╕рд░реА рдУрд░, рдореБрдЭреЗ рдХрднреА рднреА рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХрд╛ рд╣рд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдХрдо рд╕рдордп рд▓рдЧрд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдерд╛: рд▓рд╛рдн рд╕рдВрджрд┐рдЧреНрдз рд╣реИ, рдЬреЛрдЦрд┐рдо рдорд╣рд╛рди рд╣реИрдВред рдХреЛрдИ рднреА рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдореИрдВрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕ рдмреАрдЪ, рдордИ рдХреА рдЫреБрдЯреНрдЯрд┐рдпрд╛рдВ рдирдЬрд╝рджреАрдХ рдЖ рд░рд╣реА рдереАрдВ, рдФрд░ рдХрдВрдкрдиреА рдиреЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрдИ рджрд┐рдиреЛрдВ рддрдХ "рдмрдХрд╛рдпрд╛" рджрд┐рдпрд╛ред рджреЛ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЬреЙрд░реНрдЬрд┐рдпрд╛ рдХреЗ рд╕рднреА рдХрд╛рдордХрд╛рдЬреА рдЕрдиреБрднрд╡реЛрдВ рд╕реЗ рджреВрд░ рднрд╛рдЧ рдЧрдпрд╛, рдЬрд╣рд╛рдВ рдореИрдВ рдПрдХ рдмрд╛рд░ рд▓рдЧрднрдЧ рдПрдХ рд╡рд░реНрд╖ рддрдХ рд░рд╣рддрд╛ рдерд╛ред
рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдФрд░ рджрд╛рд╡рддреЛрдВ рдХреЗ рдмреАрдЪ, рдореБрдЭреЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдереА, рдФрд░ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдлреИрд╕рд▓рд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡реЗрдХ рдкрд╛рд░реНрдХ рдХреЗ рдкрд╛рд╕ рдЧрд░реНрдорд┐рдпреЛрдВ рдХреЗ рдХреИрдлреЗ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрдХ рдерд╛, рдФрд░ рдореИрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдкреАрдЯрд░ рдкрд░ рд▓реМрдЯ рдЖрдпрд╛ред рдлрд┐рд░ рдПрдХ рдФрд░ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ "рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ" рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред
рд╢реБрд░реВ рд╕реЗ рд╣реА, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЦреБрд▓реЗ рд╕рдордп рдореЗрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЛ рдЦреЛрд▓ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдХрд╛рдо рдХреЗ рдорд╕реМрджреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рдВрд╢реЛрдзрди / рд░рди-рдЗрди рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЪрд▓рд╛ рдЧрдпрд╛; рдФрд░ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣рддрд╛ рдХрд┐ рд╡реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдереЗред рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдореИрдВрдиреЗ Redoc / Swagger рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдерд╛: рдХреЛрдб рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛, рдмрд╢рд░реНрддреЗ рдХрд┐ рдХреЛрдб рд╣рдореЗрд╢рд╛ рдЕрджреНрдпрддрд┐рдд рд╣реЛ рдФрд░ рдЙрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рдПред рдЬрд▓реНрдж рд╣реА, рдореИрдВрдиреЗ рдЕрдкрдиреА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рдХрд╛рд╕ рдХреЗ, рдЬрдм рддрдХ рдХрд┐ рдПрдХ рд╕рд╣рдХрд░реНрдореА (рдЕрдм рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрдиреНрдп рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛) рддрдХ рдореЗрд░реА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЛ "рд╕реНрдХреЛрд░" рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА (рд╡рд╣ рднреА рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдП)ред
рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рдерд╛, рдФрд░ рдХрдИ рдорд╣реАрдиреЛрдВ рддрдХ рдореБрдЭреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА: рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди , рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреБрдирд░реНрдЧрдардиред рдЕрдм рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред
рд╡рд┐рд╡рд░рдг
рдлрд┐рд▓рд╣рд╛рд▓, рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ @ рдПрдирдкреАрдЬреА @codegena
рдореЗрдВ рдПрдХреАрдХреГрдд рддреАрди рдПрдирдкреАрдПрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдПрдХ рдЖрдо рдореЛрдиреЛ-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ :
рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ
CLI рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ NodeJS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
npm i @codegena/oapi3ts, @codegena/ng-api-service, @codegena/oapi3ts-cli
рдлрд┐рд░, рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ js рдлрд╝рд╛рдЗрд▓ (рдЙрджрд╛ред update-typings.js
ред update-typings.js
) update-typings.js
:
"use strict"; var cliLib = require('@codegena/oapi3ts-cli'); var cliApp = new cliLib.CliApplication; cliApp.createTypings();
рдФрд░ рддреАрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:
node ./update-typings.js --srcPath ./specs/todo-app-spec.json --destPath ./src/lib --separatedFiles true
destPath
рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрд╕реА рддрд░рд╣ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рдЬреЗрдирд░реЗрдЯрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ , рдФрд░ рдпрд╣ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдПрдирдкреАрдПрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЪрд▓рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд▓реЗрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ
рдЖрдЧреЗ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреНрдпрд╛ рдорд┐рд▓реЗрдЧрд╛: рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред рдПрдХ рджреГрд╢реНрдп рд╕рд╣рд╛рдпрддрд╛ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХреЛрдб рд╣реЛрдЧрд╛ред рдЗрд╕рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рдмреИрдХреЗрдВрдб ( рдиреЗрд╕реНрдЯрдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░) рдФрд░ рдПрдХ рдлреНрд░рдВрдЯреЗрдВрдб ( рдХреЛрдгреАрдп рдкрд░)ред рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рднреА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдХреЛрдгреАрдп рдФрд░ / рдпрд╛ NestJS рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рд╕рдмрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджреНрдпрдкрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХрддрдо рд╕рд░рд▓реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрдХрдПрдВрдб рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ), рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИрдВред рдпрд╣ рд▓рдЧрднрдЧ 80-85% рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди "рдЦрддреНрдо" рд╣реЛрдиреЗ рдореЗрдВ рджреЗрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╛рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рд╣реИред
рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ OpenAPI рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ ) рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдЦрд░реЛрдВрдЪ рд╕реЗ рдХреБрдЫ рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдо рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо - рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╣рдо рдпрд╛ рддреЛ рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ рдпрд╛ рдЙрдирдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдкрдиреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИ, рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВ; рдФрд░ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдИрдбреАрдИ рдФрд░ / рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдЧрд╛ред
рд╣рдорд╛рд░реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдорд╛рдкрджрдВрдбреЛрдВ, рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдЙрддреНрддрд░реЛрдВ рдХреЗ рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ - рдФрд░ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
@Controller('group') export class AppController {
рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ ( RewriteGroupParameters
), рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп ( RewriteGroupRequest
) рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп ( RewriteGroupResponse<T>
) RewriteGroupResponse<T>
рдиреЗрд╕реНрдЯрдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд╣рдо рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд╛рдн рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
- рдпрджрд┐ рд╣рдо рдирд╖реНрдЯ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░
groupId
рдХреЗ рдирд╛рдо рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ groupId
рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдореЗрдВ рддреБрд░рдВрдд рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

- рдпрджрд┐ рдпрд╣ .appService.rewriteGroup (groupId, body) рд╡рд┐рдзрд┐ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рд╣рдо рдкрд╛рд╕ рдХрд┐рдП рдЧрдП
body
рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐ рдпрд╛ рд╕реЗрд╡рд╛ рдкрджреНрдзрддрд┐ рдХрд╛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо рддреБрд░рдВрдд рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рдЬрд╛рдПрдВрдЧреЗред рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реЗрд╡рд╛ рдкрджреНрдзрддрд┐ рдХреА рдЗрдирдкреБрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ RewriteGroupRequest
рд╕реЗ RewriteGroupRequest
, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рд╕реЗрд╡рд╛ рдкрджреНрдзрддрд┐ рдмрджрд▓ рджреА рдЬрд╛рддреА рд╣реИ, рдФрд░ ToDoGroup
рдмрдЬрд╛рдп ToDoGroup
рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ ToDoGroupBlank
, рддреЛ IDE рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рддреБрд░рдВрдд рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рджрд┐рдЦрд╛рдПрдЧрд╛:

- рдЙрд╕реА рддрд░рд╣, рд╣рдо рд▓реМрдЯреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╕рдлрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдЕрдЪрд╛рдирдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рдФрд░
200
рдмрдЬрд╛рдп 202
рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдкрддрд╛ RewriteGroupResponse
, рдХреНрдпреЛрдВрдХрд┐ RewriteGroupResponse
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ :

рдЕрдм рдЖрдЗрдП рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рдЫреЛрд░ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдЬреЛ рдПрдХ рдФрд░ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
protected initSelectedGroupData(truth: ComponentTruth): Observable<ComponentTruth> { return this.getGroupsService.request(null, { isComplete: null, withItems: false }).pipe( pickResponseBody<GetGroupsResponse<200>>(200, null, true), switchMap<ToDoGroup[], Observable<ComponentTruth>>( groups => this.loadItemsOfSelectedGroups({ ...truth, groups }) ) ); }
рдЪрд▓реЛ рдЦреБрдж рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ рдФрд░ рдХрд╕реНрдЯрдо рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рдСрдкрд░реЗрдЯрд░ pickResponseBody
рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ GetGroupsResponse
рдЯрд╛рдЗрдк рдХреЗ рд╢реЛрдзрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ RxJS рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдСрдкрд░реЗрдЯрд░ рдЗрд╕рдХреЗ рдмрд╛рдж ToDoGroup[]
рдХрд╛ рдЗрдирдкреБрдЯ рдкрд░рд┐рд╢реЛрдзрди рдХрд░рддрд╛ рд╣реИред ToDoGroup[]
рдпрджрд┐ рдпрд╣ рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдХреЗрддрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдЯрд╛рдЗрдк рдорд┐рд▓рд╛рди рд╕реЗ рднреА рдирд┐рдпрдВрддреНрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рд░реВрдк рдЕрдЪрд╛рдирдХ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рдзреНрдпрд╛рди рд╕реЗ рдирд╣реАрдВ рд╣рдЯреЗрдЧрд╛

рдФрд░ рд╣рд╛рдВ, рдЗрд╕ this.getGroupsService.request
рдХреЗ рдХреЙрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрддреНрдкрдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ, рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдлреНрд░рдВрдЯреЗрдВрдб, рдмреИрдХрдПрдВрдб рдЗрддреНрдпрд╛рджрд┐ред рдпрджрд┐ рдмреИрдХрдПрдВрдб рдФрд░ рдлреНрд░рдВрдЯреЗрдВрдб рдПрдХ рд╣реА рдореЛрдиреЛ-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдВрдЧрдд рдЗрдХреЛ-рдкрд░реНрдпрд╛рд╡рд░рдг рд╣реИ, рддреЛ рд╡реЗ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рднрд▓реЗ рд╣реА рдмреИрдХрдПрдВрдб рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдУрдПрдПрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
OAS рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рднреАрддрд░ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдЕрдкрдШрдЯрди
рд╕рдВрднрд╡рддрдГ, рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЖрдкрдиреЗ ToDoGroupBlank
, ToDoGroup
рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде RewriteGroupResponse
рдФрд░ GetGroupsResponse
ред рджрд░рдЕрд╕рд▓, RewriteGroupResponse
рдХреЗрд╡рд▓ ToDoGroup
, HttpErrorBadRequest
, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдирд╛рдо рд╣реИред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ ToDoGroup рдФрд░ HttpErrorBadRequest рджреЛрдиреЛрдВ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреА рд╕реНрдХреАрдо рд╣реИрдВред rehemiteGroup рдПрдВрдбрдкреЙрдЗрдВрдЯ (рд╕реАрдзреЗ рдпрд╛ рдмрд┐рдЪреМрд▓рд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди редschems рд╕реЗрдХреНрд╢рди рд╕реЗрдХреНрд╢рди:
"responses": { "200": { "description": "Todo group saved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToDoGroup" } } } }, "400": { "$ref": "#/components/responses/errorBadRequest" }, "404": { "$ref": "#/components/responses/errorGroupNotFound" }, "409": { "$ref": "#/components/responses/errorConflict" }, "500": { "$ref": "#/components/responses/errorServer" } }
рдпрд╣ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЕрдкрдШрдЯрди рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реА рд╣реИред рдШрдЯрдХ, рдмрджрд▓реЗ рдореЗрдВ, рд╡рд┐рдШрдЯрд┐рдд рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдЕрдиреНрдп рдШрдЯрдХреЛрдВ (рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рд╣рд┐рдд), рд╕рдВрдпреЛрдЬрди рдФрд░ рдЕрдиреНрдп JSON рд╕реНрдХреАрдорд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк OpenAPI рдореЗрдВ рдЕрдкрдШрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреИрд╕реЗ рджрд┐рдЦреЗрдЧрд╛ред
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП OAS рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдШрдЯрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ DDD рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЕрдкреВрд░реНрдг рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдкрд░ рдПрдХреАрдХреГрдд рдЙрдкрддрдВрддреНрд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдореБрдЦреНрдп рд╕рд╛рд░ рдЯрд╛рд╕реНрдХ рд╣реИред рдЗрд╕реЗ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рд░рдЦрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдирд┐рдХрд╛рдп рдФрд░ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реЛрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рджреЛ рдмрд╛рддреЗрдВ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:
- рд╣рдо рди рдХреЗрд╡рд▓ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдирд┐рдпрдо рднреА рд╣реИрдВ, рдФрд░ рд╡реЗ рдЬрд┐рддрдиреЗ рд╕рдЯреАрдХ рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИрдВ, рдЙрддрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
- рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рд╕реА рднреА рдЗрдХрд╛рдИ рдХреА рддрд░рд╣, рдПрдХ рдХрд╛рд░реНрдп рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ: рд╕реЗрд╡рд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рджрд░реНрдЬред
рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐, рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрд╛рд░реНрдп рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдпреВрдЖрдИрдбреА, рдирд┐рд░реНрдорд╛рдг рдХреА рддрд╛рд░реАрдЦ, рдкрд░рд┐рд╡рд░реНрддрди рдЖрджрд┐ рд╣реИрдВ, рдФрд░ рдпрд╣ рдбреЗрдЯрд╛ рдмреИрдХрдПрдВрдб рдкрд░ рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рджреЛ рд╕рдВрд╕реНрдерд╛рдУрдВ ( ToDoTaskBlank
рдФрд░ ToDoTask
) рдХрд╛ рдЗрд╕ рддрд░рд╣ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рджреВрд╕рд░реЗ рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ:
"components": { "ToDoTaskBlank": { "title": "Base part of data of item in todo's group", "description": "Data about group item needed for creation of it", "properties": { "groupUid": { "description": "An unique id of group that item belongs to", "$ref": "#/components/schemas/Uid" }, "title": { "description": "Short brief of task to be done", "type": "string", "minLength": 3, "maxLength": 64 }, "description": { "description": "Detailed description and context of the task. Allowed using of Common Markdown.", "type": ["string", "null"], "minLength": 10, "maxLength": 1024 }, "isDone": { "description": "Status of task: is done or not", "type": "boolean", "default": "false", "example": false }, "position": { "description": "Position of a task in group. Allows to track changing of state of a concrete item, including changing od position.", "type": "number", "min": 0, "max": 4096, "example": 0 }, "attachments": { "type": "array", "description": "Any material attached to the task: may be screenshots, photos, pdf- or doc- documents on something else", "items": { "$ref": "#/components/schemas/AttachmentMeta" }, "maxItems": 16, "example": [] } }, "required": [ "isDone", "title" ], "example": { "isDone": false, "title": "Book soccer field", "description": "The complainant agreed and recruited more members to play soccer." } }, "ToDoTask": { "title": "Item in todo's group", "description": "Describe data structure of an item in group of tasks", "allOf": [ { "$ref": "#/components/schemas/ToDoTaskBlank" }, { "type": "object", "properties": { "uid": { "description": "An unique id of task", "$ref": "#/components/schemas/Uid", "readOnly": true }, "dateCreated": { "description": "Date/time (ISO) when task was created", "type": "string", "format": "date-time", "readOnly": true, "example": "2019-11-17T11:20:51.555Z" }, "dateChanged": { "description": "Date/time (ISO) when task was changed last time", "type": "string", "format": "date-time", "readOnly": true, "example": "2019-11-17T11:20:51.555Z" } }, "required": [ "dateChanged", "dateCreated", "position", "uid" ] } ] } }
рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рджреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдкрд╣рд▓реЗ рдХреЛ рджреВрд╕рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛:
export interface ToDoTaskBlank {
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд╛рд╕реНрдХ рдЗрдХрд╛рдИ рдХрд╛ рдореВрд▓ рд╡рд┐рд╡рд░рдг рд╣реИ, рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдХреЛрдб рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
import { ToDoTask, ToDoTaskBlank, } from '@our-npm-scope/our-generated-lib'; export interface ToDoTaskTeaser extends ToDoTask { isInvalid?: boolean; isJustCreated?: boolean; isPending?: boolean; prevTempUid?: string; }
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ ToDoTask
рдЬрд┐рдирдХреЗ рд╕рд╛рдордиреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдЗрдб рдХреА рдХрдореА рд╣реИред рдпрд╣реА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдордиреЗ рдкрд░рд┐рдгрд╛рдореА рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рдЖрд╕рдкрд╛рд╕, рд╕реНрдерд╛рдиреАрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдФрд░ рдПрдХ рдЖрджрд┐рдо рдбреАрдЯреАрдУ рдХреА рддрд░рд╣ рдХреБрдЫ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝рддрд╛ рд╣реИ:
export function downgradeTeaserToTask( taskTeaser: ToDoTaskTeaser ): ToDoTask { const task = { ...taskTeaser }; if (!task.description || !task.description.trim()) { delete task.description; } else { task.description = task.description.trim(); } delete task.isJustCreated; delete task.isPending; delete task.prevTempUid; return task; } export function downgradeTeaserToTaskBlank( taskTeaser: ToDoTaskTeaser ): ToDoTaskBlank { const task = downgradeTeaserToTask(taskTeaser) as any; delete task.dateChanged; delete task.dateCreated; delete task.uid; return task; }
рдХреЛрдИ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рдЕрдзрд┐рдХ рдЕрднрд┐рдиреНрди рдмрдирд╛рдиреЗ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред export class ToDoTaskTeaser implements ToDoTask {
рд▓реЗрдХрд┐рди рдпрд╣ рд╢реИрд▓реА, рдЙрдкрдпреБрдХреНрддрддрд╛ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдЧрд╛, рдпрд╣ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдо рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдЕрдиреБрд░реВрдкрддрд╛ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ ToDoTask
рдХрд╛ uid
рдПрдХ рдирдВрдмрд░ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХреЗ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рдиреЗрд╕реНрдЯреЗрдб рдЕрдкрдШрдЯрди
рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ToDoTask
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реА рдкреНрд░рдХрд╛рд░, рд╣рдо ToDoTaskGroup рдФрд░ ToDoTaskGroupBlank рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЙрдирдореЗрдВ рдХреНрд░рдорд╢рдГ ToDoTask
рдФрд░ ToDoTaskBlank
рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдг рд╣реЛрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо "рдЯрд╛рд╕реНрдХ рдЧреНрд░реБрдк" рдХреЛ рджреЛ, рддреАрди рдирд╣реАрдВ, рдШрдЯрдХреЛрдВ рдореЗрдВ рддреЛрдбрд╝реЗрдВрдЧреЗ : рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо ToDoGroupExtendedData рдореЗрдВ рдбреЗрд▓реНрдЯрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдШрдЯрдХ рдЕрдиреНрдп рджреЛ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
"ToDoGroup": { "allOf": [ { "$ref": "#/components/schemas/ToDoGroupBlank" }, { "$ref": "#/components/schemas/ToDoGroupExtendedData" } ] }
рдХреЛрдб рдкреАрдврд╝реА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрдорд╛рдг рдорд┐рд▓рддрд╛ рд╣реИ:
export type ToDoGroup = ToDoGroupBlank &
рдЪреВрдВрдХрд┐ ToDoGroup
рдЕрдкрдирд╛ "рдирд┐рдХрд╛рдп" рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдиреЗ рдЗрд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рдВрдШ рдореЗрдВ рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА (рдЕрдирд╛рдо) рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рддреАрд╕рд░рд╛ рднрд╛рдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рджреЛ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдЧрд╛ (рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ)ред рдФрд░ рдЖрдЗрдП рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ ToDoGroupBlank
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА items
рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдХреЛ ToDoGroupBlank
рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк ToDoGroupBlank
рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ ToDoGroupBlank
рдореЗрдВ ToDoGroupBlank
рдкрд░ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдб рдЬрдирд░реЗрдЯрд░ JSON рд╕реНрдХреАрдорд╛ рд╕реЗ TypeScipt рдореЗрдВ рдЕрдкрдШрдЯрди рдХреА рдмрд▓реНрдХрд┐ рдЬрдЯрд┐рд▓ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
import { ToDoTaskBlank } from './to-do-task-blank'; export interface ToDoGroupBlank {
import { ToDoTask } from './to-do-task'; export interface ToDoGroupExtendedData {
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, ToDoTask
/ ToDoTaskBlank
рд╣рдо рдЕрдкрдШрдЯрди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ attachments
рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ AttachmentMeta рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рдШрдЯрдХ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
"AttachmentMeta": { "description": "Common meta data model of any type of attachment", "oneOf": [ {"$ref": "#/components/schemas/AttachmentMetaImage"}, {"$ref": "#/components/schemas/AttachmentMetaDocument"}, {"$ref": "#/components/schemas/ExternalResource"} ] }
рдпрд╣реА рд╣реИ, рдпрд╣ рдШрдЯрдХ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрд╕рдХреА рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЧреБрдгрд╛ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдПрдиреБрдорд░реЗрдЯреЗрдб рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЕрдирд╛рдо рд╡рд┐рд╡рд░рдг рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
attachments?: Array< | AttachmentMetaImage
рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, AttachmentMetaImage
рдФрд░ AttachmentMetaDocument
рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдЧреИрд░-рдЕрдирд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
import { AttachmentMetaDocument } from './attachment-meta-document'; import { AttachmentMetaImage } from './attachment-meta-image';
рд▓реЗрдХрд┐рди AttachmentMetaImage рдореЗрдВ рднреА , рд╣рдо рдПрдХ рдФрд░ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ ImageOptions рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд▓рд┐рдВрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрдирд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ( рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рд╕реЗ рдкрд░рд┐рдгрд╛рдо) рд╢рд╛рдорд┐рд▓ рд╣реИ:
import { ImageOptions } from './image-options'; export interface AttachmentMetaImage {
рдЗрд╕ рдкреНрд░рдХрд╛рд░, ToDoTask
рдпрд╛ ToDoGroup
рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдХрдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рдХрдиреЗрдХреНрд╢рди рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреЛрдб рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдУрд╡рд░-рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдУрдкрдирдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдФрд░ рдЫреЛрдЯрд╛ рдмреЛрдирд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
REST API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдГ-рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдПрдБ
рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдпрджрд┐ рд╣рдо рдПрдХ рдФрд╕рдд рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдЬрдЯрд┐рд▓ REST API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ API рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдВ (рдпрд╛ рд╕рд┐рд░реНрдл рдлрд╝рдВрдХреНрд╢рди) рд╣реЛрдЧрд╛ред рд╡реЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ:
- URL рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдореИрдкрд┐рдВрдЧ
- рдорд╛рдкрджрдВрдбреЛрдВ, рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрди
- рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдФрд░ рдЖрдкрд╛рддрдХрд╛рд▓реАрди рд╣реИрдВрдбрд▓рд┐рдВрдЧ
рдпрд╣ рдЕрдкреНрд░рд┐рдп рд╣реИ рдХрд┐ рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЕрджреНрд╡рд┐рддреАрдп рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ - рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
REST API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдпреЛрдЬрдирд╛рдмрджреНрдз рдЙрджрд╛рд╣рд░рдг import _ from 'lodash'; import { Observable, fromFetch, throwError } from 'rxjs'; import { switchMap } from 'rxjs/operators';
рдЖрдк REST рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрдореВрд░реНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдЯреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: Axios , рдХреЛрдгреАрдп HttpClient , рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рдиред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХрд╛ рдХреЛрдб рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ:
- рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдБ рдпрд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕ (
getTasksFromServer
рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) - рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (
getRemainedTasks
рдлрд╝рдВрдХреНрд╢рди)
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рд╕реЗ рдПрдХ рдЖрд╡реЗрджрди рдореЗрдВ, рдпрд╣ рдХреЛрдб рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛: рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ 5-6 рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ ред рдЕрдХреНрд╕рд░, REST API рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рд╕рдорд░реНрдерди рдФрд░ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░рд┐рд╕рдВрдЪрд░рдг рдореЗрдВ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рднрд╛рдЧреЛрдВ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдбреЙрдХрд┐рдВрдЧ рдиреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрд╕рд╛рдордпрд┐рдХ рдкрд╣рдЪрд╛рди (рд╕рд╛рде рд╣реА рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдирд┐рджрд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ) рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рдВрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЬрд╛рдВрдЪ рд╣реЛрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдб рдЖрдзрд╛рд░ рдмрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рдорд╛рдорд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рдкрд╛рд░ рдПрдХ рдирд┐рд░рдВрддрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдХреИрд╕реЗ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред
OpenAPI рд╡рд┐рд╖рдп рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ OAS рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ:
тАФ . , , / тАФ 5, 10 200, . , , : , , , RxJS- pickResponseBody , , - ; tapResponse , side-effect (tap) HTTP-. , - . , , .
, тАФ -, . , , , "" / API "-" "" . - , "" ( ), .
, REST API Angular. , , /. . , , . , , .. .
" " . Angular-, update-typings.js
:
"use strict"; var cliLib = require('@codegena/oapi3ts-cli'); var cliApp = new cliLib.CliApplication; cliApp.createTypings(); cliApp.createServices('angular');
, Angular- API . , - - , . , RewriteGroupService . ApiService , , , -:
, JSON Schema , . , , :
import { schema as domainSchema } from './schema.b4c655ec1635af1be28bd6';
, schema.b4c655ec1635af1be28bd6.ts
, , .
, Angular-.
Angular-ApiModule
:
import { ApiModule, API_ERROR_HANDLER } from '@codegena/ng-api-service'; import { CreateGroupItemService, GetGroupsService, GetGroupItemsService, UpdateFewItemsService } from '@codegena/todo-app-scheme'; @NgModule({ imports: [ ApiModule, // ... ], providers: [ RewriteGroupService, { provide: API_ERROR_HANDLER, useClass: ApiErrorHandlerService }, // ... ], // ... }) export class TodoAppModule { }
, [])( https://angular.io/guide/dependency-injection ):
@Injectable() export class TodoTasksStore { constructor( protected createGroupItemService: CreateGroupItemService, protected getGroupsService: GetGroupsService, protected getGroupItemsService: GetGroupItemsService, protected updateFewItemsService: UpdateFewItemsService ) {} }
тАФ , request , :
return this.getGroupsService.request(null, { isComplete: null, withItems: false }).pipe( pickResponseBody<GetGroupsResponse<200>>(200, null, true), switchMap<ToDoGroup[], Observable<ComponentTruth>>( groups => this.loadItemsOfSelectedGroups({ ...truth, groups }) ) );
request
Observable<HttpResponse<R> | HttpEvent<R>>
, , . , , . , , , . RxJS- pickResponseBody
.
, , , . API, . . , :

. JSON Schema . , "" - . , Sentry Kibana , . . , , .
, . , :)
рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп
, . -, " " тАФ . , , , .
тАФ , - / ( ). , тАФ .
.