## **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 서버를 구축할 때 유용하다!