Python|使用 Flask 构建 REST API
先决条件:Rest API 简介
REST 代表 REpresentational State Transfer,是现代 Web 开发中使用的一种架构风格。它为 Web 应用程序定义了一组或规则/约束来发送和接收数据。
在本文中,我们将使用 Flask 框架在Python中构建一个 REST API。 Flask 是一个流行的用于构建 Web 应用程序的微框架。由于它是一个微型框架,因此非常易于使用,并且缺少成熟框架中的大多数高级功能。因此,在 Flask 中构建 REST API 非常简单。
在 Flask 中创建 REST API 有两种方法:
- 在没有任何外部库的情况下使用 Flask
- 使用 flask_restful 库
所需库:
flask_restful
可以通过 pip 命令安装:
sudo pip3 install flask-restful
方法一:只使用 Flask
这里有两个函数:一个函数只返回或打印通过 GET 或 POST 发送的数据,另一个函数计算通过 GET 请求发送的数字的平方并打印。
# Using flask to make an api
# import necessary libraries and functions
from flask import Flask, jsonify, request
# creating a Flask app
app = Flask(__name__)
# on the terminal type: curl http://127.0.0.1:5000/
# returns hello world when we use GET.
# returns the data that we send when we use POST.
@app.route('/', methods = ['GET', 'POST'])
def home():
if(request.method == 'GET'):
data = "hello world"
return jsonify({'data': data})
# A simple function to calculate the square of a number
# the number to be squared is sent in the URL when we use GET
# on the terminal type: curl http://127.0.0.1:5000 / home / 10
# this returns 100 (square of 10)
@app.route('/home/', methods = ['GET'])
def disp(num):
return jsonify({'data': num**2})
# driver function
if __name__ == '__main__':
app.run(debug = True)
输出:
执行平方函数:
方法2:使用flask-restful
Flask Restful 是 Flask 的一个扩展,它增加了对使用 Flask 作为后端在Python中构建 REST API 的支持。它鼓励最佳实践,并且非常容易设置。如果您已经熟悉烧瓶,Flask restful 很容易上手。
在flask_restful
中,主要的构建块是资源。每个资源都可以有几个与之关联的方法,例如 GET、POST、PUT、DELETE 等。例如,每当向其发送 get 请求时,可能会有一个资源计算数字的平方。每个资源都是一个继承自flask_restful的Resource类的类。创建和定义资源后,我们可以将自定义资源添加到 api 并为相应资源指定 URL 路径。
# using flask_restful
from flask import Flask, jsonify, request
from flask_restful import Resource, Api
# creating the flask app
app = Flask(__name__)
# creating an API object
api = Api(app)
# making a class for a particular resource
# the get, post methods correspond to get and post requests
# they are automatically mapped by flask_restful.
# other methods include put, delete, etc.
class Hello(Resource):
# corresponds to the GET request.
# this function is called whenever there
# is a GET request for this resource
def get(self):
return jsonify({'message': 'hello world'})
# Corresponds to POST request
def post(self):
data = request.get_json() # status code
return jsonify({'data': data}), 201
# another resource to calculate the square of a number
class Square(Resource):
def get(self, num):
return jsonify({'square': num**2})
# adding the defined resources along with their corresponding urls
api.add_resource(Hello, '/')
api.add_resource(Square, '/square/')
# driver function
if __name__ == '__main__':
app.run(debug = True)
输出:
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。