Files
ruby-examples/docs/23_API 서버.md

3.2 KiB

Ruby API 서버 예제 (Sinatra 사용)

Ruby로 간단한 API 서버를 만들기 위해 Sinatra 프레임워크를 사용할 것이다.


1. 사전 준비

Sinatra 설치

Sinatra는 가볍고 사용하기 쉬운 웹 프레임워크이다. 먼저 Sinatra를 설치하자.

gem install sinatra

또는 Gemfile을 사용한다면 다음을 추가한 후 bundle install을 실행하자.

gem 'sinatra'
gem 'json'

2. API 서버 코드

app.rb 파일을 만들고 아래 코드를 작성하자.

require 'sinatra'
require 'json'

# 서버 기본 설정
set :port, 4567
set :bind, '0.0.0.0'

# 샘플 데이터 (가상의 사용자 목록)
users = [
  { id: 1, name: "Alice", age: 30 },
  { id: 2, name: "Bob", age: 25 },
  { id: 3, name: "Charlie", age: 35 }
]

# 1. 모든 사용자 조회 (GET /users)
get '/users' do
  content_type :json
  { users: users }.to_json
end

# 2. 특정 사용자 조회 (GET /users/:id)
get '/users/:id' do
  content_type :json
  user = users.find { |u| u[:id] == params[:id].to_i }
  if user
    user.to_json
  else
    status 404
    { error: "User not found" }.to_json
  end
end

# 3. 사용자 추가 (POST /users)
post '/users' do
  content_type :json
  request_payload = JSON.parse(request.body.read) rescue {}

  if request_payload["name"] && request_payload["age"]
    new_user = {
      id: users.size + 1,
      name: request_payload["name"],
      age: request_payload["age"]
    }
    users << new_user
    status 201
    new_user.to_json
  else
    status 400
    { error: "Invalid data" }.to_json
  end
end

# 4. 사용자 삭제 (DELETE /users/:id)
delete '/users/:id' do
  content_type :json
  user = users.find { |u| u[:id] == params[:id].to_i }
  
  if user
    users.delete(user)
    { message: "User deleted" }.to_json
  else
    status 404
    { error: "User not found" }.to_json
  end
end

3. 실행 방법

터미널에서 다음 명령어를 실행하자.

ruby app.rb

서버가 http://localhost:4567에서 실행된다.


4. API 테스트

모든 사용자 조회

curl http://localhost:4567/users

응답:

{
  "users": [
    { "id": 1, "name": "Alice", "age": 30 },
    { "id": 2, "name": "Bob", "age": 25 },
    { "id": 3, "name": "Charlie", "age": 35 }
  ]
}

특정 사용자 조회

curl http://localhost:4567/users/1

응답:

{ "id": 1, "name": "Alice", "age": 30 }

새로운 사용자 추가

curl -X POST http://localhost:4567/users -H "Content-Type: application/json" -d '{"name": "David", "age": 40}'

응답:

{ "id": 4, "name": "David", "age": 40 }

사용자 삭제

curl -X DELETE http://localhost:4567/users/2

응답:

{ "message": "User deleted" }

5. 결론

이제 Sinatra를 이용하여 간단한 RESTful API 서버를 만들 수 있다.
GET, POST, DELETE 요청 처리
JSON 데이터 반환
간단한 데이터 저장 및 관리

Sinatra는 가볍고 배우기 쉬운 프레임워크이므로, 빠르게 API 서버를 구축할 때 유용하다!