루비는 간결하고 읽기 쉬운 문법 덕분에 많은 개발자들에게 사랑받는 프로그래밍 언어입니다. 웹 개발에서 HTTP 요청을 수행하는 것은 매우 일반적인 작업이며, 루비에서도 이를 쉽게 처리할 수 있습니다. 이 글에서는 루비에서 HTTP 요청을 수행하는 방법에 대해 알아보겠습니다.
HTTP(하이퍼텍스트 전송 프로토콜)는 웹에서 데이터를 전송하는 데 사용되는 프로토콜입니다. 클라이언트(예: 웹 브라우저)가 서버에 요청을 보내고, 서버가 그 요청에 대한 응답을 반환하는 방식으로 작동합니다. HTTP 요청은 주로 다음과 같은 메서드를 사용합니다:
루비에서 HTTP 요청을 수행하기 위해 가장 많이 사용되는 라이브러리는 Net::HTTP입니다. 이 라이브러리는 루비 표준 라이브러리에 포함되어 있어 별도의 설치 없이 사용할 수 있습니다. 또한, HTTParty와 RestClient와 같은 외부 라이브러리도 많이 사용됩니다. 이 글에서는 기본적으로 Net::HTTP를 사용하여 HTTP 요청을 수행하는 방법을 설명하겠습니다.
먼저, Net::HTTP를 사용하여 GET 요청을 보내는 방법을 살펴보겠습니다.
require 'net/http'
require 'uri'
uri = URI.parse("http://www.example.com")
response = Net::HTTP.get_response(uri)
puts response.body
위의 코드는 http://www.example.com
에 GET 요청을 보내고, 응답 본문을 출력합니다. URI.parse 메서드를 사용하여 URL을 URI 객체로 변환한 후, Net::HTTP.get_response 메서드를 사용하여 요청을 보냅니다.
이제 POST 요청을 보내는 방법을 살펴보겠습니다. POST 요청은 데이터를 서버에 전송할 때 사용됩니다.
require 'net/http'
require 'uri'
uri = URI.parse("http://www.example.com/api")
http = Net::HTTP.new(uri.host, uri.port)
# HTTPS를 사용하는 경우
# http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request.content_type = "application/json"
request.body = '{"key": "value"}'
response = http.request(request)
puts response.body
위의 코드는 http://www.example.com/api
에 JSON 형식의 데이터를 포함한 POST 요청을 보냅니다. Net::HTTP::Post 클래스를 사용하여 요청을 생성하고, content_type과 body를 설정합니다.
GET 요청을 보낼 때 쿼리 파라미터를 추가하는 방법도 알아보겠습니다.
require 'net/http'
require 'uri'
uri = URI.parse("http://www.example.com/search")
params = { query: "ruby", page: 1 }
uri.query = URI.encode_www_form(params)
response = Net::HTTP.get_response(uri)
puts response.body
위의 코드는 http://www.example.com/search?query=ruby&page=1
에 GET 요청을 보냅니다. URI.encode_www_form 메서드를 사용하여 쿼리 파라미터를 인코딩합니다.
HTTP 요청을 보낸 후, 서버의 응답을 처리하는 방법도 중요합니다. 응답 객체는 상태 코드, 헤더, 본문 등을 포함하고 있습니다.
require 'net/http'
require 'uri'
uri = URI.parse("http://www.example.com")
response = Net::HTTP.get_response(uri)
puts "상태 코드: #{response.code}"
puts "헤더: #{response.each_header.to_h}"
puts "본문: #{response.body}"
위의 코드는 응답의 상태 코드, 헤더, 본문을 출력합니다. response.code를 사용하여 상태 코드를 가져오고, response.each_header.to_h를 사용하여 헤더를 해시 형태로 변환합니다.
루비에서 HTTP 요청을 수행할 때 Net::HTTP 외에도 다양한 외부 라이브러리를 사용할 수 있습니다. 여기서는 HTTParty와 RestClient를 간단히 소개하겠습니다.
HTTParty는 간단하고 직관적인 API를 제공하는 HTTP 클라이언트 라이브러리입니다. 설치는 다음과 같이 진행합니다:
gem install httparty
HTTParty를 사용하여 GET 요청을 보내는 예시는 다음과 같습니다.
require 'httparty'
response = HTTParty.get("http://www.example.com")
puts response.body
POST 요청도 간단하게 보낼 수 있습니다.
response = HTTParty.post("http://www.example.com/api", body: { key: "value" }.to_json, headers: { 'Content-Type' => 'application/json' })
puts response.body
RestClient는 RESTful API와의 상호작용을 쉽게 만들어주는 라이브러리입니다. 설치는 다음과 같이 진행합니다:
gem install rest-client
RestClient를 사용하여 GET 요청을 보내는 예시는 다음과 같습니다.
require 'rest-client'
response = RestClient.get("http://www.example.com")
puts response.body
POST 요청도 다음과 같이 보낼 수 있습니다.
response = RestClient.post("http://www.example.com/api", { key: "value" }.to_json, { content_type: :json, accept: :json })
puts response.body
루비에서 HTTP 요청을 수행하는 방법에 대해 알아보았습니다. Net::HTTP를 사용하여 GET 및 POST 요청을 보내는 기본적인 방법을 살펴보았고, HTTParty와 RestClient와 같은 외부 라이브러리도 소개했습니다. 이러한 도구들을 활용하여 웹 API와 상호작용하는 애플리케이션을 쉽게 개발할 수 있습니다.
루비의 강력한 HTTP 요청 기능을 활용하여 다양한 웹 서비스와 통신해 보세요!
© 2024 RailsInsights. All rights reserved.