Faraday: рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рддрд╛ рд╣реИ

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

2014 рдореЗрдВ HTTP рдпреБрдХреНрддрд┐ рдмрджрд▓ рдЧрдИ рд╣реИ рдФрд░ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд╛рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрдиреЗрдХреНрд╢рди.рдЖрд░рдмреА рдореЗрдВ рдЖрдкрдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкрджреНрдзрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ, рддрд╛рдХрд┐ рдПрдХ рдирд┐рдХрд╛рдп рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЗрд╕реЗ рд╢реВрдиреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ?

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

рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ:

conn = Faraday.new
body = {
some_key: 'some value'
}
conn.run_request(:delete, url, body, headers)

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

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

рдЖрдкрдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╢реАрдШреНрд░ рд╣реА рдПрдХ рдкреАрдЖрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╣рд╛рдп @ рдХрд╛рд░реНрд▓рдмреАрд╕реА18 ,

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ HTTP 2.0 рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

https://tools.ietf.org/html/rfc7231#section -4.3.5

FYI рдХрд░реЗрдВ: рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдпрд╣реА рдмреНрд▓реЙрдХ GET && HEAD рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛:

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

рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЬрдирд╕рдВрдкрд░реНрдХ рдХреИрд╕реЗ рдмрдирд╛рдКрдВ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ HTTP 2.0 рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ HTTP 1.1 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ

рдпрджрд┐ рдЖрдк рдкреАрдЖрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред
рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ faraday рдлреЛрд░реНрдХ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдлреЛрд░реНрдХ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдлрд┐рд░ рд╣рдорд╛рд░реА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдкреАрдЖрд░ рдмрдирд╛рдПрдВред

рдзрдиреНрдпрд╡рд╛рдж @iMacTiaред рдореИрдВ рдЗрд╕реЗ рд▓рдЧрд╛рдКрдВрдЧрд╛ред рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рд╣реИ? рдпрд╣ рдмрджрд▓рд╛рд╡ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕реЗрд╡рд░ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдлреИрд░рд╛рдбреЗ 1.0.0 рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рдирдиреЗ рджреЗрдВред

рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрд╡рд░ рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдордиреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде v1.0 рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рд╣реИред
рдпрджрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 1.0 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬрд┐рд╕рдХреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рд░рд┐рд▓реАрдЬрд╝ рддрд┐рдерд┐ рдирд╣реАрдВ рд╣реИ)ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ GET, HEAD рдФрд░ DELETE рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдПрдХ рдмреЙрдбреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ?

@iMacTia рдореИрдВ

рдпрд╣ рдореЗрд░реЗ https://github.com/lostisland/faraday/pull/695#issuecomment -305145499 рдкрд░ рдЕрдиреБрд╡рд░реНрддреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдиреАрдЪреЗ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

conn = Faraday.new(...)
conn.get('/path', {page: 1, per: 10})

# performs "GET /path?page=1&per=10"

рд╡рд┐рдХрд▓реНрдк 1 рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛:

conn = Faraday.new(..., standard: :http1_1)
conn.get('/path', {page: 1, per: 10})

# performs "GET /path" with body "page=1&per=10" (assuming www_form_url_encoded request)

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рдХрд▓реНрдк 2 рдХрд╛ рдЕрд░реНрде рдХреБрдЫ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реЛрдЧрд╛:

conn = Faraday.new(...) # note no special config here
conn.get('/path', {page: 1, per: 10}, body: {some_key: 'some_value')

# performs "GET /path?page=1&per=10" with body "some_key=some_value"

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╡рд┐рдХрд▓реНрдк 2 рдХреЗрд╡рд▓ рд░реВрдмреА> = 2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реВрдмреА 1.9 рдХреАрд╡рд░реНрдб рдкреИрд░рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд░реВрдмреА 1.9 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реИред рд░реВрдмреА 1.9 рдХрдИ рд╕рд╛рд▓ рдкреБрд░рд╛рдиреА рд╣реИред рдореИрдВ рдиреНрдпреВрдирддрдо рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрдо рд╕реЗ рдХрдо 2.0 рддрдХ рдЯрдХреНрдХрд░ рджреЗрдиреЗ рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдлреИрд░рд╛рдбреЗ рдХреЗ v1.0 рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЗрдирд▓рд╛рдЗрди рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд┐рдХрд▓реНрдк 2 рдореЗрд░реА рд░рд╛рдп рдореЗрдВ http 1.1 spec рдХрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреИрд░рд╛ рдФрд░ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рдХрд╛рдп рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реВрдмреА 1.9 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА http рдХрд▓реНрдкрдирд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛ рд░рд╣реА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдлреИрд░рд╛рдбреЗ рдХреЗ V1 рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╣реЛрдЧреАред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА (рд░реВрдмреА рд╡реА, рдкреИрд░рд╛ рдкрд╛рд╕рд┐рдВрдЧ)ред рд╢рд╛рдпрдж рдореИрдВ рдЬреНрдпрд╛рджрд╛ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ....

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд░реВрдмреА 1.9 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реИред рд░реВрдмреА 1.9 рдХрдИ рд╕рд╛рд▓ рдкреБрд░рд╛рдиреА рд╣реИред рдореИрдВ рдиреНрдпреВрдирддрдо рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрдо рд╕реЗ рдХрдо 2.0 рддрдХ рдЯрдХреНрдХрд░ рджреЗрдиреЗ рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдлреИрд░рд╛рдбреЗ рдХреЗ v1.0 рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЗрдирд▓рд╛рдЗрди рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд┐рдХрд▓реНрдк 2 рдореЗрд░реА рд░рд╛рдп рдореЗрдВ http 1.1 spec рдХрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреИрд░рд╛ рдФрд░ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рдХрд╛рдп рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ред

рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рднреА v1.0 . рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреА

рддреЛ рдПрдХ v1.0 рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрдд рдПрдкреАрдЖрдИ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд╕рд┐рд░, рдЕрдиреБрд░реЛрдз рд╣рдЯрд╛рдПрдВ

conn = Faraday.new(...) # note no special config here
conn.get(path, url_params, body: {...})
# second parameter is URL PARAMS, optionally accept a named parameter for request body
# works the same for head and delete

рдкреЛрд╕реНрдЯ, рдкреБрдЯ, рдкреИрдЪ рдЕрдиреБрд░реЛрдз

conn = Faraday.new(...) # note no special config here
conn.post(path, body, url_params: {...})
# second parameter is REQUEST BODY, optionally accept a named parameter for url_params
# works the same for put and patch

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╣рдо рд╣рд░ рд╕рдВрднрд╡ рд╕рдВрдпреЛрдЬрди рдХреЛ рдХрд╡рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкреЛрд╕реНрдЯ/рдкреБрдЯ/рдкреИрдЪ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рднреА рдмрдврд╝рд╛ рд░рд╣реЗ рд╣реИрдВ!

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред рдХреНрдпрд╛ рд╣рдо рдЕрдкрдиреЗ рдкреАрдЖрд░ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ V1 рд╢рд╛рдЦрд╛ рдХрдЯ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЙрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реБрдИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ!

рдореИрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╡реА 1 рд╢рд╛рдЦрд╛ рдмрдирд╛рдЙрдВрдЧрд╛ рддрд╛рдХрд┐ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рд╣реЛ рдФрд░ рдореИрдВ рдкреАрдЖрд░ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рджреВрдВрдЧрд╛ :)

рдирдорд╕реНрддреЗ @ Carlbc18 рдмрд╕ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╢рд╛рдЦрд╛ 1.0 рдЕрдм рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред

рд╢реБрдХреНрд░рд┐рдпрд╛ рд╢реБрдХреНрд░рд┐рдпрд╛! рдореИрдВ

рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ:

conn = Faraday.new
body = {
some_key: 'some value'
}
conn.run_request(:delete, url, body, headers)

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

рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ?

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

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдкреАрдЖрд░ рдХреЛ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдПрдХ рдФрд░ 0.x рд░рд┐рд▓реАрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рддреЛ 1.0 рд╢рд╛рдЦрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╢рд╛рдЦрд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ

https://github.com/lostisland/faraday/pull/855 рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╕реМрджрд╛ рдкреАрдЖрд░ рд╣реИред

рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ. рдЖрдк рдПрдХ рдирд┐рдХрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрд░рд╛рдбреЗ рдореЗрдВ рдмреНрд▓реЙрдХ рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

conn.delete(url) do |req|
  req.body = { some_key: 'some value' }
end

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

conn.delete('/foo/1') do |req|
  req.headers["X-Men"] = "marvel"
  req.params[:confirm] = 1
  req.body = { some_key: 'some value' }
end
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

asf-stripe picture asf-stripe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

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