2013-07-18 2 views
2

해시에서 url에 매개 변수를 추가하는 방법은 무엇입니까?URL에 매개 변수를 추가하는 방법은 무엇입니까? - encode url

parameters = Hash.new 
parameters["special"] = '25235' 
parameters["code"] = 62346234 

HTTP : //127.0.0.1:8000/api/book_category/ 예를 들면? %의 매개 변수

require 'httparty' 
require 'json' 

response = HTTParty.get("http://127.0.0.1:8000/api/book_category/?") 


json = JSON.parse(response.body) 
puts json 
+4

'parametrs [ "특별한"] = '는 25235'' 유효하지 않습니다. – Torimus

+0

HTTParty는'get'와'post'에': query' 매개 변수를 지원합니다. 이것은 올바르게 인코딩 된 매개 변수를 추가하는 것을 쉽게 만듭니다. https://github.com/jnunemaker/httparty/blob/master/examples/rubyurl.rb를 참조하면 더 복잡한 작업이 필요 없습니다. –

답변

3

당신에게 당신이 JSON 쿼리에 사용할 수있는 유효한 URI를 제공해야합니다 다음과 같습니다.

require 'httparty' 

parameters = {'special' => '512351235','code' => 6126236} 
uri = URI.parse('http://127.0.0.1:8000/api/book_category/').tap do |uri| 
    uri.query = URI.encode_www_form parameters 
end 

uri.to_s 
#=> "http://127.0.0.1:8000/api/book_category/?special=512351235&code=6126236" 

질문에 주석 망 댓글이 아마 더 나은 해답 :

require 'httparty' 

parameters = {'special' => '512351235','code' => 6126236} 
response = HTTParty.get('http://127.0.0.1:8000/api/book_category/', :query => parameters) 

json = JSON.parse(response.body) 
puts json 
+1

'URI.encode_www_form'을 사용한다면, URI를 완전히 사용하십시오. URL을 구문 분석 한 다음'query ='메소드도 사용하십시오. 주소 가능 :: URI에 대해 –

3

Addressable::URI 클래스는 표준 라이브러리의 URI 모듈에 대한 우수한 교체하고, 단지 제공 쿼리 문자열을 직접 작성하거나 이스케이프하지 않고도 URI 문자열을 조작 할 수 있습니다. 매개 변수가 배열 클래스의 경우

이 코드는 보여줍니다

require 'addressable/uri' 
include Addressable 

uri = URI.parse('http://127.0.0.1:8000/api/book_category/') 

parametrs = {} 
parametrs["special"] = '25235' 
parametrs["code"] = 62346234 

uri.query_values = parametrs 

puts uri 

출력

http://127.0.0.1:8000/api/book_category/?code=62346234&special=25235 
+0

+1. 훌륭한 도구입니다. –

관련 문제