학습
Ruby API 사용하기
Ruby API 사용하기 — 중급
API 사용하기
1. 도입 (왜 배워야 하는가)
API(Application Programming Interface)는 소프트웨어와 소프트웨어 간의 상호작용을 가능하게 해주는 중요한 도구입니다. 오늘날 많은 웹 애플리케이션이 외부 서비스와 통신하여 데이터를 가져오거나 명령을 수행하므로, API 사용법은 개발자에게 필수적인 기술입니다. 예를 들어, 쇼핑몰 애플리케이션에서 결제 서비스를 구현하기 위해 Stripe와 같은 외부 API를 사용해야 할 수 있습니다. 만약 API를 잘 다루지 못한다면, 데이터 통신의 오류로 인해 애플리케이션이 제대로 작동하지 않거나, 사용자가 원하는 기능을 제공하지 못할 수 있습니다.
2. 핵심 개념 설명
- API: 소프트웨어 구성 요소 간의 상호작용 규칙을 정의한 것입니다. 비유하자면, 레스토랑의 메뉴판처럼 고객(개발자)이 원하는 음식을 선택할 수 있게 도와줍니다.
- HTTP: 웹에서 데이터를 전송하기 위한 프로토콜입니다. 레스토랑에서 음식을 주문하는 과정처럼, 클라이언트가 서버에 요청을 보냅니다.
- JSON: 데이터를 주고받기 위한 형식으로, 사람과 기계 모두 읽기 쉬운 구조입니다. 마치 종이로 된 주문서처럼, 주문 내용을 쉽게 전달할 수 있습니다.
| 용어 | 정의 |
|---|---|
| API | 소프트웨어 간 상호작용을 위한 인터페이스 |
| HTTP | 데이터를 전송하기 위한 프로토콜 |
| JSON | 데이터 전송을 위한 경량 데이터 형식 |
3. 기본 코드 예제
아래는 Ruby에서 HTTP GET 요청을 사용하여 API 데이터를 가져오는 기본적인 예제입니다.
require 'net/http'
require 'json'
require 'uri'
url = URI.parse('https://jsonplaceholder.typicode.com/posts/1')
response = Net::HTTP.get_response(url)
# JSON 형식의 응답을 해석
data = JSON.parse(response.body)
puts "Title: #{data['title']}"
puts "Body: #{data['body']}"
실행 결과
Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
Body:quia et suscipit\nsuscipit...
코드 한 줄씩 동작 설명
require 'net/http': HTTP 요청을 보내기 위한 라이브러리를 불러옵니다.require 'json': JSON 형식의 데이터를 처리하기 위한 라이브러리를 불러옵니다.require 'uri': URL을 처리하기 위한 라이브러리를 불러옵니다.url = URI.parse(...): 요청할 URL을 URI 객체로 변환합니다.response = Net::HTTP.get_response(url): 해당 URL로 GET 요청을 보내고 응답을 받습니다.data = JSON.parse(response.body): 응답 본문을 JSON 형식으로 해석합니다.puts...: 제목과 본문을 출력합니다.- 잘못된 코드:
url = URI.parse('http://invalid-url') - 올바른 코드:
url = URI.parse('https://jsonplaceholder.typicode.com') - 잘못된 코드:
- 올바른 코드:
- API는 소프트웨어 간의 상호작용을 가능하게 해주는 중요한 도구이다.
- HTTP 프로토콜과 JSON 형식은 API 통신의 기본 요소이다.
- GET, POST 요청을 통해 데이터를 주고받을 수 있으며, 올바른 URL과 응답 상태 코드 확인이 중요하다.
- OAuth2 인증과 API 보안
- RESTful API 설계 원칙
- GraphQL API 사용법
4. 실전 활용 예제
예제 1: 사용자 목록 가져오기
쇼핑몰에서 회원 관리 시스템을 구축할 때, 사용자 정보를 외부 API로부터 가져와야 할 수 있습니다.
url = URI.parse('https://jsonplaceholder.typicode.com/users')
response = Net::HTTP.get_response(url)
users = JSON.parse(response.body)
users.each do |user|
puts "#{user['name']} - #{user['email']}"
end
예제 2: 게시글 작성하기
블로그 애플리케이션에서 사용자가 작성한 게시글을 외부 API에 POST 요청으로 전송할 수 있습니다.
require 'net/http'
require 'json'
require 'uri'
url = URI.parse('https://jsonplaceholder.typicode.com/posts')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url.path)
request['Content-Type'] = 'application/json'
request.body = { title: 'New Post', body: 'This is a new post' }.to_json
response = http.request(request)
puts response.body
5. 흔한 실수와 주의사항
실수 1: URL 잘못 입력하기
잘못된 URL을 입력하면 요청이 실패합니다.
실수 2: 응답 상태 코드 확인하지 않기
API 호출 후 응답 상태 코드를 확인하지 않으면 오류를 놓칠 수 있습니다.
response = Net::HTTP.get_response(url)
puts response.body
response = Net::HTTP.get_response(url)
if response.is_a?(Net::HTTPSuccess)
puts response.body
else
puts "Error: #{response.code} - #{response.message}"
end
6. 정리
다음에 학습하면 좋은 주제: