Faraday: рдкрд╛рд░реНрд╕рд░ рдХреЗ рдмрд╛рдж рд░реЗрдЯреА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЕрдкреНрд░реИрд▓ 2021  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА

  • рдлреИрд░рд╛рдбреЗ рд╕рдВрд╕реНрдХрд░рдг: 1.4.1
  • рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг: 2.7.2

рдореБрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг

_рдПрдирдмреА: рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп faraday_middleware ред рдЪреВрдВрдХрд┐ рдЗрд╕рдореЗрдВ рджреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдПред_

рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдореИрдВ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ) рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдЪрд▓реЗрдЧрд╛ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдХреЛрдИ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореИрдВ :json рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж :retry рдорд┐рдбрд▓рд╡реЗрдпрд░, env.body рдХреЛ :retry рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ :retry_if рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ :retry_if рдмреНрд▓реЙрдХ рдХреЛ JSON -рдбрд┐рдХреЛрдбреЗрдб рд╕рдВрджреЗрд╢ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдз рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдХрд▓реНрдк рдЗрд╕реЗ retry_if рдореЗрдВ рджреВрд╕рд░реА рдмрд╛рд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИ

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

<strong i="23">@_client</strong> ||= Faraday.new(url: ROOT_URL) do |f|
      f.options[:timeout] = 10
      f.headers['Content-Type'] = 'application/json'
      f.use :instrumentation, name: INSTRUMENTATION_EVENT_NAME
      f.response :json, content_type: /\bjson$/
      f.request :retry, FARADAY_RETRY_OPTIONS
end

рдиреЛрдЯ: рдпрджрд┐ рдореИрдВ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ f.instance_variable_get :@handlers рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред

рдЬрдм рдХреЛрдИ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ :retry рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ :retry_if рдмреНрд▓реЙрдХ рдореЗрдВ рдЗрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:

(byebug) environment.response.to_hash.without(:url)
{:status=>405, :body=>"{\"message\": \"The method is not allowed for the requested URL.\"}\n", :response_headers=>{"date"=>"Fri, 23 Apr 2021 18:17:16 GMT", "content-type"=>"application/json", "content-length"=>"64", "connection"=>"keep-alive", "server"=>"gunicorn", "allow"=>"HEAD, OPTIONS, GET"}}

(byebug) environment.response.body
"{\"message\": \"The method is not allowed for the requested URL.\"}\n"
(byebug) environment.response.body.class
String

рдореВрд▓ рд░реВрдк рд╕реЗ, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд╣рд▓реЗ рдЪрд▓рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

JSON рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ Content-Type рд╣реЗрдбрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрдЯрдореНрдкреНрдб рд╣реВрдВред

рдореЗрд░рд╛ рдПрдХрдорд╛рддреНрд░ рдЕрдиреБрдорд╛рди рдпрд╣ рд╣реИ рдХрд┐ #response рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣рдореЗрд╢рд╛ #request рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ retry рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ #request рдорд┐рдбрд▓рд╡реЗрдпрд░ рдПрдХ рдорд┐рдереНрдпрд╛ рдирд╛рдо рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдп @mvastola , рдЖрдк рдЬреЛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ!
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реЗ рдЬрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реНрдЯреИрдХ рдХреА рдкреНрд░рдХреГрддрд┐ рд░реИрдХ рд╕реНрдЯреИрдХ рдХреЗ рд╕рдорд╛рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рдЯреНрд░реИрд╡рд░реНрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЗрдВ

рдЗрд╕рд▓рд┐рдП рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ ЁЯЩМ! :json рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ :retry рдПрдХ рдХреЗ рдмрд╛рдж рд▓реЗ рдЬрд╛рдХрд░, рдЖрдк рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ :retry рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреЙрдбреА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рджреЗрдЧрд╛ред

рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдХреЛрдИ рдФрд░ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдлреЙрд▓реЛ-рдЕрдк рдХрд░реЗрдВ

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрджреНрдпрддрди рдХрд░реЗрдВ: рдореИрдВрдиреЗ рд╕рдЪрдореБрдЪ рдХрдиреЗрдХреНрд╢рди рдХреЙрдиреНрдлрд┐рдЧ рдмреНрд▓реЙрдХ рдореЗрдВ рджреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдХреНрд░рдо рдХреЛ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдпрд╛ (рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реБрдП рдХрд┐ "рдпрд╣ рд╕рдВрднрд╡рддрдГ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛") рдФрд░ рдЕрдм рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рд╣рд╛рдп @mvastola , рдЖрдк рдЬреЛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ!
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реЗ рдЬрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реНрдЯреИрдХ рдХреА рдкреНрд░рдХреГрддрд┐ рд░реИрдХ рд╕реНрдЯреИрдХ рдХреЗ рд╕рдорд╛рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рдЯреНрд░реИрд╡рд░реНрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЗрдВ

рдЗрд╕рд▓рд┐рдП рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ ЁЯЩМ! :json рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ :retry рдПрдХ рдХреЗ рдмрд╛рдж рд▓реЗ рдЬрд╛рдХрд░, рдЖрдк рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ :retry рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреЙрдбреА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рджреЗрдЧрд╛ред

рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдХреЛрдИ рдФрд░ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдлреЙрд▓реЛ-рдЕрдк рдХрд░реЗрдВ

рддреНрд╡рд░рд┐рдд, рджрдпрд╛рд▓реБ рдФрд░ рдЧрд╣рди рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдбреЙрдХреНрд╕

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рджреЗрдЦрд╛ рдерд╛, рдФрд░ рдЗрд╕рд╕реЗ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред (рдореИрдВрдиреЗ рддрд╕реНрд╡реАрд░ рдФрд░ "рдЕрдВрддрд░рддрдо" рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рди рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХреА рдереА рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдСрд░реНрдбрд░ рдХреЛ рдЙрд▓рдЯрдирд╛ рдерд╛ред)

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

рд╡рд┐рдиреНрдпрд╛рд╕

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЕрдирдЬрд╛рди рдмрдирд╛рддрд╛ рд╣реИ:

  • рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП faraday рдореЗрдВ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдп рд╣реИрдВ, рдФрд░ рд╡реЗ рд╡рд┐рдирд┐рдореЗрдп рдирд╣реАрдВ рд╣реИрдВ: рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝рд╛ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реНрдЯреИрдХ (рдпрд╛ рдСрд░реНрдбрд░рд┐рдВрдЧ) рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред

  • рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдпреЗ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдо/рд╕рдореВрд╣ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдпрд╣ рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреВрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рджреЛрдиреЛрдВ рд╕рд┐рд░реЛрдВ рдкрд░ _not_ рдЪрд▓рддрд╛ рд╣реИ-> рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╛рд░реНрдЧ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдЕрдиреБрд░реЛрдз" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред рд╕рдВрдмрдВрдзрд┐рдд рдЪреАрдЬреЗрдВред

  • рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░реИрдХ рдХреАрд╡рд░реНрдб, use , рдлреИрд░рд╛рдбреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрд╕ рддрд░рд╣ рдХреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ) - рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЛрдиреЛрдВ рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИред

рд╡реИрд╕реЗ рднреА рдЕрдЧрд░ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЛ рдЯреНрд╡реАрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред рдЕрдиреНрдпрдерд╛ рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдпрд╣ рдЕрднреА рдорд┐рд▓рддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рдорд╛рди рднреНрд░рдо рд╕реЗ рдкреАрдбрд╝рд┐рдд рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж @mvastola , рдпрд╣ рдЕрдореВрд▓реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ ЁЯЩП!
рдФрд░ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдЗрди рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред

рдЬрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдмрд╣реБрдд рджреВрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдпреЛрдЧрджрд╛рди рдХрд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛ рдЪрд░реНрдЪрд╛ рдзрд╛рдЧрд╛ рд╣реИ!)

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

t3hk0d3 picture t3hk0d3  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

subvertallchris picture subvertallchris  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattmill30 picture mattmill30  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amrrbakry picture amrrbakry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yykamei picture yykamei  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ