
使用NestJS和Prisma構建REST API:身份驗證
pip install Flask-RESTful
安裝完畢后,我們就可以開始創建一個簡單的 RESTful API 服務。
在這個示例中,我們將創建一個簡單的 API,模擬管理書籍的系統,支持查詢、添加和刪除書籍。
我們首先需要導入 Flask 和 Flask-RESTful,并創建一個 Flask 應用對象:
from flask import Flask
from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
在 Flask-RESTful 中,每一個資源都由一個類來表示,類繼承自Resource
,并通過 HTTP 方法來處理請求。比如,我們創建一個Book
?資源,它能夠處理獲取書籍列表的請求:
class Book(Resource):
def get(self):
return {'books': ['Book 1', 'Book 2', 'Book 3']}
接下來,我們將Book
?資源添加到 API 中,并綁定到一個 URL 路徑上:
api.add_resource(Book, '/books')
最后,我們啟動 Flask 應用:
if __name__ == '__main__':
app.run(debug=True)
完整的代碼如下:
from flask import Flask
from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
class Book(Resource):
def get(self):
return {'books': ['Book 1', 'Book 2', 'Book 3']}
api.add_resource(Book, '/books')
if __name__ == '__main__':
app.run(debug=True)
現在,你可以通過瀏覽器或 Postman 訪問http://localhost:5000/books
,你將看到類似下面的 JSON 響應:
{
"books": ["Book 1", "Book 2", "Book 3"]
}
這就是一個基本的 GET 請求處理過程。
除了GET
?方法,Flask-RESTful 還支持處理其他常見的 HTTP 方法,如POST
、PUT
、DELETE
?等。我們可以在Book
?資源中添加更多的方法來處理不同的請求。
POST
方法假設我們想添加一個新的書籍,我們可以為POST
?方法編寫代碼:
class Book(Resource):
books = ['Book 1', 'Book 2', 'Book 3']
def get(self):
return {'books': self.books}
def post(self):
new_book = 'New Book'
self.books.append(new_book)
return {'message': f'Book {new_book} added successfully!'}, 201
在上面的代碼中,POST
方法會將新的書籍添加到books
列表中,并返回一個成功的消息。
同樣,如果我們想刪除一個書籍,我們可以使用DELETE
?方法:
class Book(Resource):
books = ['Book 1', 'Book 2', 'Book 3']
def get(self):
return {'books': self.books}
def post(self):
new_book = 'New Book'
self.books.append(new_book)
return {'message': f'Book {new_book} added successfully!'}, 201
def delete(self):
book_to_delete = 'Book 1'
if book_to_delete in self.books:
self.books.remove(book_to_delete)
return {'message': f'Book {book_to_delete} deleted successfully!'}
return {'message': 'Book not found'}, 404
通過 Postman 或其他工具,你可以向http://localhost:5000/books
發送POST
請求來添加書籍,或者發送DELETE
請求來刪除書籍。
Flask-RESTful 還支持 URL 路由參數。假設我們想獲取某本書的詳細信息,可以通過 URL 參數來傳遞書籍 ID。
class Book(Resource):
books = {
1: 'Book 1',
2: 'Book 2',
3: 'Book 3'
}
def get(self, book_id):
if book_id in self.books:
return {'book': self.books[book_id]}
return {'message': 'Book not found'}, 404
你可以通過訪問http://localhost:5000/books/1
獲取書籍 ID 為 1 的信息。
對于POST
?或PUT
?請求,通常會包含請求體中的數據。Flask-RESTful 提供了request
?對象,方便我們處理請求中的 JSON 數據。
from flask import request
class Book(Resource):
books = ['Book 1', 'Book 2', 'Book 3']
def get(self):
return {'books': self.books}
def post(self):
new_book = request.json.get('name')
if new_book:
self.books.append(new_book)
return {'message': f'Book {new_book} added successfully!'}, 201
return {'message': 'No book name provided'}, 400
在上面的代碼中,POST
?請求需要提供一個 JSON 格式的數據,如:
{
"name": "New Book"
}
Flask-RESTful 是一個簡單而強大的 Python Web 服務框架,它能夠幫助你輕松地創建和管理 RESTful API。通過本文的學習,你已經了解了如何使用 Flask-RESTful 構建 API,如何處理不同的 HTTP 請求方法、如何處理 URL 路由參數和請求數據等基本內容。
Flask-RESTful 的簡潔和高效,使得它成為構建 Web API 的最好選擇之一。無論是小型項目還是大型系統,Flask-RESTful 都能夠滿足你的需求。
本文章轉載微信公眾號@Python小青蛙AI