http requests
을 만들기 위해 httparty
을 사용하는 ruby gem
을 작성했습니다. 그것은 irb
과 rails
애플 리케이션에서 작동하지만 내가 sinatra
하나에서 그것을 사용하려고하면 아주 이상한 행동을 받고 있습니다.HTTParty, Rails & Sinatra : 요청 (응답)이 다르다 (응답)
require "httparty"
class SomeAPI::Client
def initizialize(some_params)
@api_params = some_params
end
def login
login_response = HTTParty.get(@api_params[:login_url])
puts "Login Result: #{login_response}"
end
end
을 내가 irb
모두에서 로그인 할 때 괜찮 :
gem
이
보석처럼 보인다.
내 rails app gemfile
(gem "SomeAPI", :path => "~/dev/SomeAPI"
)에 설정하고 컨트롤러에서 작업을 설정하고 0:0:0:0:3000/someapi?api_params=my_params
에서 로그인을 시도하면 정상적으로 작동합니다.
class SomeController < ApplicationController
def someapi
client = SomeAPI::Client.new(params[:api_params])
client.login
end
end
마지막으로, 나는 나의 sinatra app
에서 같은 일을하려고 : 나는 gemfile
에 포함 나는 0:0:0:0:9292/someapi/:my_params
에서 요청을하려고합니다. 그러나 new
은 제대로 작동하지만 (client
은 모든 속성이 올바르게 초기화 된 SomeAPI
개체가됩니다) login
은 You need to sign in or sign up before continuing.
오류 메시지를 표시합니다. 마치 다른 리소스에 액세스하려고하는 것처럼 (또는 로그인 자체가 성공하려면 인증 된 beforehands로 나를 필요로하는 것처럼). 코드는 다음과 같습니다.
class App < Sinatra::Base
get "/someapi/:my_params" do
client = SomeAPI::Client.new
client.login
end
end
포트 3000에서 sinatra 앱을 실행 해 보았습니다 (레일스 기본값과 동일).하지만 아무 것도 변경되지 않았습니다.
어디서 볼 수있는 아이디어 나 리드는 무엇입니까?
params =
{
:headers => { "Content-Type" => "application/xml", "Accept" => "application/xml"},
:basic_auth => { :username => "some_username", :password => "some_password" }
}
(변화하는 과정의 request
HTTParty.get(@api_params[:login_url], params)
에)