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

170 lines
3.2 KiB
Markdown

## **Ruby API 서버 예제 (Sinatra 사용)**
Ruby로 간단한 **API 서버**를 만들기 위해 **Sinatra** 프레임워크를 사용할 것이다.
---
### **1. 사전 준비**
#### **Sinatra 설치**
Sinatra는 가볍고 사용하기 쉬운 웹 프레임워크이다. 먼저 Sinatra를 설치하자.
```sh
gem install sinatra
```
또는 `Gemfile`을 사용한다면 다음을 추가한 후 `bundle install`을 실행하자.
```ruby
gem 'sinatra'
gem 'json'
```
---
### **2. API 서버 코드**
`app.rb` 파일을 만들고 아래 코드를 작성하자.
```ruby
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. 실행 방법**
터미널에서 다음 명령어를 실행하자.
```sh
ruby app.rb
```
서버가 `http://localhost:4567`에서 실행된다.
---
### **4. API 테스트**
#### **모든 사용자 조회**
```sh
curl http://localhost:4567/users
```
**응답:**
```json
{
"users": [
{ "id": 1, "name": "Alice", "age": 30 },
{ "id": 2, "name": "Bob", "age": 25 },
{ "id": 3, "name": "Charlie", "age": 35 }
]
}
```
---
#### **특정 사용자 조회**
```sh
curl http://localhost:4567/users/1
```
**응답:**
```json
{ "id": 1, "name": "Alice", "age": 30 }
```
---
#### **새로운 사용자 추가**
```sh
curl -X POST http://localhost:4567/users -H "Content-Type: application/json" -d '{"name": "David", "age": 40}'
```
**응답:**
```json
{ "id": 4, "name": "David", "age": 40 }
```
---
#### **사용자 삭제**
```sh
curl -X DELETE http://localhost:4567/users/2
```
**응답:**
```json
{ "message": "User deleted" }
```
---
### **5. 결론**
이제 Sinatra를 이용하여 간단한 RESTful API 서버를 만들 수 있다.
**GET, POST, DELETE 요청 처리**
**JSON 데이터 반환**
**간단한 데이터 저장 및 관리**
Sinatra는 **가볍고 배우기 쉬운 프레임워크**이므로, 빠르게 API 서버를 구축할 때 유용하다!