IMCAT.DEV
로그인 가입
Ruby 중급 네트워크

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...

    코드 한 줄씩 동작 설명

    1. require 'net/http': HTTP 요청을 보내기 위한 라이브러리를 불러옵니다.
    2. require 'json': JSON 형식의 데이터를 처리하기 위한 라이브러리를 불러옵니다.
    3. require 'uri': URL을 처리하기 위한 라이브러리를 불러옵니다.
    4. url = URI.parse(...): 요청할 URL을 URI 객체로 변환합니다.
    5. response = Net::HTTP.get_response(url): 해당 URL로 GET 요청을 보내고 응답을 받습니다.
    6. data = JSON.parse(response.body): 응답 본문을 JSON 형식으로 해석합니다.
    7. puts...: 제목과 본문을 출력합니다.
    8. 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을 입력하면 요청이 실패합니다.

    9. 잘못된 코드: url = URI.parse('http://invalid-url')
    10. 올바른 코드: url = URI.parse('https://jsonplaceholder.typicode.com')
    11. 실수 2: 응답 상태 코드 확인하지 않기

      API 호출 후 응답 상태 코드를 확인하지 않으면 오류를 놓칠 수 있습니다.

    12. 잘못된 코드:
    13. response = Net::HTTP.get_response(url)
      puts response.body
    14. 올바른 코드:
    15. response = Net::HTTP.get_response(url)
      if response.is_a?(Net::HTTPSuccess)
        puts response.body
      else
        puts "Error: #{response.code} - #{response.message}"
      end

      6. 정리

    16. API는 소프트웨어 간의 상호작용을 가능하게 해주는 중요한 도구이다.
    17. HTTP 프로토콜과 JSON 형식은 API 통신의 기본 요소이다.
    18. GET, POST 요청을 통해 데이터를 주고받을 수 있으며, 올바른 URL과 응답 상태 코드 확인이 중요하다.
    19. 다음에 학습하면 좋은 주제:

    20. OAuth2 인증과 API 보안
    21. RESTful API 설계 원칙
    22. GraphQL API 사용법