Faraday: OPTIONS HTTP ๋™์‚ฌ์— ๋Œ€ํ•œ ๋ฉ”์„œ๋“œ ์—†์Œ

์— ๋งŒ๋“  2013๋…„ 09์›” 24์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: lostisland/faraday

์ด ๋ฐฐ์—ด์— ํฌํ•จ๋˜์–ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

https://github.com/lostisland/faraday/blob/master/lib/faraday/connection.rb#L137

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ฐœ์ธ์ ์œผ๋กœ @mislav ์— ๋™์˜ํ•˜์ง€๋งŒ @sferik ์˜๊ฒฌ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๊ณ  options ๋Š” ๋‹จ์ˆœํžˆ attr_reader ์ด๋ฉฐ ์ฃผ๋กœ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ณ€๊ฒฝ ์ค‘์ธ ์ผ๋ถ€ ๊ตฌํ˜„์„ ์ž ์žฌ์ ์œผ๋กœ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœ API์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋Š” Faraday 1.0์—์„œ๋งŒ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋•Œ๊นŒ์ง€ ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ๋‹ค์‹œ ๋…ผ์˜ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  18 ๋Œ“๊ธ€

์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ Connection์—๋Š” ์ด๋ฏธ options ์ ‘๊ทผ์ž๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ OPTIONS ์š”์ฒญ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์šฉ๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. run_request(:options) ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์ˆœ์ง„ํ•œ ๊ฐ€์ •์ด์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ์šฉ ํŒจํ„ด์„ ๊ฐ–๋Š” ๊ฒƒ๋ณด๋‹ค :options ๋ฅผ :configuration ์— ๋‹ค์‹œ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์ง€ ์•Š์„๊นŒ์š”?

๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” HTTP๋ฅผ ์ง€์›ํ•˜๋„๋ก ์„ค์ •๋œ API๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
run_request ํ†ตํ•ด ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

IMHO, ์ด ๊ฒฐ์ •์„ ์žฌ๊ณ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. OPTIONS ๋Š” ์œ ํšจํ•œ HTTP ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด๊ณ  run_request ๊ฐ€ ํ•ญ์ƒ ์ ํ•ฉํ•œ ๋Œ€์•ˆ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ณต๊ฐœ API๋ฅผ ์ค‘๋‹จํ•˜๋ ค๋ฉด ๋‚˜์ค‘์— ๊ฒฐ์ •์„ ํ›„ํšŒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค 1.0์„ ์ถœ์‹œํ•˜๊ธฐ ์ „์— ์ง€๊ธˆ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

run_request ๊ฐ€ ํ•ญ์ƒ ์ ์ ˆํ•œ ๋Œ€์•ˆ์ด ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Faraday๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ํ•˜์œ„ ์ˆ˜์ค€์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž์˜ ๊ฒฝ์šฐ
์‹ค์ œ๋กœ run_request ๋ณด๋‹ค get , post ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@mislav #run_request ๋Š” #get , #post ๋“ฑ๊ณผ ๊ฐ™์ด ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Twitter::REST::Client#request ์—์„œ Faraday๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์„ธ์š”. https://github.com/sferik/twitter/blob/master/lib/twitter/rest/client.rb#L130 -L144

run_request๋Š” #get, #post ๋“ฑ๊ณผ ๊ฐ™์€ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ ?

๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” run_request ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์™„๋ฒฝํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ฆ‰, send ๋ฅผ ํ”ผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋‚ด๊ฐ€ #run_request ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ Twitter::Client#request ์ฝ”๋“œ์˜ ํ•œ ์ง€์ ์—์„œ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋ฆฌํŒฉํ† ๋ง์˜ ์ผ๋ถ€๋กœ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/sferik/twitter/commit/2d70b64674bdc204c85c47327afa571f9641e545. #send ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๊น”๋”ํ•˜๋‹ค๋Š” ์ ์„ ์ธ์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ ‡์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค).

#run_request ํ•˜๋ฉด ์š”์ฒญ์ด PUT ์ธ์ง€ POST ์ธ์ง€ ๊ฑฑ์ •ํ•˜๊ณ  GET , DELETE ๋Œ€ํ•œ ์š”์ฒญ ๋ณธ๋ฌธ ๋Œ€ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค #run_request ๋ณด๋‹ค ํ›จ์”ฌ ์นœ์ˆ™ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

#send ๋ฅผ #run_request ๋ฐ”๊พธ๋Š” twitter gem์— pull ์š”์ฒญ์„ ์ œ์ถœํ•˜์—ฌ ๋œ ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค(Code Climate ๋˜๋Š” ๊ธฐํƒ€ ์ •์  ๋ถ„์„์— ๋”ฐ๋ฅด๋ฉด ).


OPTIONS ๋ฐฉ๋ฒ•์„ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด HTTP ๋™์‚ฌ์˜ ๋ฏธ๋ž˜ ์ธ๊ธฐ๋ฅผ ์ถ”์ธกํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. HTTP 1.0์—์„œ๋Š” GET๊ณผ POST๋งŒ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 1999๋…„์— HTTP 1.1์— ๋” ๋งŽ์€ ๋™์‚ฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ Rails 2๊ฐ€ ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ์—์„œ PUT ๋ฐ DELETE ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๋ถ€๋ถ„ ๋ฌด์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ Rails 4์—์„œ PATCH ๊ฐ€ PUT ์™€ ํ•จ๊ป˜ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ์ „์— " PATCH ๋Š” ์ธ๊ธฐ๊ฐ€ ์—†๋‹ค"๊ณ  (์˜ฌ๋ฐ”๋ฅด๊ฒŒ) ์ฃผ์žฅํ–ˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋”ฐ๋ผ์„œ ์ผ๋ฅ˜ ์ง€์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  Rails๋กœ ์ž‘์„ฑ๋œ ๋ชจ๋“  ์ƒˆ๋กœ์šด API ์„œ๋ฒ„๋Š” GitHub API๋ฅผ ํฌํ•จํ•˜์—ฌ PATCH ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, Rails 4๊ฐ€ ์ถœ์‹œ๋˜๊ธฐ ์ „์— PATCH ๋ฅผ ์ง€์›ํ–ˆ์Šต๋‹ˆ๋‹ค. GitHub API๋Š” CORS(Cross Origin Resource Sharing)์— ๋Œ€ํ•ด OPTIONS ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. OPTIONS ์€ ์•„์ง ๋Œ€์ค‘์ ์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ, CORS๊ฐ€ Rails 5์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด ๊ฑฐ์˜ ํ•˜๋ฃป๋ฐค ์‚ฌ์ด์— ๋Œ€์ค‘ํ™”๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ํ›„ํšŒํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

HTTP ๋™์‚ฌ๋Š” HTTP ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์˜ˆ์•ฝ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ์†Œ์ˆ˜๋งŒ์ด ์žˆ๊ณ  ๋‚ด ์ƒ๊ฐ์— ์šฐ๋ฆฌ๋Š” ํŒจ๋Ÿฌ๋ฐ์ด 1.0์—์„œ ์ผ๋ฅ˜ ์‹œ๋ฏผ์œผ๋กœ์„œ ๊ทธ๋“ค์„ ๋ชจ๋‘ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ก ๊ทธ๊ฒƒ์ด ๊ธธ์„ ๊ฐ€๋กœ๋ง‰๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋”๋ผ๋„ ๋ง์ž…๋‹ˆ๋‹ค.

CORS๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. 1.0์ด ์ผ๊ธ‰ ๋™์‚ฌ๋กœ OPTIONS ์—†์ด ๋ฐฐ์†ก๋œ๋‹ค๋ฉด ์‹ค๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ _bump_์— ๋Œ€ํ•ด ๋Œ€๋‹จํžˆ ์œ ๊ฐ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ OPTIONS ์š”์ฒญ์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ options ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ๋™์˜ํ•˜์‹ญ๋‹ˆ๊นŒ? ์ด๋ฅผ ์‹คํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•„์ง๋„ ๊ทธ ์•„์ด๋””์–ด์— ๋Œ€ํ•ด ํŒ”๋ฆฌ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ˜„์žฌ์˜ options ๋ฉ”์„œ๋“œ๋Š” ๋ฌด์—‡์„ ํ˜ธ์ถœํ• ๊นŒ์š”?

์šฐ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋™์‚ฌ์ž…๋‹ˆ๋‹ค: get, post, put, delete. ๋‹น์‹ ์ด ๊ทธ๋“ค์„ ๋ถ€๋ฅผ ๋•Œ ์–ด๋–ค ํ–‰๋™์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. options ๋Š” ๋™์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ข‹์€ ์†๊ธฐ ๋ฐฉ๋ฒ•์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์ผ์ƒ์ ์ธ ์ฝ”๋“œ์—์„œ ํ†ค๋‹น OPTIONS ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ์–ด๋–ค ์ด์œ ๋กœ run_request ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฒฌ๋”œ ์ˆ˜ ์—†๋‹ค๋ฉด(๊ทธ ์ด์œ ๋ฅผ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!) ๋‹ค์Œ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ http_options ๋กœ ์ง€์ •ํ•˜์—ฌ ์ด๊ฒƒ์ด HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

"๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋™์‚ฌ๋‹ค"๋ผ๋Š” ์ฃผ์žฅ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋™์‚ฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŒจ๋Ÿฌ๋ฐ์ด์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๊ทธ ๋ฉ”์†Œ๋“œ๋Š” HTTP ๋ฉ”์†Œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. options IMO์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด options ์—†๋Š” ์ด์œ ๋ผ๋ฉด HTTP์˜ "head"๋Š” ๋™์‚ฌ์ธ "going"์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— head ๋ฅผ ์ •์˜ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

options API๋ฅผ ๊นจ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์šฐ๋ ค๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€๋งŒ "์ง€์›"๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ํฐ ๋†€๋ผ์›€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  HTTP ๋ฉ”์†Œ๋“œ๊ฐ€ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ผ๊ด€์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  run_request ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ์•ž์—์„œ ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ด ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๊นจ๋—ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์ง€์›ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋‹น์‹ ์˜ ๋ถ€๋ฆ„(๋ถ„๋ช… :-) ์ด์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋‹น์‹ ์˜ ๋งˆ์Œ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์ง€์›๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋ฉด ๊ทธ๊ฒƒ์€ "_options_๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฒƒ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์‚ฌ".

+1 @nhoki

์ด๊ฒƒ์€ ์˜ค๋Š˜ ๋‚˜๋ฅผ ๋†€๋ผ๊ฒŒ ํ–ˆ๋‹ค. conn.get , conn.post , conn.delete ๋“ฑ์˜ ๋ชจ๋“  ์˜ˆ์ œ๋Š” OPTIONS ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์ด conn.options ๋ผ๊ณ  ๋ฏฟ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Faraday::Connection rdocs ๋˜๋Š” README?์—์„œ ์ด ๋ถˆ์ผ์น˜์™€ run_request ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

+1

์˜ต์…˜์ด GET, POST, DELETE์™€ ๋™์ผํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐœ์ธ์ ์œผ๋กœ @mislav ์— ๋™์˜ํ•˜์ง€๋งŒ @sferik ์˜๊ฒฌ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๊ณ  options ๋Š” ๋‹จ์ˆœํžˆ attr_reader ์ด๋ฉฐ ์ฃผ๋กœ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ณ€๊ฒฝ ์ค‘์ธ ์ผ๋ถ€ ๊ตฌํ˜„์„ ์ž ์žฌ์ ์œผ๋กœ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœ API์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋Š” Faraday 1.0์—์„œ๋งŒ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋•Œ๊นŒ์ง€ ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ๋‹ค์‹œ ๋…ผ์˜ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

conn.options ์€(๋Š”) ์™„์ „ํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. conn.get , conn.post ๋“ฑ์˜ ์กด์žฌ๋กœ ์ธํ•ด ๊ทธ ์กด์žฌ๊ฐ€ ํฌ๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆด ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— v1.0์€ ์ด๊ฒƒ์„ ์ ์šฉํ•˜๊ธฐ์— ์ข‹์€ ๋Œ€์ƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ๋™์ž‘์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด #options ๋ฅผ ์˜ค๋ฒ„๋กœ๋“œํ•˜์—ฌ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/lostisland/faraday/pull/857

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰