pip install Flask-RESTful

安裝完畢后,我們就可以開始創建一個簡單的 RESTful API 服務。

3. 構建第一個API

在這個示例中,我們將創建一個簡單的 API,模擬管理書籍的系統,支持查詢、添加和刪除書籍。

3.1 創建一個 Flask 應用

我們首先需要導入 Flask 和 Flask-RESTful,并創建一個 Flask 應用對象:

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

3.2 創建一個 API 資源

在 Flask-RESTful 中,每一個資源都由一個類來表示,類繼承自Resource,并通過 HTTP 方法來處理請求。比如,我們創建一個Book?資源,它能夠處理獲取書籍列表的請求:

class Book(Resource):
def get(self):
return {'books': ['Book 1', 'Book 2', 'Book 3']}

3.3 將資源添加到 API

接下來,我們將Book?資源添加到 API 中,并綁定到一個 URL 路徑上:

api.add_resource(Book, '/books')

3.4 運行應用

最后,我們啟動 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)

3.5 訪問API

現在,你可以通過瀏覽器或 Postman 訪問http://localhost:5000/books,你將看到類似下面的 JSON 響應:

{
"books": ["Book 1", "Book 2", "Book 3"]
}

這就是一個基本的 GET 請求處理過程。

4. 添加其他 HTTP 方法

除了GET?方法,Flask-RESTful 還支持處理其他常見的 HTTP 方法,如POSTPUTDELETE?等。我們可以在Book?資源中添加更多的方法來處理不同的請求。

4.1 增加 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 列表中,并返回一個成功的消息。

4.2 刪除書籍 (DELETE)

同樣,如果我們想刪除一個書籍,我們可以使用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

4.3 訪問 POST 和 DELETE 方法

通過 Postman 或其他工具,你可以向http://localhost:5000/books 發送POST 請求來添加書籍,或者發送DELETE 請求來刪除書籍。

5. 路由參數

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 的信息。

6. 處理請求數據

對于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"
}

7. 總結

Flask-RESTful 是一個簡單而強大的 Python Web 服務框架,它能夠幫助你輕松地創建和管理 RESTful API。通過本文的學習,你已經了解了如何使用 Flask-RESTful 構建 API,如何處理不同的 HTTP 請求方法、如何處理 URL 路由參數和請求數據等基本內容。

Flask-RESTful 的簡潔和高效,使得它成為構建 Web API 的最好選擇之一。無論是小型項目還是大型系統,Flask-RESTful 都能夠滿足你的需求。

本文章轉載微信公眾號@Python小青蛙AI

上一篇:

雜談-FastAPI中的異步后臺任務之Celery篇

下一篇:

SpringBoot中REST API的錯誤異常處理設計
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費