Faraday: 미듀웨어 μž‘μ„± 도움말

에 λ§Œλ“  2014λ…„ 01μ›” 21일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: lostisland/faraday

λ¬Έμ„œμ—μ„œ λ‹€μŒμ΄ μž‘λ™ν•΄μ•Ό ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. λ¬Έμ„œλŠ” 미듀웨어 μž‘μ„±μ— μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έ λŒ€μ‹  λˆ„κ΅°κ°€κ°€ 도움을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

# play.rb
require 'faraday'

class MyMiddleware

  attr_reader :options

  def initialize(app, options={})
    <strong i="6">@app</strong> = app
    <strong i="7">@options</strong> = options
  end

  def call(env)
    @app.call(env)
  end

end

# This doesn't seem to work either, removing for now.
# Faraday.register_middleware :request, my_middlware: lambda { MyMiddleware }

client = Faraday.new do |conn|
  # conn.request :my_middleware, foo: :bar
  conn.request MyMiddleware, foo: :bar
end

response = client.get('http://jasonwaldrip.com/')
$ ruby play.rb
/Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:64:in `lookup_middleware': MyMiddleware is not registered on Faraday::Request (RuntimeError)
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/builder.rb:146:in `use_symbol'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/builder.rb:100:in `request'
    from play.rb:19:in `block in <main>'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/connection.rb:65:in `initialize'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:11:in `new'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:11:in `new'
    from play.rb:18:in `<main>'

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ™„μ „ν•œ κ°„λ‹¨ν•œ μ˜ˆμ œλŠ” λ¬Έμ„œν™”λ₯Ό μœ„ν•΄ λ¨Ό 길을 갈 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  13 λŒ“κΈ€

μ‹œλ„ conn.use λŒ€μ‹  conn.request . Faraday::Requestμ—μ„œ MyMiddleware 미듀웨어λ₯Ό 보렀고 ν•©λ‹ˆλ‹€.

https://github.com/lostisland/faraday/blob/b8d90a59bafb8dd6e19488fae07945a7700f5664/lib/faraday/rack_builder.rb#L82 -L101

@technoweenie 미듀웨어λ₯Ό λ“±λ‘ν•˜λŠ” 방법에 λŒ€ν•œ 더 λ‚˜μ€ λ¬Έμ„œκ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. λ‚˜λŠ” μ΅œκ·Όμ— μ—¬κΈ°μ—μ„œ 그것을 ν•΄μ•Ό ν–ˆκ³  방법을 μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ μ½”λ“œλ₯Ό 읽어야 ν–ˆμŠ΅λ‹ˆλ‹€.

@jwaldrip 미듀웨어λ₯Ό λ“±λ‘ν–ˆλ‹€λ©΄ conn.request 라고 말할 수 μžˆμŠ΅λ‹ˆλ‹€.

미듀웨어λ₯Ό λ“±λ‘ν–ˆλ‹€λ©΄ conn.request라고 말할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 클래슀 이름이 μ•„λ‹Œ λ“±λ‘ν•œ 기호λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. κΈ°ν˜ΈλŠ” 전체 클래슀 이름을 ν¬ν•¨ν•˜λŠ” μ§€λ¦„κΈΈλ‘œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€. conn.request(:json) λŠ” 기본적으둜 Faraday::Request::JSON 와 λ™μΌν•©λ‹ˆλ‹€.

미듀웨어λ₯Ό λ“±λ‘ν•˜λŠ” 방법에 λŒ€ν•œ 더 λ‚˜μ€ λ¬Έμ„œκ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

:+1: 미듀웨어 μ‹œμŠ€ν…œμ„ μ™„μ „νžˆ λ°”κΏ€ μƒκ°μ΄μ–΄μ„œ λ―Έλ€˜μŠ΅λ‹ˆλ‹€.

@jwaldrip μ‚¬μš©μž κ²½ν—˜μ΄ 쒋지 μ•Šμ€ 것은 λ§žμŠ΅λ‹ˆλ‹€. κ·ΈλŠ” 기호 μ•½μ–΄λ‘œ 미듀웨어λ₯Ό λ“±λ‘ν•˜λŠ” 쀄을 주석 μ²˜λ¦¬ν–ˆμ§€λ§Œ 기호 μ•½μ–΄λ‘œλ§Œ μž‘λ™ν•˜λŠ” conn.request setterλ₯Ό 계속 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 미듀웨어λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” 그것을 κ°œμ„ ν•˜λŠ” 방법을 μƒκ°ν•˜κ±°λ‚˜ 적어도 더 λ‚˜μ€ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 그것을 μž‘λ™ μ‹œμΌ°μŠ΅λ‹ˆλ‹€. μ‹œκ°„μ΄ μ’€ κ±Έλ ΈμŠ΅λ‹ˆλ‹€. λ¬Έμ„œν™”λ‚˜ 미듀웨어 μž¬μž‘μ—…μ„ 도와쀄 수 μžˆλŠ”μ§€ μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

μ΅œμ’… 섀정은 μ–΄λ–»κ²Œ λ˜μ—ˆλ‚˜μš”? @jwaldrip

이것에 λŒ€ν•΄ λ­”κ°€ 쓰여진 적이 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” μœ μš©ν•œ 것을 찾을 수 μ—†μ—ˆκ³  그것을 μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ λͺ‡ λΆ„ λ™μ•ˆ 머리λ₯Ό μ„Έκ²Œ λ•Œλ €μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

@stefansedich 이 ν† λ‘  후에 직접적인 후속 μ‘°μΉ˜λ‚˜ κ°œμ„  사항이 μžˆμ—ˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ λ‹€μŒ μ£Όμš” 릴리슀(1.0)와 ν•¨κ»˜ λ¬Έμ„œμ— λŒ€ν•œ 무거운 μž‘μ—…μ„ ν•  κ³„νšμ΄λ―€λ‘œ μ•žμœΌλ‘œ λ¬Έμ œκ°€ λ˜μ§€ μ•ŠκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€. λ‹€μ‹œ.

λˆ„κ΅°κ°€κ°€ μ§€κΈˆ 이 ν˜Έμ— μ •ν™•νžˆ λ“±λ‘ν•˜λŠ” λͺ¨μŠ΅μ„ κ²Œμ‹œν–ˆλ‹€λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.

@maxim 이제 미듀웨어에 λŒ€ν•œ λ¬Έμ„œκ°€ μžˆλŠ” 곡식 μ›Ήμ‚¬μ΄νŠΈ κ°€ μžˆμ§€λ§Œ μ—¬μ „νžˆ κ°œμ„ λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

κ°„λ‹¨νžˆ λ§ν•΄μ„œ request 및 response λŠ” λ“±λ‘λœ λ―Έλ“€μ›¨μ–΄μ—λ§Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‚¬μš©μž μ •μ˜ λΉŒλ“œλ₯Ό μ‚½μž…ν•΄μ•Ό ν•˜λŠ” 경우 .use λ₯Ό ν˜ΈμΆœν•˜λŠ” 것이 더 μ‰½μŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ μœ„μ˜ μ˜ˆμ—μ„œλŠ” λ‹€μŒμ΄ μž‘λ™ν•©λ‹ˆλ‹€.

client = Faraday.new do |conn|
  conn.use MyMiddleware, foo: :bar
end

μ™„μ „ν•œ κ°„λ‹¨ν•œ μ˜ˆμ œλŠ” λ¬Έμ„œν™”λ₯Ό μœ„ν•΄ λ¨Ό 길을 갈 κ²ƒμž…λ‹ˆλ‹€.

@maxim 이제 미듀웨어에 λŒ€ν•œ λͺ‡ 가지 λ¬Έμ„œκ°€ ν¬ν•¨λœ 곡식 μ›Ήμ‚¬μ΄νŠΈκ°€ μžˆμ§€λ§Œ μ—¬μ „νžˆ κ°œμ„ λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

κ°„λ‹¨νžˆ λ§ν•΄μ„œ μš”μ²­ 및 응닡은 λ“±λ‘λœ λ―Έλ“€μ›¨μ–΄μ—λ§Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‚¬μš©μž μ •μ˜ λΉŒλ“œλ₯Ό μ‚½μž…ν•΄μ•Ό ν•˜λŠ” 경우 .useλ₯Ό ν˜ΈμΆœν•˜λŠ” 것이 더 μ‰½μŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ μœ„μ˜ μ˜ˆμ—μ„œλŠ” λ‹€μŒμ΄ μž‘λ™ν•©λ‹ˆλ‹€.

client = Faraday.new do |conn|
  conn.use MyMiddleware, foo: :bar
end

@iMacTia λ¬Έμ„œμ—λŠ” μ—†μ§€λ§Œ ν•„μˆ˜μ μž…λ‹ˆλ‹€. μ•„λ§ˆλ„ https://lostisland.github.io/faraday/middleware/custom에 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

@wilsonsilva 당신이 μ™„μ „νžˆ μ˜³μ•˜μŠ΅λ‹ˆλ‹€. ν™•μ‹€νžˆ 쒋은 κ°œμ„ μ΄ 될 κ²ƒμž…λ‹ˆλ‹€ πŸ˜…. κ³΅μ •ν•˜μ§€ λͺ»ν•΄μ„œ λ†€λžλ‹€

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰