httparty는 Ruby 생태계에서 가장 널리 사용되는 HTTP 클라이언트 라이브러리 중 하나다. 이 라이브러리는 복잡한 HTTP 통신을 직관적이고 우아한 코드로 작성할 수 있게 해준다. REST API를 호출해야 하는 Ruby 프로젝트에서 httparty는 필수 도구로 자리잡았다.
설치 방법
httparty는 RubyGems을 통해 간단하게 설치할 수 있다. 터미널에서 다음 명령어를 실행하자:
gem install httpartyRuby 2.7.0 이상 버전이 필요하며, Bundler를 사용하는 프로젝트라면 Gemfile에 추가해도 된다.
기본 사용법: GET 요청 보내기
httparty의 가장 기본적인 활용 방법은 GET 요청을 전송하는 것이다. 다음 예제는 JSONPlaceholder API에서 포스트 목록을 가져오는 간단한 코드를 보여준다:
require 'httparty'
response = HTTParty.get('https://jsonplaceholder.typicode.com/posts')
puts response.body
puts response.code
puts response.message이 코드는 지정된 URL로 GET 요청을 보내고, 응답 본문, HTTP 상태 코드, 상태 메시지를 출력한다. HTTParty.get 메서드는 기본적으로 Faraday라는 HTTP 클라이언트 라이브러리를 사용하며, 응답은 HTTParty::Response 객체로 반환된다.
고급 사용법: 전용 클라이언트 클래스 만들기
여러 API 엔드포인트를 반복적으로 호출해야 한다면, 전용 클래스를 만들어 로직을 캡슐화하는 것이 바람직하다. 다음은 GitHub API와 통신하는 클라이언트 예제다:
require 'httparty'
class GitHubClient
include HTTParty
base_uri 'https://api.github.com'
def initialize(token = nil)
@headers = {
'Accept' => 'application/vnd.github.v3+json'
}
@headers['Authorization'] = "token #{token}" if token
end
def repos(username)
self.class.get("/users/#{username}/repos", headers: @headers)
end
def user_info(username)
self.class.get("/users/#{username}", headers: @headers)
end
end
client = GitHubClient.new
repos = client.repos('torvalds')
puts repos.first['name']이 구현에서는 HTTParty 모듈을 include하고 base_uri를 설정하여 기본 URL을 고정했다. 선택적 인증 토큰을 생성자에서 처리하고, 각 메서드는 적절한 엔드포인트로 요청을 전송한다.
CLI 도구 활용
httparty는 명령줄에서 바로 API를 테스트할 수 있는 기능을 제공한다. 다음과 같이 간단한 명령으로 엔드포인트를 검증할 수 있다:
httparty "https://jsonplaceholder.typicode.com/posts/1"이 명령은 지정된 URL로 GET 요청을 보내고, JSON 응답을 읽기 쉬운 형식으로 출력한다. API를 빠르게 디버깅하거나 응답 형식을 확인할 때 유용하다.
응답 처리 기법
httparty는 다양한 응답 형식을 자동으로 처리한다. JSON 응답의 경우 파싱된 Ruby 해시로 변환되므로 직접 접근할 수 있다:
response = HTTParty.get('https://jsonplaceholder.typicode.com/users/1')
user = response.parsed_response
puts user['name']
puts user['email']parsed_response 메서드는 응답 본문을 파싱하여 Ruby 객체로 반환한다. JSON뿐 아니라 XML 응답도 처리 가능하며, 필요시 커스텀 파서도 설정할 수 있다.
추가 학습 자료
httparty의 더 많은 기능을 알아보려면 공식 문서와 GitHub 저장소를 참고하자. 이 라이브러리는 파일 업로드, 스트리밍, 커스텀 미들웨어 설정 등 다양한 고급 기능을 제공한다. Ruby 프로젝트에서 HTTP 클라이언트가 필요하다면 httparty를 첫 번째 선택지로検討해보자.