рдХреНрдпрд╛ рдЖрдк рдХрднреА рднреА рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реИрдЧрд░ рдкреНрд░рд▓реЗрдЦрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИред рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ swagger.json
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЗрд╕ рддрд░рд╣ рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╕рд░рд▓ рдереА: рдореИрдВ рдХрдИ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдРрдк рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реНрд╡реИрдЧрд░ рдкреНрд░рд▓реЗрдЦрди рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВред
рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреБрдЫ Google рдХреМрд╢рд▓ рдХреА рдХрдореА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреВрд▓ рдХреЛ рдмрдирд╛рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ: mgr-swagger-express
рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ
рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ рдПрдХ рд╢рд╛рд╕реНрддреНрд░реАрдп рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ:

рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрд╕рд╛рдзрди "рдмреБрдХ" рдФрд░ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА CRUD рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рд╣реИрдВред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ "рдЖрдк рдЗрд╕ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рдХреВрд▓ рд╕реНрд╡реИрдЧрд░ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВрдЧреЗ?" рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рдкрд╛рд╕ рд╣реА рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдк рдорд┐рдЧ-рд╕реНрд╡реИрдЧрд░-рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд░ рдкрд╛рдПрдВрдЧреЗ:
index.ts
:

BookService.ts
:

рдПрдХ рдмреЙрдЯ рдЕрдзрд┐рдХ рдХреЛрдб рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рдкрд╛рд╕ рд╕рднреА рд╕реНрд╡реИрдЧрд░ рдкреНрд░рд▓реЗрдЦрди рд╣реИрдВред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
- рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдРрдк рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдореЗрдВ рд╕рднреА рдорд┐рдбрд▓рд╡реЗрд░реНрд╕ (рдмреЙрдбреАрдкреЗрдпрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ) рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИред
- рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо
SET_EXPRESS_APP
рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдРрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдорд┐рдЧ-рд╕реНрд╡реИрдЧрд░-рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ - рдЗрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдХрд╛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╡рд░реНрдЧ рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рддрдм рд╣рдо рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ init рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ)
- рдФрд░ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡реИрдЧрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд╡реИрдЧрд░-рдЙрдИ-рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВред
рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрджрд░, рдХрдИ рдЪреАрдЬреЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рд╣реА рд░реЛрдХ рджреЗрдВред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рдЧ-рд╕реНрд╡реИрдЧрд░-рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╣рдо
addSwaggerDefinition
рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рджрд┐рдП рдЧрдП рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡реИрдЧрд░ рдореЙрдбрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо BookDefinition
рдХреЛ рдПрдХ рдмреБрдХ рдирд╛рдо рдХреЗ рддрд╣рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ #/definitions/Book
рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ - рд╕рднреА рд╣реИрдВрдбрд▓рд░
@GET @POST @PUT @DELETE
рдХрдорд╛рдВрдб рд╕реЗ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╡реЗ рд╕рднреА рддрд░реНрдХ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рд▓реЗ рд░рд╣реЗ рд╣реИрдВ SwaggerEndpoint
:
path: string; auth?: string; description?: string; tags?: string[]; parameters?: SwaggerURLParameter[]; query?: SwaggerQueryParameter; body?: SwaggerBodyParameter; success?: SwaggerSuccessResponse;
рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╢рд╛рд╕реНрддреНрд░реАрдп рд╕реНрд╡реИрдЧрд░ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдбреЗрдлрд┐рдиреЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛
рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:
(args: object, context: Context) => Promise<any>
рдЖрд░реНрдЧреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдкрдХреЗ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рд░рдЦреЗ рдЧрдП рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ URL рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ book_id
), рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╢рд░реАрд░ рдХрд╛ рдорд╛рди рднреАред
рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ CRUD рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рд╕реНрд╡реИрдЧрд░ рдФрд░ рдПрдХ рд╕реБрдВрджрд░ рд╕реНрд╡реИрдЧрд░ рдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рднреА рд╕реНрд╡реИрдЧрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкрд╛рд╕ рд╕реНрдерд┐рдд рд╣реИрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ - рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЦреБрд╢! я╕П