λ¬Έμμμ λ€μμ΄ μλν΄μΌ νλ κ² κ°μ΅λλ€. νμ§λ§ κ·Έλ μ§ μμ΅λλ€. λ¬Έμλ λ―Έλ€μ¨μ΄ μμ±μ μ ν©νμ§ μμ΅λλ€. κ·Έ λμ λκ΅°κ°κ° λμμ μ€ μ μμ΅λλ€.
# 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>'
μλ conn.use
λμ conn.request
. Faraday::Requestμμ MyMiddleware λ―Έλ€μ¨μ΄λ₯Ό λ³΄λ €κ³ ν©λλ€.
@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 λΉμ μ΄ μμ ν μ³μμ΅λλ€. νμ€ν μ’μ κ°μ μ΄ λ κ²μ λλ€ π . 곡μ νμ§ λͺ»ν΄μ λλλ€
κ°μ₯ μ μ©ν λκΈ
μμ ν κ°λ¨ν μμ λ λ¬Έμνλ₯Ό μν΄ λ¨Ό κΈΈμ κ° κ²μ λλ€.