티스토리 뷰
Python과 Flask 프레임워크를 사용한 REST API 구현의 간단한 예시다. 이 API는 기본적인 CRUD (Create, Read, Update, Delete) 작업을 통해 책 목록을 관리한다. Flask를 사용한 REST API의 기본 구현으로, REST 원칙이 실제로 어떻게 적용되는지 보여준다. 각 엔드포인트는 REST 원칙을 따르며, 클라이언트는 GET, POST, PUT, DELETE와 같은 표준 HTTP 메서드를 사용해 리소스(이 경우 book)을 조작할 수 있다.
- Flask 설치
: Flask가 설치되어 있지 않은 경우 pip를 사용해 설치할 수 있다.
pip install Flask
- REST API 생성
- GET /api/books: 모든 책 목록을 가져온다.
- GET /api/books/<book_id>: 특정 책을 ID로 가져온다.
- POST /api/books: 새 책을 추가한다. 클라이언트는 최소한 제목(예 - {"title": "New Book", "author": "Author Name"}) 이 포함된 JSON 페이로드를 보내야 한다.
- PUT /api/books/<book_id>: 기존 책의 제목 또는 저자를 업데이트한다.
- DELETE /api/books/<book_id>: ID로 책을 삭제한다.
from flask import Flask, jsonify, request, abort app = Flask(__name__) # Sample data: list of books books = [ {"id": 1, "title": "The Great Gatsby", "author": "F. Scott Fitzgerald"}, {"id": 2, "title": "1984", "author": "George Orwell"}, {"id": 3, "title": "To Kill a Mockingbird", "author": "Harper Lee"} ] # GET all books @app.route('/api/books', methods=['GET']) def get_books(): return jsonify(books) # GET a specific book by ID @app.route('/api/books/<int:book_id>', methods=['GET']) def get_book(book_id): book = next((book for book in books if book['id'] == book_id), None) if book is None: abort(404) return jsonify(book) # POST a new book @app.route('/api/books', methods=['POST']) def create_book(): if not request.json or not 'title' in request.json: abort(400) new_book = { "id": books[-1]['id'] + 1 if books else 1, # Auto-increment ID "title": request.json['title'], "author": request.json.get('author', "Unknown") } books.append(new_book) return jsonify(new_book), 201 # PUT (Update) an existing book by ID @app.route('/api/books/<int:book_id>', methods=['PUT']) def update_book(book_id): book = next((book for book in books if book['id'] == book_id), None) if book is None: abort(404) if not request.json: abort(400) book['title'] = request.json.get('title', book['title']) book['author'] = request.json.get('author', book['author']) return jsonify(book) # DELETE a book by ID @app.route('/api/books/<int:book_id>', methods=['DELETE']) def delete_book(book_id): book = next((book for book in books if book['id'] == book_id), None) if book is None: abort(404) books.remove(book) return jsonify({"result": True}) # Run the Flask app if __name__ == '__main__': app.run(debug=True)
- API 테스트
: Postman, curl 또는 간단한 프론트엔드 생성을 통해 REST API를 테스트 할 수 있다. 아래는 curl을 사용해 book 생성을 테스트 해본 예제다.
curl -X POST http://127.0.0.1:5000/api/books \ -H "Content-Type: application/json" \ -d '{"title":"New Book", "author":"Author Name"}'
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오블완
- I2C
- ml
- 소켓 프로그래밍
- join
- Android
- vertex shader
- Computer Graphics
- 투 포인터
- Python
- java
- machine learning
- The Economist Espresso
- C++
- DICTIONARY
- 딕셔너리
- min heap
- Hash Map
- 파이썬
- 티스토리챌린지
- socket programming
- 이코노미스트 에스프레소
- 이코노미스트
- The Economist
- defaultdict
- 안드로이드
- tf-idf
- 리트코드
- 머신 러닝
- leetcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
반응형