pip install Flask-RESTful

安裝完畢后,我們就可以開(kāi)始創(chuàng)建一個(gè)簡(jiǎn)單的 RESTful API 服務(wù)。

3. 構(gòu)建第一個(gè)API

在這個(gè)示例中,我們將創(chuàng)建一個(gè)簡(jiǎn)單的 API,模擬管理書(shū)籍的系統(tǒng),支持查詢(xún)、添加和刪除書(shū)籍。

3.1 創(chuàng)建一個(gè) Flask 應(yīng)用

我們首先需要導(dǎo)入 Flask 和 Flask-RESTful,并創(chuàng)建一個(gè) Flask 應(yīng)用對(duì)象:

from flask import Flask
from flask_restful import Api, Resource

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

3.2 創(chuàng)建一個(gè) API 資源

在 Flask-RESTful 中,每一個(gè)資源都由一個(gè)類(lèi)來(lái)表示,類(lèi)繼承自Resource,并通過(guò) HTTP 方法來(lái)處理請(qǐng)求。比如,我們創(chuàng)建一個(gè)Book?資源,它能夠處理獲取書(shū)籍列表的請(qǐng)求:

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

3.3 將資源添加到 API

接下來(lái),我們將Book?資源添加到 API 中,并綁定到一個(gè) URL 路徑上:

api.add_resource(Book, '/books')

3.4 運(yùn)行應(yīng)用

最后,我們啟動(dòng) Flask 應(yīng)用:

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 訪(fǎng)問(wèn)API

現(xiàn)在,你可以通過(guò)瀏覽器或 Postman 訪(fǎng)問(wèn)http://localhost:5000/books,你將看到類(lèi)似下面的 JSON 響應(yīng):

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

這就是一個(gè)基本的 GET 請(qǐng)求處理過(guò)程。

4. 添加其他 HTTP 方法

除了GET?方法,F(xiàn)lask-RESTful 還支持處理其他常見(jiàn)的 HTTP 方法,如POSTPUTDELETE?等。我們可以在Book?資源中添加更多的方法來(lái)處理不同的請(qǐng)求。

4.1 增加 POST 方法

假設(shè)我們想添加一個(gè)新的書(shū)籍,我們可以為POST?方法編寫(xiě)代碼:

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 方法會(huì)將新的書(shū)籍添加到books 列表中,并返回一個(gè)成功的消息。

4.2 刪除書(shū)籍 (DELETE)

同樣,如果我們想刪除一個(gè)書(shū)籍,我們可以使用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 訪(fǎng)問(wèn) POST 和 DELETE 方法

通過(guò) Postman 或其他工具,你可以向http://localhost:5000/books 發(fā)送POST 請(qǐng)求來(lái)添加書(shū)籍,或者發(fā)送DELETE 請(qǐng)求來(lái)刪除書(shū)籍。

5. 路由參數(shù)

Flask-RESTful 還支持 URL 路由參數(shù)。假設(shè)我們想獲取某本書(shū)的詳細(xì)信息,可以通過(guò) URL 參數(shù)來(lái)傳遞書(shū)籍 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

你可以通過(guò)訪(fǎng)問(wèn)http://localhost:5000/books/1 獲取書(shū)籍 ID 為 1 的信息。

6. 處理請(qǐng)求數(shù)據(jù)

對(duì)于POST?或PUT?請(qǐng)求,通常會(huì)包含請(qǐng)求體中的數(shù)據(jù)。Flask-RESTful 提供了request?對(duì)象,方便我們處理請(qǐng)求中的 JSON 數(shù)據(jù)。

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?請(qǐng)求需要提供一個(gè) JSON 格式的數(shù)據(jù),如:

{
"name": "New Book"
}

7. 總結(jié)

Flask-RESTful 是一個(gè)簡(jiǎn)單而強(qiáng)大的 Python Web 服務(wù)框架,它能夠幫助你輕松地創(chuàng)建和管理 RESTful API。通過(guò)本文的學(xué)習(xí),你已經(jīng)了解了如何使用 Flask-RESTful 構(gòu)建 API,如何處理不同的 HTTP 請(qǐng)求方法、如何處理 URL 路由參數(shù)和請(qǐng)求數(shù)據(jù)等基本內(nèi)容。

Flask-RESTful 的簡(jiǎn)潔和高效,使得它成為構(gòu)建 Web API 的最好選擇之一。無(wú)論是小型項(xiàng)目還是大型系統(tǒng),F(xiàn)lask-RESTful 都能夠滿(mǎn)足你的需求。

本文章轉(zhuǎn)載微信公眾號(hào)@Python小青蛙AI

上一篇:

雜談-FastAPI中的異步后臺(tái)任務(wù)之Celery篇

下一篇:

SpringBoot中REST API的錯(cuò)誤異常處理設(shè)計(jì)
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)