"рд░рдЦрд░рдЦрд╛рд╡ рдореЛрдб" рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕реЗ (#3142 рдореЗрдВ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг) рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдПрдХрддреНрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдФрд░ рдореИрдВ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджреВрдВрдЧрд╛ред рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рд╣реЛ рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рд░реАрдбрдореА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреНрд░рдо рдореЗрдВ рдФрд░ рднрдпрд╛рдирдХ рд░реВрдк рд╕реЗ рдЕрдкреВрд░реНрдг;
рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо | рдмрдВрдбрд▓ рдЖрдХрд╛рд░ | рдПрдкреАрдЖрдИ рд╕реНрдЯрд╛рдЗрд▓ | рд╕рд╛рд░рд╛рдВрд╢
------------ | ------------- | ------------- | -------------
рдиреЛрдб-рдлрд╝реЗрдЪ | 0.4kb | рд╡рд╛рджрд╛ / рдзрд╛рд░рд╛ | рдПрдХ рд╣рд▓реНрдХрд╛-рдлреБрд▓реНрдХрд╛ рдореЙрдбреНрдпреВрд▓ рдЬреЛ window.fetch рдХреЛ Node.js рдкрд░ рд▓рд╛рддрд╛ рд╣реИ
рддреБрд▓рд╛ | 1kb | fp / рд╡рд╛рджрд╛ / рдзрд╛рд░рд╛ | рдХрд╛рд░реНрдпрд╛рддреНрдордХ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ w/async/рдкреНрд░рддреАрдХреНрд╖рд╛
рдорд┐рд▓ рдЧрдпрд╛ | 48.4kb | рд╡рд╛рджрд╛ / рдзрд╛рд░рд╛ | рд╕рд░рд▓реАрдХреГрдд HTTP рдЕрдиреБрд░реЛрдз
рдмрдирд╛рдирд╛-рд▓рд╛рдирд╛-рд╣реЛрдирд╛ | 442kb | рд╡рд╛рджрд╛ / рдзрд╛рд░рд╛ | рдореЗрдХ-рдлрд╝реЗрдЪ-рд╣реИрдкрди рдПрдХ Node.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдиреЛрдб-рдлрд╝реЗрдЪ-рдПрдирдкреАрдПрдо рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддрд╛ рд╣реИ, рдиреЛрдб-рдлрд╝реЗрдЪ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ HTTP рдХреИрд╢ рд╕рдкреЛрд░реНрдЯ, рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдкреВрд▓рд┐рдВрдЧ, рдкреНрд░реЙрдХреНрд╕реА, рд░рд┐рдЯреНрд░реАрдЬрд╝, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИ!
рдЕрдХреНрд╖ | 11.9kb | рд╡рд╛рджрд╛ / рдзрд╛рд░рд╛ | рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ node.js рдХреЗ рд▓рд┐рдП рд╡рд╛рджрд╛ рдЖрдзрд╛рд░рд┐рдд HTTP рдХреНрд▓рд╛рдЗрдВрдЯ
рдЕрдирдлрд╝реЗрдЪ | 1kb | рд╡рд╛рджрд╛ / рдзрд╛рд░рд╛ | рдЯрд┐рдиреА 500b рдлрд╝реЗрдЪ "рдмрдореБрд╢реНрдХрд┐рд▓-рдкреЙрд▓реАрдлрд╝рд┐рд▓"
рд╕реБрдкрд░рдПрдЬреЗрдВрдЯ | 18kb | рдЬрдВрдЬреАрд░ / рд╡рд╛рджрд╛ | рдЫреЛрдЯреЗ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб HTTP рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдФрд░ рдПрдХ рд╣реА рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде Node.js рдореЙрдбреНрдпреВрд▓, рдХрдИ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕реНрдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реБрдП
рдЯрд┐рдиреА-рдЬреЗрд╕рди-http | 22kb | рд╡рд╛рджрд╛ | JSON рдкреЗрд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо HTTP рдХреНрд▓рд╛рдЗрдВрдЯ
рд╕реБрдИ | 164kb | рдЬрдВрдЬреАрд░ / рд╡рд╛рджрд╛ | рдиреЛрдбрд▓реИрдВрдбреНрд╕ рдореЗрдВ рд╕рдмрд╕реЗ рджреБрдмрд▓рд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ
urllib | 816kb | рдХреЙрд▓рдмреИрдХ / рд╡рд╛рджрд╛ | рдПрдХ рдЬрдЯрд┐рд▓ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдпреВрдЖрд░рдПрд▓ (рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдЪрдЯреАрдЯреАрдкреА) рдЦреЛрд▓рдиреЗ рдореЗрдВ рдорджрдж - рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди, рдХреБрдХреАрдЬрд╝ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдПрдХ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗрдВрджреНрд░рд┐рдд рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рднреА рдХрд░рддрд╛ рд╣реИ, рдПрдХреНрд╕рд┐рдпреЛрд╕ рдореЗрд░рд╛ рдЬрд╛рдирд╛ рд░рд╣рд╛ рд╣реИред
рдлреЗрд╕рдмреБрдХ рд╕реЗ рдЖрд╕рд╛рди рдПрдкреАрдЖрдИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдиреЛрдб рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдкреВрд░реНрдг
@mikeal рдХреЗ рд╕рд╛рде рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣реБрдИ рдПрдХ рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЯ рдХрд┐рдпрд╛ рд╣реИред рдПрдХ Node.js рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдХреБрдЫ рд╕рдордп рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдмреЗрдВрдЯ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЖрд╕рд╛рди рд╕рдВрдХреНрд░рдордг рдерд╛ - рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд┐рдд
@reconbot рдЖрдк рдорд┐рд▓рд╛ , рд╕реБрдИ рдФрд░ urllib рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдареАрдХ рд╣реИ, рдпрд╣рд╛рдВ рдЕрдкрдиреА рдЫреЛрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ, рдпрд╣рд╛рдВ рдпрд╣ рд╣реИ: рдЕрдиреБрд░реЛрдз-рд▓рд┐рдЦреЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ, 0 рдбреАрдкреАрдПрд╕ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ рд╡рд╛рджреЛрдВ, рдзрд╛рд░рд╛рдУрдВ рдФрд░ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╣реИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╡рд┐рдХрд▓реНрдк, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкрд╛рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВред
рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рднреА рд▓рд┐рдЦрд╛ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХреА рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдкред
рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрднреА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓рдо рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рд╕рд╛рде-рд╕рд╛рде рд░рдЦрдиреЗ рдкрд░ рдХреБрдЫ рдХрд╛рдореЛрдВ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕рд┐рддрд╛рд░реЗ рдФрд░ рд▓рд╛рдЦреЛрдВ рдбрд╛рдЙрдирд▓реЛрдб рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рд╕реИрдХрдбрд╝реЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ, рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдпрд╛ рд╡рд┐рд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
@csantanapr рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рдлреАрдЪрд░ рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА рд╕рдкреЛрд░реНрдЯ, рдХреИрд╢реЗ рд╕рдкреЛрд░реНрдЯ, рдСрде рдлреАрдЪрд░реНрд╕ рдЖрджрд┐ред рдпрджрд┐ рдЖрдк рдЕрдиреБрд░реЛрдз рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реЛрдЧрд╛ред
axios
рдХреЛ рдореЗрд░рд╛ рд╡реЛрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдлреНрд░рдВрдЯ-рдПрдВрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВред
рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ: ky
(рдлреНрд░рдВрдЯрдПрдВрдб) рдФрд░ ky-universal
(рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ)
Axios рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣рд╛рдБред рдЗрд╕ рддрд░рд╣, рд╣рдорд╛рд░реА рд╕рднреА рдЯреАрдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ рдиреЛрдбрдЬ (рд╕рд░реНрд╡рд░ рдпрд╛ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ)ред рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛, рдФрд░ рд╣рдорд╛рд░реЗ рд╕рднреА рд▓реЛрдЧ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ got
рд░реАрдбрдореА рдореЗрдВ got
, request
, node-fetch
, axios
, рдФрд░ superagent
рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдЪреНрдЫреА рддреБрд▓рдирд╛ рд╣реИ : https://github.com/sindresorhus/got#comparison
(рдпрджрд┐ рдЖрдк рдХреЛрдИ рдЕрд╢реБрджреНрдзрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рддрдЯрд╕реНрде рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ)
request
рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЙрдЯ рдХреЗ рдкрд╛рд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЧрд╛рдЗрдб рднреА рд╣реИ: https://github.com/sindresorhus/got/blob/master/migration-guides.md
рдореЗрд░реЗ рд▓рд┐рдП, рдореИрдВ рдПрдкреАрдЖрдИ рд▓рд╛рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░реИрдкрд░ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдиреЛрдб-рдлрд╝реЗрдЪ рдореЗрд░рд╛ рдЧреЛрдЯреЛ рд╣реИред рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдиреЛрдб рдореЗрдВ global.fetch
рдкрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ (рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред isomorphic-fetch
рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдиреЛрдб-рдлрд╝реЗрдЪ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░реИрдкрд░ рд╣реИ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝реЗрдЪ рдкреЙрд▓реАрдлрд╝рд┐рд▓ (рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдлрд╝реЗрдЪ) рд╣реИред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рд╡рд┐рд░рд╛рд╕рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдиреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рдЕрд░реЗ, рдорд▓рдмреЗ (https://www.npmjs.com/package/wrec) рдореИрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ
рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдлрд╝реЗрдЪ рдПрдкреАрдЖрдИ рдХреА рдирдХрд▓ рдХрд░реЗред рдПрдХ рдорд╛рдирдХ рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХреНрд╕рд┐рд╕, рд╕реБрдкрд░рдПрдЬреЗрдВрдЯ, рдЖрджрд┐ рдЬреИрд╕реЗ рд▓рд┐рдмреНрд╕ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдЕрдореВрд░реНрдд рд╣реИрдВред рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЬреЗрдПрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдирд┐рдореНрди-рд╕реНрддрд░ рдХреЗ рд╕рдордХрдХреНрд╖ рджрд░реНрдкрдг рдХрд░рддрд╛ рд╣реИред Axios рдФрд░ superagent рдЬреИрд╕реЗ Libs рдЙрд╕рдХреЗ рдКрдкрд░ рдЦреБрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдореВрд▓рднреВрдд рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
@Velveeta рдореИрдВ рдЧрдпрд╛ рдФрд░ рдЕрдХреНрд╖ рдХреЛрдбрдмреЗрд╕ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдХреЛрдИ рд╕рдмреВрдд рдирд╣реАрдВ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ "рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рдорд╛рдирдХ рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп" рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗ?
@sindresorhus рдХреА рддреБрд▓рдирд╛ рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реА рд╕реВрдЪреА рд╕реЗ рдХрд╣реАрдВ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред https://github.com/sindresorhus/got#comparison
node-fetch/isomorphic-fetch
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдирд┐рдореНрди рд╕реНрддрд░реАрдп рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рд╣реИред рдореБрдЭреЗ рдПрдХ рднреНрд░реВрдг рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрд░реЛрдз рд╢рд┐рдо рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред
рдореИрдВ рдХрд┐рд╕реА рднреА рджрд┐рди рдЕрдЪреНрдЫреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдкреЗрдЯреВрдВрдЧрд╛ред рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд░реАрдпрддрд╛ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝реЗрдЪ рдПрдкреАрдЖрдИ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдбрд┐рдлреИрдХреНрдЯреЛ рдорд╛рдирдХ рд╣реИ, рдмрд╕ рдЧрд▓рдд рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рддрд░рдл рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рд╣реЛрдирд╛ рдХрдо рд╢реЛрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред
@mikeal рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдпрдВ r2 рд╣реИред рдЗрд╕реЗ request
рдХрд╛ рдЖрдзреНрдпрд╛рддреНрдорд┐рдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░реЙрдорд┐рд╕ рдПрдкреАрдЖрдИ рд╣реИ рдФрд░ рдпрд╣ 16kb рдХрдВрдкреНрд░реЗрд╕реНрдб рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Axios рдареАрдХ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Node.js рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡ рдРрд╕рд╛ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдм рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
@ kreig303 рдореИрдВрдиреЗ рдЕрдХреНрд╖рддрдВрддреБ рдХреЗ рдЖрдВрддрд░рд┐рдХ рднрд╛рдЧ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рдпрдорд┐рдд рдПрдХреНрд╕рдПрдЪрдЖрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдореЗрд░рд╛ рд╕реАрдзрд╛ рд╕рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдореГрджреНрдз рд╣реИ, рдФрд░ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдирдВрдЧреЗ рд╣рдбреНрдбрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдореВрд▓рднреВрдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдФрд░ рдлрд┐рд░ рдпрджрд┐ рд╡реЗ рдЪрд╛рд╣реЗрдВ рддреЛ рдЕрдиреНрдп рдЕрдзрд┐рдХ рдлреАрдЪрд░ рд╕рдореГрджреНрдз libs рдХреЛ рдЙрд╕рдХреЗ рдКрдкрд░ рдмрдирд╛рдиреЗ рджреЗрдВред рдореИрдВрдиреЗ рдХреБрдЫ рдРрд╕рд╛ рдЪреБрдирд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдкрд░ рдПрдХ рд╕рддрдд рдПрдкреАрдЖрдИ рд░рдЦрдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЗрдЪ рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдХреНрд╖), рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИред рдпрджрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рд░реИрдкрд░ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЗрд╕реЗ рд▓рдкреЗрдЯрдиреЗ рдФрд░ рдЙрд╕ рдЗрд╖реНрдЯрддрдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдЕрд╡рд╕рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдлреАрдЪрд░ рдФрд░ рдПрдкреАрдЖрдИ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЗ рд▓рд┐рдП рд╣реВрдВ рдЬрд╣рд╛рдВ рднреА рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдареАрдХ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд┐рди рдореБрджреНрджреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдЬрд╛рдЧрд░ рд╕реНрдерд┐рддрд┐ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЬрд┐рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрддрдиреА рд╕рд╛рд░реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╣реЛрдирд╛ рдПрдХ рдЕрднрд┐рд╢рд╛рдк рдФрд░ рдЖрд╢реАрд░реНрд╡рд╛рдж рджреЛрдиреЛрдВ рд╣реИред рдпрд╣ рдПрдХ рдЖрд╢реАрд░реНрд╡рд╛рдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рдерд╛ред рдпрд╣ рдПрдХ рдЕрднрд┐рд╢рд╛рдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдбрдмреЗрд╕ рдХреЛ рд╕рд╛рдл, рд╕реАрдзрд╛, рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдо рддреМрд░ рдкрд░ рд░реЛрдорд╛рдВрдЪрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рдкреНрд░рдпрд╛рд╕ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЗ рдмрд┐рдирд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдВрддрддрдГ рдорд░ рдЬрд╛рддреА рд╣реИред рдФрд░ рдпрд╣ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреА рд╕рдорд╕реНрдпрд╛ рднреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЕрдкрдирд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдХрд┐ рд╡рд╣ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рдкрд░рдд рд╕реЗ рдХреБрдЫ рдмрд╛рд╣рд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдХрдВрдмрд▓ рдХреЗ рдиреАрдЪреЗ рд░рдЦ рджреЗрддрд╛ рд╣реИред
рдЦреИрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХрд╛ рдПрдХ рд╣реА рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ ..
рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдкрд╣рд┐рдпрд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдкрд╣рд┐рдпрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред
@ofrobots рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреБрдирд┐рдВрджрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИред рдпреЗ рдореЗрд░рд╛:
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдмреИрдХ-рдПрдВрдб рд▓рд┐рдм рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЗ рджрд╛рд╡реЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реВрдВ (рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛)ред
@Velveeta рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╣рд╛рдБ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрдЯрд╛-рд▓рд┐рдмреНрд╕ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдлреНрд░рдВрдЯрдПрдВрдб рд╕реЗ рдореЗрд░рд╛ рд╡реЛрдЯ axios
рдХреЗ рд▓рд┐рдП рд╣реИред рдЫреЛрдЯрд╛, рд╕реНрдерд┐рд░ рдФрд░ рдЕрдиреБрдорд╛рдирд┐рддред
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдПрдлрдИ- рдФрд░ рдмреАрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдиреАрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдПрдкреАрдЖрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣рдЬ рд╣реИред
рдлрд╝реЗрдЪ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЖрд╡рд░рдг - рдиреЛрдб-рдлрд╝реЗрдЪ рдХреЗ рд╕рд╛рде рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ axios
рдЬреИрд╕рд╛ рдЕрдиреБрднрд╡ рдЪрд╛рд╣рддреЗ рд╣реИрдВ fetch
API рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, gaxios
рд╣реИред рдпрд╣ Google рдХреЗ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Google API рдХреЗ Node.js рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рднреА HTTP рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╢рдХреНрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдпреБрджреНрдз рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд▓рдЧрддрд╛ рд╣реИ!
(ЁЯСЛ @JustinBeckwith рдкрд░)
рдЕрд░реЗ, рдорд▓рдмреЗ (https://www.npmjs.com/package/wrec) рдореИрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ
рдпрд╣ hapijs рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд http рдХреНрд▓рд╛рдЗрдВрдЯ рднреА рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рдл рд╣реИред
@mikeal рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдпрдВ r2 рд╣реИред рдЗрд╕реЗ
request
рдХрд╛ рдЖрдзреНрдпрд╛рддреНрдорд┐рдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░реЙрдорд┐рд╕ рдПрдкреАрдЖрдИ рд╣реИ рдФрд░ рдпрд╣ 16kb рдХрдВрдкреНрд░реЗрд╕реНрдб рд╣реИред
рдЙрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдорд╛рди рдПрдкреАрдЖрдИ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ ky
рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ ~1kb рдЫреЛрдЯрд╛ рдФрд░ gzipped рд╣реИ, рдФрд░ got
рдХреЗ рд╕рдорд╛рди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Axios рдареАрдХ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Node.js рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡ рдРрд╕рд╛ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдм рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдореИрдВ рдмрдбрд╝реА рд╕рдВрддреБрд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рдиреЛрдб рдореЗрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдореГрджреНрдз рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рдПрдХ рдкрд╛рдЧрд▓ рдирд┐рд░реНрднрд░рддрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред @ofrobots рдиреЛрдб рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдЕрдиреБрднрд╡ рд░рд╣рд╛ рд╣реИ?
рдПрдХ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗрдВрджреНрд░рд┐рдд рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдиреЛрдб рдЬреЗрдПрд╕ рднреА рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдореЗрд░рд╛ рдЬрд╛рдирд╛ рд░рд╣рд╛ рд╣реИред рдлреЗрд╕рдмреБрдХ рд╕реЗ рдЖрд╕рд╛рди рдПрдкреАрдЖрдИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдиреЛрдб рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдкреВрд░реНрдг
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдлреЗрд╕рдмреБрдХ рдерд╛? рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдпрд╣ рд╕рднреА рдПрдкреАрдЖрдИ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЧреЛрдЯреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
рд╣рдо рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЯрд┐рдВрдХрдСрдл-рдЕрдиреБрд░реЛрдз https://github.com/TinkoffCreditSystems/tinkoff-requestред рдЫреЛрдЯрд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд▓рдЧ-рдЗрди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬрдЯрд┐рд▓ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реЗ рдЯрд╛рдЗрдк-рд░реЗрд╕реНрдЯ-рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдкреИрдХреЗрдЬ (рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рд╣реИ)ред
рдЗрд╕рдореЗрдВ wreck
( hapi
рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╕реЗ) рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде https://github.com/grantila/fetch-h2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдЬреНрдЮрд╛рдд рд╕рдВрдЧрдд рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ? рдпрд╣ рдХреЗрдУрдП рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕реНрдЯреНрд░реАрдо-рдкрд░реЗрд╢рд╛рдиреА рджреЗ рд░рд╣рд╛ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдВрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рдПрдХ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдЕрдм рдореИрдВ bent
рдирд╛рдордХ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
рдХреБрдЫ рд╕рдордп рд╕реЗ bent
рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдПрдкреАрдЖрдИ рдЕрдм рдХрд╛рдлреА рд╕реНрдерд┐рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ fetch
рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ред Node.js рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░реАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, package.json рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИред
рддреЛ, рд╣рд╛рдВ, bent
рдореЗрдВ рдЕрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ:
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ @ рдорд╛рдЗрдХреЗрд▓
@csantanapr рдзрдиреНрдпрд╡рд╛рдж! :)
axios рдЖрдкрдХреА рдиреЛрдб рд╕реЗрд╡рд╛ рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: https://github.com/axios/axios/issues/1804
рдореЗрд░реЗ рд▓рд┐рдП, рд╢реАрд░реНрд╖ рдЪрд┐рдВрддрд╛рдПрдВ рд╣реИрдВ:
рдЙрд╕рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рд╕рдмрд╕реЗ рдЖрдо рдСрдкрд░реЗрд╢рди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдВред рдореИрдВ рднреА рдЖрдХрд╛рд░, рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрджрд┐ рдЖрдк рджреЛрдиреЛрдВ рд╕рд┐рд░реЛрдВ рдкрд░ рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпреАрдЖрдЖрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рджреЛрд╖ рджреЗрддрд╛ рд╣реВрдВред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ 2: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВ node-libcurl
рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдЧрд╛ред
@joedski рд╣рд╛рдВ, рдкреНрд░реЙрдХреНрд╕реА рд╕рд╛рдорд╛рди рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд╣рд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдЯреАрдмреАрдПрдЪ, рдЙрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕реЗ рдХрд░рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рдореЗрд░реЗ рд╕рд╣рд┐рдд;) рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдХреВрдж рдирд╣реАрдВ рд░рд╣рд╛ рд╣реВрдВ рдпрд╣ рдлрд┐рд░ рд╕реЗ рддреБрд▓рд╛ тАНтЩАя╕П . рдХреЗ рд▓рд┐рдП
рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдиреЛрдбрдЬ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП node-libcurl
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреЗрд╢реА рдХрд░реНрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдкрдХреНрд╡ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ, рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╛рджрд╛ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИред
рдирдиреНрд╣рд╛-рдЕрдиреБрд░реЛрдз (>1mio рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб)
рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЫреЛрдЯрд╛ - рдФрд░ рдХрдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рдеред рд╣реБрдб рдХреЗ рддрд╣рдд node-fetch
рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдкреЙрдк рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк request
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
node-fetch
рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ "рдмреНрд░рд╛рдЙрдЬрд╝рд░" рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реВрдЪрдирд╛ рджреА рдЧрдИ рд╣реИ (_Node.js_ рд╕реВрдЪреА рдХреЗ рдмрд┐рдВрджреБ рдХреЛ рд╣рд░рд╛рдХрд░)ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдкрд╛ рдЧрдпрд╛ рд╣реИ:
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдорд╛рдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рд╡реЗ рд▓рдЧрднрдЧ ~ 40kb . рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИрдВ
unfetch
рднреА рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
isomorphic-unfetch
Node.js рдХреЗ рд▓рд┐рдП рдиреЛрдб-рдлрд╝реЗрдЪ ( рдХреЛрдб , рдбреЙрдХреНрд╕ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рд╕реЗ рдХрдо рдиреЛрдб-рдлрд╝реЗрдЪ (рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрдЪреВрдВрдХрд┐ рдЗрд╕реЗ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ node-fetch
рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХрд╛рдлреА рдЙрдкрд▓рдмреНрдзрд┐ рд╣реИред рдЗрд╕рдореЗрдВ рдЬрд┐рддрдирд╛ рдХреЛрдб рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╣ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрднреА рднреА рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред fetch
рдПрдХ рдЫреЛрдЯреЗ рдПрдкреАрдЖрдИ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдиреЛрдб.рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рд╕рдВрдЧрдд рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╛рдордорд╛рддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИред
рдирддреАрдЬрддрди, рдХреЛрдб рдЖрдзрд╛рд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реИред рдпрд╣ Node.js рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ Node.js рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЖрдХрд╛рд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВред
node-fetch
рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рд╕рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рдЬреЛ Node.js рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реИ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЛрдб рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдХреЗрддред
IMO, рдЗрд╕ рд╕рдордп рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛ Node.js рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ http рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ fetch
рдФрд░ require(тАШhttpтАЩ)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди API рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред fetch
рдпрд╛ require(тАШhttpтАЩ)
рдХреЛ рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрди рдПрдкреАрдЖрдИ рдХреЗ рдХрд┐рд╕реА рднреА рддрд░рдл рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк bent
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ https://github.com/mikeal/bent/tree/master/src
@mikeal рдореБрдЭреЗ рдПрдХ рдХрдард┐рди рд╕рдордп рдЪреБрдХрддрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ
рдирддреАрдЬрддрди, рдХреЛрдб рдЖрдзрд╛рд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реИред рдпрд╣ Node.js рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ Node.js рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЖрдХрд╛рд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВред
OP рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз 0.4 kB рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рдЬреЛ рджрд┐рдП рдЧрдП рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ?
@ рдбреЛрдореЗрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд╣реБрдд рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рдФрд░ рд╕рдВрдХреЗрдд рд╣реИред рдЖрдкрдХреЛ Blob API
рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ body
рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдорд╛рд░реНрд╢рд▓рд┐рдВрдЧ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ header marshalling
рдХреА рд▓рдЧрднрдЧ 400 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рднреА рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреАрдЖрдИ рдЬреЛ рдЙрдЬрд╛рдЧрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдпрд╣ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк fetch
API рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЯрди рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдЪрддреБрд░ рдФрд░ рдЕрдВрддрддрдГ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рд╣реИред
@ рдорд┐рдХреЗрд▓ рдЖрдкрдиреЗ рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рдиреЛрдб-рдлрд╝реЗрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрди рдЕрдзрд┐рдХ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдлрд╝реЗрдЪ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде 100% рд╕рдВрдЧрдд рд╣реЛ: рдпрд╣ рд╡реНрд╣рд╛рдЯ-рдбрдмреНрд▓реНрдпреВрдЬреА рд╕реЗ рдкрдардиреАрдп рдФрд░ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЖрдкрдХреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╕рдордп рдЪрд╛рд╣рд┐рдП) рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдпрд░ рд╡рд░реНрдХрд░реНрд╕ рдХреА рддрд░рд╣ред
рд╣рдореНрдо, рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ "0.4 kB, рдЯреЗрдмрд▓ рдкрд░ рд╣рд░ рджреВрд╕рд░реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ рдХрдо рдФрд░ рддреБрд▓рд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ 0.25x рд╕реЗ рдХрдо" рдХреЗ рд╕рд╛рде "рдЕрдВрддрддрдГ рдЕрдирд╛рд╡рд╢реНрдпрдХ" рдХреЛрдб рдХреЗ "рдПрдХ рдЯрди" рдХреЛ рдХреИрд╕реЗ рд╡рд░реНрдЧрд╛рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП (рдЬреЛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ "рд╕рд╣реА рд╣реИ" рджреГрд╖реНрдЯрд┐рдХреЛрдг" рдФрд░ "рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛")ред
@domenic рдХреНрдпрд╛ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВ Node.js рдореЗрдВ рдЗрдиреНрд╣реЗрдВ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ node-fetch
рдХреЛрдб рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореИрдВ рдУрдкреА рдореЗрдВ рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ; рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдУрдкреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреА!
@domenic рдЖрд╣ рд╣рд╛рдБ, рд╡реЗ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рдкреЛрд╕реНрдЯ рдмрд╣реБрдд рдкреБрд░рд╛рдиреА рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдкреБрд░рд╛рдиреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ bent
рдЖрдВрдХрдбрд╝рд╛ рдЕрднреА рднреА рдХрд╛рдлреА рдХрд░реАрдм рд╣реИред
@ рд░реВрдЯ/рдЕрдиреБрд░реЛрдз - 500 рдПрд▓рдУрд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ 80/20 рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдФрд░ рд╢реВрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛:
рдЕрдиреБрд░реЛрдз.рдЬреЗрдПрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрдирд╛рдпрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЙрджреНрджреЗрд╢реНрдп рдкрд░ред
рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ! рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЗ рдпреЛрдЧреНрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рд╢реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рд╣реИ: https://github.com/emanuelcasco/http-packages-benchmark
рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдФрд░ рд░рд╛рдп рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
s request
рдЕрдм рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ request рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛-рдкреВрд░реНрдг рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ $# request
postman-request
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдЕрдзрд┐рдХ рдЬреЛрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рдФрд░ рд╕рдВрднрд╡рддрдГ @root/request
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ request
рдХреЗ рд╕реАрдорд┐рдд рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдзрд╛рд░рд╛рдПрдБ
рдпрд╣ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЛ request
рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдЦрд░реНрдЪ рдХрд┐рдП рдмрд┐рдирд╛, рдФрд░ рдЕрдкрдиреА рдкреВрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдРрдк рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╖реНрдЯрдкреНрд░рдж рдмрд╣рд┐рд╖реНрдХрд░рдг рд╕рдВрджреЗрд╢ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рд▓рдЧреА рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореМрдЬреВрдж рд╣реИрдВред
рдФрд░ рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд░реНрдл "рдмрд╣рд┐рд╖реНрдХрд╛рд░" рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред рд╣рд╛рдВ, рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╣рд░ рдХреЛрдИ рдЕрднреА рднреА request
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рдд: рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд╢рдХреЛрдВ рддрдХ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП "рдЕрдиреБрдЧреНрд░рд╣ рдЕрд╡рдзрд┐" рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд╣реАрдВ рдкреНрд▓рдЧ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ, рддрдм рддрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рдирдлрд░рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм "рдмрд╣рд┐рд╖реНрдХрд░рдг" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ "рд╕рдорд░реНрдерди рдХреЗ рдЕрдВрдд" рдпрд╛ "рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдЕрдВрдд" рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдорд╛рдорд▓рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рд╕реБрд╡рд┐рдзрд╛-рдкреВрд░реНрдг рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЬреИрд╕реЗ postman-request
рд╣реЛрддрд╛ рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдЦрд░реАрджрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреАред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдбрд╛рдХрд┐рдпрд╛ рдЯреАрдо рдХреЛ рд╕реМрдВрдкрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ? request
рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпреЛрдВ рди рдЙрдиреНрд╣реЗрдВ postman-request
рд╕реЗ request
рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрд░рдХреНрд╖рдХ рдмрдирдиреЗ рджрд┐рдпрд╛ рдЬрд╛рдП?
рдпрд╣рд╛рдВ рдореЗрд░реА рдЕрдкрдиреА рдЫреЛрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ
рдХреЗрд╡рд▓ рдиреЛрдбрдЬ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛
const http = require('@zhangfuxing/http');
const assert = require('assert');
(async () => {
// http
const httpRes = await http.get('http://baidu.com');
assert(httpRes.includes('<html>'));
// https
const httpsRes = await http.get('https://cnodejs.org/api/v1/topics?limit=1&mdrender=false');
assert(httpsRes.success === true);
// download file: use pipe
const fs = require('fs');
const res = await http.get('http://localhost:3000', {
responseType: "stream"
})
res.pipe(require('fs').createWriteStream('zfx.txt'))
// or use pipeline
const stream = require('stream');
const util = require('util');
const pipeline = util.promisify(stream.pipeline);
const res = await http.get(`${url}/stream`, {
responseType: "stream"
});
await pipeline(res, fs.createWriteStream('zfx.txt'));
// post Buffer
const res = await http.post('http://localhost/upload', Buffer.from('abc'));
assert(res.success === true);
// post Stream
const fs = require('fs');
const readStream = fs.createReadStream('./index.js');
const res = await http.post('http://localhost/upload', readStream);
assert(res.success === true);
// post json
const data = {
username: 'zfx',
password: 'password'
};
const res = await http.post('http://localhost/upload', data);
assert(res.success === true);
// post application/x-www-form-urlencoded
const data = {
username: 'zfx',
password: 'password'
};
const options = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
const res = await http.post('http://localhost/upload', data, options);
assert(res.success === true);
// post FormData
const FormData = require('form-data');
const form = new FormData();
const fs = require('fs');
const readStream = fs.createReadStream('./index.js');
form.append('my_field', 'my value');
form.append('my_buffer', Buffer.from('abc'));
form.append('my_file', readStream);
// Set filename by providing a string for options
form.append('my_file', readStream, '1.js' );
// provide an object.
form.append('my_file', readStream, {
filename: 'bar.jpg',
contentType: 'image/jpeg',
knownLength: 19806
});
const formHeaders = form.getHeaders();
const res = await http.post('http://localhost/upload', form, {
headers: {
...formHeaders,
},
});
assert(res.success === true);
// head
const res = await http.head(url);
assert(res.statusCode === 200);
assert(res.statusMessage === 'OK');
assert(res.headers && typeof res.headers === 'object');
assert(res.statusCode === 200);
assert(res.data === '');
// options
const res = await http.options(url);
assert(res === 'GET,HEAD,POST,PUT,PATCH,DELETE');
})().catch(console.error);
рдпрджрд┐ рдЖрдк рдЖрдзреБрдирд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрд╕рдкреАрдП рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ Wretch рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╛рдпрд╛ рд╣реИ, рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TS рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдкреАрдЖрдИ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА http2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?
@sakalys got
рдореЗрдВ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ HTTP2 рд╕рдорд░реНрдерди рд╣реИ, рдЬреЛ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ (рдЬрд▓реНрдж рд╣реА рдмрд╛рд╣рд░) рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдФрд░ рд╕реНрдерд┐рд░ рд╣реЛрдЧрд╛ред
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдВ рдирд┐рдХрдЯ рдЧрд┐рд░рд╛рд╡рдЯ?
рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реЛрддреЗ рджреЗрдЦрдХрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреБрдЦ рд╣реБрдЖред рдореБрдЭреЗ axios рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдореЗрд░реА рдореБрдЯреНрдареА рдкрд╕рдВрдж рдерд╛ред
рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдорд░реНрдерди рдЕрдиреБрд░реЛрдз рд╕рдордп? рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ, рдиреЗрдЯрд╡рд░реНрдХ рд▓реИрдЧ рд╡рдЧреИрд░рд╣ рдХреЗ рд╕рдордп рдХреА рддрд░рд╣?
рдореИрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдордп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
Google gaxios рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ https://github.com/googleapis/gaxios - axios api over node-fetch
рд╣рдорд╛рд░реЗ рдкрд╛рд╕
got
рд░реАрдбрдореА рдореЗрдВgot
,request
,node-fetch
,axios
, рдФрд░superagent
рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдЪреНрдЫреА рддреБрд▓рдирд╛ рд╣реИ : https://github.com/sindresorhus/got#comparison
_(рдпрджрд┐ рдЖрдк рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рддрдЯрд╕реНрде рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ)_
request
рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЙрдЯ рдХреЗ рдкрд╛рд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЧрд╛рдЗрдб рднреА рд╣реИ: https://github.com/sindresorhus/got/blob/master/migration-guides.md
request
рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Got's рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЛ _move_ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://github.com/sindresorhus/got/blob/master/documentation/migration-guides.md
рдХреНрдпрд╛ рдореИрдВ рдбрд╛рдХрд┐рдпрд╛-рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЖрдЬрд╝рдорд╛рдЙрдВрдЧрд╛ред рд╡реИрд╕реЗ рднреА, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ...
рдпрд╣ рдЙрддреНрдХреГрд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЛрд╕реНрдЯрдореИрди рд░рдирдЯрд╛рдЗрдо рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрдЧрдлрд┐рдХреНрд╕ рд╣реИрдВ рдЬреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рддрдп рдирд╣реАрдВ рд╣реИрдВред
Redaxios рджреЗрд╢реА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП 800 рдмрд╛рдЗрдЯ рдХреА рддрд░рд╣ рд╣реИ https://github.com/developit/redaxios
рднрдЧрд╡рд╛рди !! рдореИрдВ 3 рдШрдВрдЯреЗ рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдмрд╛рд░-рдмрд╛рд░ рдЕрдкрдирд╛ рдХреЛрдб рдЪреЗрдХ рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕рдиреЗ рдореБрдЭреЗ 404 рддреНрд░реБрдЯрд┐ рджреА, рдореИрдВ рдирд┐рд░рд╛рд╢ рдерд╛ред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ Fetch рдХреЗ рд╕рд╛рде рдЬрд╛рдКрдВрдЧрд╛ред
https://www.npmjs.com/package/teeny-request рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Google API рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреБрд░реЛрдз рдХреА рддрд░рд╣, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЫреЛрдЯрд╛ - рдФрд░ рдХрдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рдеред рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдиреЛрдб-рдлрд╝реЗрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдкреЙрдк рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓реЛрдб рдФрд░ рдкрд╛рд░реНрд╕ рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ node-fetch
рдпрд╛ requests
рдХрд╛ рдлреЛрд░реНрдХрдб рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рдЕрдм рдкреЛрд╕реНрдЯрдореИрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдЕрдкрдиреА рдиреЛрдб рдпрд╛рддреНрд░рд╛ рд╢реБрд░реВ рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЖрд╕рд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Axios рдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрднреА рднреА рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИЁЯСОЁЯП┐
рдореБрдЭреЗ рдпрд╣рд╛рдВ рдлрд┐рди рди рджреЗрдЦрдХрд░ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖред
рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ url-request
?
рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
url-request
?
рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдпреБрд╡рд╛ (1 рджрд┐рди!)
@cjk рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреЛ рдХреМрди рд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкрд╕рдВрдж рдЖрдПрдВрдЧреА? рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рддреНрд╡рд░рд┐рдд рдХреНрдпреВред рджреЗрд╢реА рдиреЛрдбрдЬ http рдХреЗ рдмрдЬрд╛рдп рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдлрд╛рдпрджрд╛ рд╣реИ?
@cgarrovillo рдЫреЛрдЯрд╛ рдХреЛрдб => рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡
рдпреВрдЖрд░рдПрд▓-рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдмрд╕ рдлреАрдЪрд░ рд╕реЗрдЯ рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ
@cjk рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреЛ рдХреМрди рд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкрд╕рдВрдж рдЖрдПрдВрдЧреА? рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
@Debdut рдореИрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдЬреИрд╕реЗ:
url-request
рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдФрд░ рдХреИрд╕реЗред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХрдИ рдЙрджрд╛рд╣рд░рдг рдкрд╕рдВрдж рдЖрдП!
рдмрд╕ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдХрд░рддреЗ рд░рд╣реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рди рдХрд░ рджреЗред
рдХреЛрдгреАрдп рдореЗрдВ rxjs рдФрд░ рдирдореВрджрд╛рд░ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИрдВ
рдХрд┐рд╕реА рднреА lib рдореЗрдВ рдХреБрдХреА рдЬрд╛рд░ рдЕрдиреБрд░реЛрдз рдХреА рддрд░рд╣ рд╣реИ?
рдкрд░реАрдХреНрд╖рдг рдиреЛрдб рд▓рд╛рд▓ рдХреЗ рд╕рд╛рде HTTP рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд┐рд▓рд╛ред рдореИрдВ
рдкрд░рд┐рдгрд╛рдо
HTTP рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред (рдПрдХрд▓ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛)ред
FAILS HTTPS рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд░рддреЗ рд╕рдордпред рдореБрдЭреЗ рдорд┐рд▓рд╛ :
RequestError: connect ECONNREFUSED 127.0.0.1:443
рдкрд╣рд▓реЗ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдиреЛрдб-рд░реЗрдб рдПрдирд╡реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╣реИред рдмрд╛рдж рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рд░реЗрдкреЛ рдореЗрдВ рдПрдХ рдЦреБрд▓рд╛ рдореБрджреНрджрд╛ рд╣реИ : https://github.com/sindresorhus/got/issues/1414ред рдореИрдВ
рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп _axios_ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░рдг рд╣реИред рдореИрдВ
рд╕рд┐рд░реНрдлрд╝ рдЗрддрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЬрд╛рдиреЛред
@damdauvaotran рдХрд┐рд╕реА рднреА lib рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреА рддрд░рд╣ рдХреБрдХреА рдЬрд╛рд░ рд╣реИ?
рджреЗрдЦреЗрдВ get.js, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЧрд╛рдЗрдб ред
gaxios рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдпрд╣рд╛рдВ рдПрдХ рдПрдирдкреАрдПрдо рдЯреНрд░реЗрдВрдб рд▓рд┐рдВрдХ рд╣реИ рдЬреЛ рд╢реАрд░реНрд╖ рдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд░реНрдгрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдХ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, node-fetch
рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рд╣реИред
рджрд┐рд▓рдЪрд╕реНрдк @ericsnap ... node-fetch рдФрд░ axios рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдореЗрдВ рдХреНрд░рдорд╢рдГ рдкрд╣рд▓реЗ рдФрд░ рддреАрд╕рд░реЗ (рд▓рдЧрднрдЧ рджреВрд╕рд░реЗ) рд╣реИрдВред
рдФрд░ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдЯреНрд░реИрдкрд▓рд╛рдЗрди рдХреЛ gaxios рдбреЙрдХреНрд╕ рд╕реЗ рдиреЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ:
рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛ рдиреЛрдб-рдлрд╝реЗрдЪ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрдХреНрд╖ рдЬреИрд╕рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
рддреЛ gaxios рджреЛ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рдореИрдВ gaxios рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдордЬреЗрджрд╛рд░ рд╣реИред
https://www.npmtrends.com/node-fetch-vs-got-vs-axios-vs-superagent
рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ @sindresorhus рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХрд▓реНрдк рд▓рд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдПрдкреАрдЖрдИ рдХреЗ рдЕрднреНрдпрд╕реНрдд рд╣реЛрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рджрд┐рди рдХрд╛ рд╕рдордп рд▓рдЧрд╛ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛рдлреА рдЕрдЪреНрдЫреЗ рд░рд╣реЗ рд╣реИрдВ)ред рдореИрдВрдиреЗ extend
рдХреЗ рдХрд╛рд░рдг рдПрд▓рдУрд╕реА рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЗрддрдирд╛ рд╕реЗрдЯ рдЕрдк рдХрд┐рдпрд╛ рд╣реИ, рдлрд┐рд░ рдХреЙрд▓ рдЬрдЧрд╣реЗрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдЖрдорддреМрд░ рдкрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдореБрдЯреНрдареА рднрд░ рдПрд▓рдУрд╕реА рд╣реИрдВред рдпрд╣ рдЕрдиреБрд░реЛрдз, рдЕрдиреБрд░реЛрдз-рд╡рд╛рджрд╛, рдЕрдиреБрд░реЛрдз-рд╡рд╛рджрд╛-рджреЗрд╢реА рдиреГрддреНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрд┐рдХрдирд╛ рд▓рдЧрддрд╛ рд╣реИред рдПрдХ рдмреЗрд╣рддрд░реАрди рдлреАрдЪрд░-рд╕реЗрдЯ рднреАред рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдФрд░ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @sindresorhus!
рдореИрдВ рдкреНрд░рд╡рд╛рд╕рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдмрд╣реБрдд рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓рдо рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рд╕рд╛рде-рд╕рд╛рде рд░рдЦрдиреЗ рдкрд░ рдХреБрдЫ рдХрд╛рдореЛрдВ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕рд┐рддрд╛рд░реЗ рдФрд░ рд▓рд╛рдЦреЛрдВ рдбрд╛рдЙрдирд▓реЛрдб рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рд╕реИрдХрдбрд╝реЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ, рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдпрд╛ рд╡рд┐рд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред