programing

Ruby on Rails를 사용하여 HTTP 요청을 작성하는 방법은 무엇입니까?

javajsp 2023. 6. 3. 08:15

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년대 스타일을 사용하지 않고 더 높은 수준의 대안을 시도하는 것이 더 쉽습니다.

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