이미지 파일 및 설정 파일 삭제, 새로운 CLI 및 문서 추가
This commit is contained in:
170
docs/23_API 서버.md
Normal file
170
docs/23_API 서버.md
Normal file
@@ -0,0 +1,170 @@
|
||||
## **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 서버를 구축할 때 유용하다!
|
||||
Reference in New Issue
Block a user