Node.js рдХреЗ рд╕рд╛рде рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдЧрд╛рдЗрдб

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

рдпрд╣ рдкреЛрд╕реНрдЯ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ Node.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдХреИрд╕реЗ рд╕реАрдЦрд╛, рдФрд░ 3 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╡реЗрд╢реЛрдВ, рдПрдХреНрд╕рдкреНрд░реЗрд╕, Ko.js рдФрд░ Hapi.js. рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг HTTP рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддреБрд▓рдирд╛ рдХреАред

рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рдПрдХ рдЕрдиреБрднрд╡реА Node.js рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рд╕реЛрдЪреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╕рднреА рдкреНрд░рд╛рдердорд┐рдХ / рд╕рд░рд▓ рд╣реИред ┬п \ _ (уГД) _ / уГДред

рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдХреБрдЫ рдореВрд▓ рдмрд╛рддреЗрдВ


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

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХреЛрд░реНрд╕ рдкрд╕рдВрдж рдЖрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рд╣реБрдб рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдПрдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдХрдВрдкреНрдпреВрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЪрдорддреНрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рд╡рд┐рд╡рд░рдг рдкрдврд╝реЗрдВред

рдЫрд╡рд┐

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдХреЗрд╡рд▓ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред HTTP (рд╣рд╛рдЗрдкрд░рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рдХрдВрдкреНрдпреВрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рдВрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрдИ рд╣реИрдВ, рдЬреИрд╕реЗ рдПрд╕рдПрдордЯреАрдкреА (рд╕рд┐рдВрдкрд▓ рдореЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) , рдПрдлрдЯреАрдкреА (рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) , рдкреАрдУрдкреА 3 (рдкреЛрд╕реНрдЯ рдСрдлрд┐рд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ 3), рдФрд░ рдЗрд╕реА рддрд░рд╣ред

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

рдЫрд╡рд┐
рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рдмрдирд╛рдо рдУрдПрд╕рдЖрдИ рд╕реЗ: рджреЛ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ?

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЖрдорддреМрд░ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ HTTP, рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЦреБрд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

рдЫрд╡рд┐

рд╕рд░реНрд╡рд░ рдФрд░ рдЧреНрд░рд╛рд╣рдХ


рд╕рд░реНрд╡рд░ рд╢рдмреНрдж рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрджреНрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреЛрдиреЛрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ (рднреМрддрд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ рдЬреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░реЛрдВ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ (рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдСрдирд▓рд╛рдЗрди рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред

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

рдЫрд╡рд┐
URL рд╕рдВрд░рдЪрдирд╛

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

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

рдЫрд╡рд┐
рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ

рджреЛрдиреЛрдВ рдкреВрд░реНрдг-рдореБрдХреНрдд рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпреЛрдЬрдирд╛рдПрдВ, URL рдкреБрдирд░реНрд▓реЗрдЦрди, рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд╕рдореАрдкрддрд╛ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдирд╛рдо рдХреБрдЫ рд╣реИред Apache рдФрд░ NGINX C. рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдЖрдк рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╛рдпрдерди , golang.org/pkg/net/http , рд░реВрдмреА , рдпрд╣ рд╕реВрдЪреА рдХрд╛рдлреА рд╕рдордп рддрдХ рдЪрд▓ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рднрд╛рд╖рд╛рдПрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдХрд░рддреА рд╣реИрдВред

Node.js рдХреЗ рд╕рд╛рде рдПрдХ HTTP рд╕рд░реНрд╡рд░ рдмрдирд╛рдирд╛


Node.js рдХреНрд░реЛрдо рд╡реА 8 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирдЯрд╛рдЗрдо рд╣реИред рдпрд╣ http рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ HTTP рд╕рд░реНрд╡рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдореВрд▓ HTTP рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо , рдкрде рдФрд░ URL рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ Node.js рджреЗрд╢реА рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред

рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВред

const http = require('http') //   HTTP-  Node.js const fs = require('fs') //      const path = require('path') //        const url = require('url') //     URL 

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

 const mimeTypes = { '.html': 'text/html', '.js': 'text/javascript', '.css': 'text/css', '.ico': 'image/x-icon', '.png': 'image/png', '.jpg': 'image/jpeg', '.gif': 'image/gif', '.svg': 'image/svg+xml', '.json': 'application/json', '.woff': 'font/woff', '.woff2': 'font/woff2' } 

рдЕрдм рд╣рдо рдлрд╝рдВрдХреНрд╢рди http.createServer() рд╕рд╛рде рдПрдХ HTTP рд╕рд░реНрд╡рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ http.Server рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг http.Server ред

 const server = http.createServer() 

рд╣рдо рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде createServer() рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рд╣рд░ рдмрд╛рд░ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

 server.on('request', (req, res) => { //     }) 

рд╕рд░реНрд╡рд░ рдХреЛ рдкреЛрд░реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде server рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА listen рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5000 ред

 server.listen(5000) 

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

response рдСрдмреНрдЬреЗрдХреНрдЯ ServerResponse рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдПрдХ рд▓реЗрдЦрди рдпреЛрдЧреНрдп рд╕реНрдЯреНрд░реАрдо рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдХреНрд╡реЗрд░реА рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

  • рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрд┐рдирд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ

     const parsedUrl = new URL(req.url, 'https://node-http.glitch.me/') let pathName = parsedUrl.pathname let ext = path.extname(pathName) //   URL    '/',   '/' //      URL    'Location' if (pathName !== '/' && pathName[pathName.length - 1] === '/') { res.writeHead(302, {'Location': pathName.slice(0, -1)}) res.end() return } //     ,  index.html //     ┬л.html┬╗       if (pathName === '/') { ext = '.html' pathName = '/index.html' } else if (!ext) { ext = '.html' pathName += ext } 

  • рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рд╛рдердорд┐рдХ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдореМрдЬреВрдж рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЬрд╡рд╛рдм рджреЗрдВ

     //     ,       const filePath = path.join(process.cwd(), '/public', pathName) // ,       fs.exists(filePath, function (exists, err) { //     ,  404 Not Found if (!exists || !mimeTypes[ext]) { console.log('  : ' + pathName) res.writeHead(404, {'Content-Type': 'text/plain'}) res.write('404 Not Found') res.end() return } //        200 OK, //       res.writeHead(200, {'Content-Type': mimeTypes[ext]}) //        const fileStream = fs.createReadStream(filePath) fileStream.pipe(res) }) 


рд╕рднреА рдХреЛрдб рдЧреНрд▓рд┐рдЪ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд░реАрдорд┐рдХреНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

https://glitch.com/edit/#!/node-http

Node.js рдЪреМрдЦрдЯреЗ рдХреЗ рд╕рд╛рде рдПрдХ HTTP рд╕рд░реНрд╡рд░ рдмрдирд╛рдирд╛


рдПрдХреНрд╕рдкреНрд░реЗрд╕ , Ko.js рдФрд░ Hapi.js рдЬреИрд╕реЗ Node.js рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреА рдорд┐рдбрд╡реЗрдЕрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЦреБрдж рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред

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

рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╛ рдЕрдкрдирд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд▓рдЧрдЗрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ Node.js рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред

 const express = require('express') const app = express() //         app.use(express.static('public')) //  index.html,      //     res.sendFile() app.get('/', (req, res) => { res.sendFile(__dirname + '/public/index.html') }) app.listen(5000) 

Koa.js рдХреЗ рдореВрд▓ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕рдорд╛рди рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Koa.js рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЙрд▓рдмреИрдХ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП koa-static рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 const serve = require('koa-static') const koa = require('koa') const app = new koa() //         //   koa-static    index.html    app.use(serve(__dirname + '/public')) app.listen(5000) 

Hapi.js рдЕрдиреБрдХреВрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ server рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШреВрдорддрд╛ рд╣реИред рдпрд╣ рд░рд╛рдЙрдЯрд┐рдВрдЧ, рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди, рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реНрдереИрддрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ inert рдХрд╣рд╛ inert ред

 const path = require('path') const hapi = require('hapi') const inert = require('inert') //        const server = new hapi.Server({ port: 5000, routes: { files: { relativeTo: path.join(__dirname, 'public') } } }) const init = async () => { // server.register()      await server.register(inert) // inert     //       server.route({ method: 'GET', path: '/{param*}', handler: { directory: { path: '.', redirectToSlash: true, index: true } } }) await server.start() } init() 

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

рд╕рдорд╛рдкрди


рдпрджрд┐ рдЪреАрдЬреЛрдВ рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрдХреНрд╖ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрд▓реЗрдЦ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рдЪрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рднреА Node.js рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рднреА рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдФрд░ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

Source: https://habr.com/ru/post/hi435970/


All Articles