Ruby on Rails를 사용하여 HTTP 요청을 작성하는 방법은 무엇입니까?
저는 다른 웹사이트에서 정보를 얻고 싶습니다.그러므로 (아마도)저는 그 웹사이트(나의 경우 HTTP GET 요청)에 요청을 하고 답변을 받아야 합니다.
루비 온 레일즈에서 이걸 어떻게 만들 수 있나요?
가능하다면 컨트롤러에서 사용하는 것이 올바른 접근 방식입니까?
Ruby의 클래스를 사용할 수 있습니다.
require 'net/http'
url = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
Net::HTTP는 Ruby에 내장되어 있지만, 실제로는 번거로운 1980년대 스타일을 사용하지 않고 더 높은 수준의 대안을 시도하는 것이 더 쉽습니다.
- HTTP 젬
- HTTP 파티
- RestClient
- 엑손
- Feedjira(RSS 전용)
OpenURI가 최고입니다. 매우 간단합니다.
require 'open-uri'
response = open('http://example.com').read
require 'net/http'
result = Net::HTTP.get(URI.parse('http://www.example.com/about.html'))
# or
result = Net::HTTP.get(URI.parse('http://www.example.com'), '/about.html')
나는 Net보다 httpclient를 선호합니다:HTTP.
client = HTTPClient.new
puts client.get_content('http://www.example.com/index.html')
서비스의 클라이언트인 클래스를 만드는 경우 HTTParty를 사용하는 것이 좋습니다.필요한 것의 90%를 제공하는 편리한 믹스인입니다.예제에서 Google 및 Twitter 클라이언트의 키가 얼마나 작은지 확인합니다.
두 번째 질문에 대답하자면, 아니요, 이 기능을 컨트롤러에 넣지 않습니다. 가능하면 모델을 사용하여 세부 정보를 캡슐화하고 컨트롤러에서 호출할 수 있습니다.
프록시 뒤에서 REST API 호출을 할 경우 작동하는 코드는 다음과 같습니다.
require "uri"
require 'net/http'
proxy_host = '<proxy addr>'
proxy_port = '<proxy_port>'
proxy_user = '<username>'
proxy_pass = '<password>'
uri = URI.parse("https://saucelabs.com:80/rest/v1/users/<username>")
proxy = Net::HTTP::Proxy(proxy_host, proxy_port, proxy_user, proxy_pass)
req = Net::HTTP::Get.new(uri.path)
req.basic_auth(<sauce_username>,<sauce_password>)
result = proxy.start(uri.host,uri.port) do |http|
http.request(req)
end
puts result.body
내가 가장 좋아하는 URL의 내용을 파악하는 두 가지 방법은 OpenURI 또는 Typhoeus입니다.
어디에나 있기 때문에 URI를 열고, 매우 유연하고 강력하기 때문에 Typhoeus를 엽니다.
언급URL : https://stackoverflow.com/questions/4581075/how-to-make-a-http-request-using-ruby-on-rails
'programing' 카테고리의 다른 글
C#에서 URL에 대한 쿼리 문자열을 작성하는 방법은 무엇입니까? (0) | 2023.06.03 |
---|---|
bodyParser는 express 4에서 사용되지 않습니다. (0) | 2023.06.03 |
.ipa를 내보내는 Xcode 6 베타 2 문제: "당신의 계정은 이미 유효한 iOS 배포 인증서를 가지고 있습니다." (0) | 2023.06.03 |
사용자 지정 특성 정의 (0) | 2023.06.03 |
루비: 젬파일에서 'require: false'는 무엇을 의미합니까? (0) | 2023.06.03 |