рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрдИ рддрдХрдиреАрдХреЛрдВ, рдкреНрд░рдерд╛рдУрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди (рдбрд┐рдЬрд╛рдЗрди) рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░, рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдирд╛, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдирдпрд╛ рдХрд╣рд╛рдВ рдФрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЖрдЬ, http рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЖрд╡рд░рдг рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рднреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ - рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рд╕реНрд╡рд╛рдЧрддред
рд╕рднреА рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП - рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдХрд░реА рдХреНрдпрд╛ рд╣реИ - рдореИрдВ рдХреЛрдб рдкрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ - рдкреВрд░реНрдгрддрд╛ рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рд▓реЗрдХрд┐рди рдХрд░реА рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрдпрд╛рди рд╕реЗ, рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмреНрд▓реЙрдЧ рдПрдкреАрдЖрдИ рд╣реИ (рдЕрд╕рд▓реА рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рднреА рдореИрдЪ рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рд╣реИрдВ):
/api/v1/index/
рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА/api/v1/news/
рд╕рдорд╛рдЪрд╛рд░ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛/api/v1/articles/
рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛- рдЕрдиреБрд░реЛрдз
/api/v1/article/222/
рдЖрдИрдбреА 222 рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдкреГрд╖реНрда рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ /api/v1/article/edit/222/
рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдЖрдИрдбреА 222 рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдЦ рд╕рдВрдкрд╛рджрди рдкреНрд░рдкрддреНрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛
... рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЖрдЧреЗ, рдЖрдЧреЗ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг v1 рдХреА рдПрдкреАрдЖрдИ рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╣ рдХрд┐рддрдирд╛ рдХрдо рдмрдврд╝реЗрдЧрд╛ рдФрд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рдЖрдЧреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВред
рдЗрд╕рд▓рд┐рдП, рдЬреЗрдПрд╕ рдХреЛрдб рдореЗрдВ, рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдИрдбреА 222 рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдЦ , рд╣рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ (рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореВрд▓ рдЬреЗрдПрд╕ рд▓рд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ):
fetch('/api/v1/article/222/') .then() .catch()
рдЙрд╕реА рд▓реЗрдЦ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ:
fetch('/api/v1/article/edit/222/') .then() .catch()
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрде рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ /api/v1/
рд▓рд┐рдП рдкрде рдФрд░ рд╕рдВрд╕реНрдХрд░рдг, рдФрд░ рдПрдХ рд▓реЗрдЦ /api/v1/article/
рдФрд░ /api/v1/article/edit/
ред
рд╣рдорд╛рд░реЗ рдкрд╕рдВрджреАрджрд╛ DRY (рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ рдирд╣реАрдВ) рдирд┐рдпрдо рдХреЗ рдмрд╛рдж, рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХреИрд╕реЗ рдХрд░реЗрдВ?
рд╣рдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рдХреНрд╡реЗрд░реА рднрд╛рдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const API = '/api' const VERSION = '/v1' const ARTICLE = `${API}${VERSION}/article`
рдФрд░ рдЕрдм рд╣рдо рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд░реЛрдз
fetch(`${ARTICLE}/222/`)
рдЕрдиреБрдЪреНрдЫреЗрдж рд╕рдВрдкрд╛рджрди рдЕрдиреБрд░реЛрдз
fetch(`${ARTICLE}/edit/222/`)
рдХреЛрдб рдХрдо рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдФрд░ рдореИрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдХрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИред
Http рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд
рд░рдгрдиреАрддрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рд╣рдо рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рд╣рдо рдореВрд▓ рднреНрд░реВрдг рдкрд░ рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ (рдЪрд▓реЛ рдЗрд╕реЗ http рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдкреВрд░реНрдг рдХреЛрдб рд╣реИ), рдЙрди рддрд░реНрдХреЛрдВ рдореЗрдВ, рдЬрд┐рдирдореЗрдВ рд╣рдо рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:
cosnt httpToArticleId222 = http({ url: '/api/v1/article/222/', method: 'POST' })
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ http рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ url рдФрд░ рд╡рд┐рдзрд┐ рдЕрдиреБрд░реЛрдз рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЕрдм, httpToArticleId222()
рдХреЙрд▓ httpToArticleId222()
рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВред
рдЖрдк рдкреЗрдЪреАрджрд╛ рдФрд░ рдЪрд░рдгрдмрджреНрдз рдбрд┐рдЬрд╝рд╛рдЗрди рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╡рд╛рдпрд░реНрдб рдПрдкреАрдЖрдИ рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ http рд╕реЗрд╡рд╛рдПрдВ рдХрд╣реЗрдВрдЧреЗред
рддреЛ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рд╕реЗрд╡рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╕рд╛рде рд╣реА рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдмрд╛рдж рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдзрд┐)
const httpAPI = http({ url: '/api', method: 'POST' })
рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рд╕реЗрд╡рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдПрдкреАрдЖрдИ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ httpAPI рд╕реЗрд╡рд╛ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрд░реЛрдз рд╢рд╛рдЦрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
const httpAPIv1 = httpAPI({ url: '/v1' })
рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рд╕реЗрд╡рд╛ рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ рдмрд╛рдХреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдПрдБрдЧреЗ (рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕реВрдЪреА рдпрд╛рдж рд░рдЦреЗрдВ)
рд╣реЛрдордкреЗрдЬ рдбреЗрдЯрд╛
const httpAPIv1Main = httpAPIv1({ url: '/index' })
рд╕рдорд╛рдЪрд╛рд░ рдкреГрд╖реНрда рдбреЗрдЯрд╛
const httpAPIv1News = httpAPIv1({ url: '/news' })
рд▓реЗрдЦ рд╕реВрдЪреА рдбреЗрдЯрд╛
const httpAPIv1Articles = httpAPIv1({ url: '/articles' })
рдЕрдВрдд рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдореБрдЦреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ, рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛
const httpAPIv1Article = httpAPIv1({ url: '/article' })
рд▓реЗрдЦ рд╕рдВрдкрд╛рджрди рдХрд╛ рдорд╛рд░реНрдЧ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдмреЗрд╢рдХ, рдЖрдкрдиреЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдерд╛, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди httpAPIv1Article рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ
const httpAPIv1ArticleEdit = httpAPIv1({ url: '/edit' })
рдПрдХ рдЫреЛрдЯрд╛ рддрд╛рд░реНрдХрд┐рдХ рдкрд░рд┐рдгрд╛рдо
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдПрдХ рд╕реБрдВрджрд░ рд╕реВрдЪреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣рд╛рдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред
export { httpAPIv1Main, httpAPIv1News, httpAPIv1Articles, httpAPIv1Article, httpAPIv1ArticleEdit }
рдореИрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
import { httpAPIv1Article } from 'services'
рдФрд░ рдореИрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдкрд╣рд▓реЗ рд╕рд╛рдордЧреНрд░реА рдХреА рдЖрдИрдбреА рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕рдВрдЧрдард┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ: "рдЖрд╕рд╛рди")
httpAPIv1Article({ url: ArticleID // id - })() .then() .catch()
рд╕реНрд╡рдЪреНрдЫ, рд╕реБрдВрджрд░, рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп (рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ)
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд╣рдо рдХрд░реАрдиреЗ рдХреЗ рдХрд╛рд░рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ "рд▓реЛрдб" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдПрдХ рдмрд┐рдЯред
рдХрд░реА рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдкрдиреЗ рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреЗ рдмрд╛рдж рд╕рдорд╛рд░реЛрд╣ рд▓реМрдЯрдиреЗ рд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИред
рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░рд╛рд╢рд┐ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд╣рд▓реА рдмрд╛рд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдмрд╛рдж рдХреА рддрд╣ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдирдВрдмрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдирдВрдмрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ (ES6 рд╡рд╛рдХреНрдп рд░рдЪрдирд╛)
const sum = a => b => a + b
рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ (рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ) рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, sum13
const sum13 = sum(13)
рдЕрдм sum13 рдХреЛ рд╣рдо рд▓рд╛рдкрддрд╛ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рднреА рддрд░реНрдХ рдореЗрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо 13 + рджреВрд╕рд░рд╛ рддрд░реНрдХ рд╣реЛрдЧрд╛
sum13(7)
рдЦреИрд░, рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?
рд╣рдо http рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рднреНрд░реВрдг рдХреЗ рдКрдкрд░ рдЖрд╡рд░рдг рд╣реЛрдЧрд╛
function http (paramUser) {}
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рдордп рдкрд╛рд░рдордЙрдЬрд╝рд░ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ
рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рддрд░реНрдХ рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВред
function http (paramUser) { /** * -, * @type {string} */ let param = { method: 'GET', credentials: 'same-origin' } }
рдФрд░ рдлрд┐рд░ paramGen рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдирд┐рд░реНрдзрд╛рд░рд┐рдд (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдПрдХ рд╡рд┐рд▓рдп) рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
function http (paramUser) { /** * -, * @type {string} */ let param = { method: 'GET', credentials: 'same-origin' } /** * , * url , * * @param {object} param * @param {object} paramUser , * * @return {object} */ function paramGen (param, paramUser) { let url = param.url || '' let newParam = Object.assign({}, param, paramUser) url += paramUser.url || '' newParam.url = url return newParam } }
рд╣рдо рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рд╣рдо рдХрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ
рдлрд╝рдВрдХреНрд╢рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдкрдбрд╝реЗ рдФрд░ http рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛, рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
function http (paramUser) { /** * -, * @type {string} */ let param = { method: 'GET', credentials: 'same-origin' } /** * , * url , * * @param {object} param * @param {object} paramUser , * * @return {object} */ function paramGen (param, paramUser) { let url = param.url || '' url += paramUser.url || '' let newParam = Object.assign({}, param, paramUser); newParam.url = url return newParam } /** * , * , * * : * * - , , * - , * - , * * @param {object} param , * @param {object} paramUser , * * @return {function || promise} , (fetch), */ function fabric (param, paramUser) { if (paramUser) { if (typeof paramUser === 'string') { return fabric.bind(null, paramGen(param, { url: paramUser })) } return fabric.bind(null, paramGen(param, paramUser)) } else { // , , param url, // :) return fetch(param.url, param) } } return fabric.bind(null, paramGen(param, paramUser)) }
Http рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд╣рд▓реА рдХреЙрд▓ рдлреИрдмреНрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ (рдФрд░ paramGen рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░), рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдШрдВрдЯреЗ рдмрд╛рдж рдореЗрдВ рдлреЛрди рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
let httpGift = http({ url: '
рдФрд░ httpGift рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реБрдП , рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╣рдо рдЕрдиреБрд░реЛрдз рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП httpGift рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдмрд┐рдирд╛ рдмрд╣рд╕ рдХреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
httpGift() .then() .catch()
рдкрд░рд┐рдгрд╛рдо
рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЙрдЪреНрдЪ рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЖрд╕рд╛рдиреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рддреЗ рд╕рдордпред
рдпрд╣ рдРрд╕рд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рдПрдХ рдорд┐рдиреА-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЧрд▓ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрдпреЛрдЧреА рдереА, рдЬреЛрд░ рд╕реЗ рдордд рдорд╛рд░реЛ, рдпрд╣ рдореЗрд░реЗ рдЬреАрд╡рди рдХрд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ :)
рд╕рднреА рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб, рдЬрд▓реНрдж рд╣реА рдорд┐рд▓рддреЗ рд╣реИрдВ!