用Python Flask编写接口

Flask是一个轻量级的Python Web框架,可用于开发Web应用程序和API接口。它具有简单易用、灵活高效的特点,并且有大量的扩展库可供使用。本文将介绍如何用Python Flask编写接口,并提供了一些示例代码帮助你入门。

安装Flask

首先,我们需要安装Flask。可以使用以下命令通过pip安装Flask:

pip install flask

编写第一个接口

接下来,我们将编写一个简单的接口,用于返回一个字符串。首先,创建一个名为app.py的Python文件,并输入以下代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

上述代码创建了一个名为app的Flask应用,并在根路径'/'上定义了一个路由处理函数hello_world。当访问根路径时,将会返回字符串'Hello, World!'

运行以下命令启动Flask应用:

python app.py

可以在浏览器中访问http://localhost:5000,即可看到返回的字符串。

路由和请求方法

在Flask中,路由是用于映射URL路径和处理函数之间的关系。我们可以通过使用@app.route()装饰器来定义路由。

接下来,我们将展示如何定义多个路由,并且根据请求方法的不同,调用不同的处理函数。

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
    return 'Home Page'

@app.route('/about')
def about():
    return 'About Page'

@app.route('/user/<username>', methods=['GET', 'POST'])
def user(username):
    if request.method == 'GET':
        return f'Hello, {username}!'
    elif request.method == 'POST':
        return f'Welcome, {username}!'

if __name__ == '__main__':
    app.run()

上述代码中,我们定义了三个路由:'/''/about''/user/<username>'。其中,'/user/<username>'路由使用了<username>作为动态路由参数,可以在处理函数中通过request对象获取。

在上述代码中,index()函数用于处理根路径请求,about()函数用于处理'/about'路径请求,user()函数用于处理'/user/<username>'路径请求。

当访问'/user/<username>'路径时,如果使用GET方法,将返回'Hello, username!',其中username为动态参数;如果使用POST方法,将返回'Welcome, username!'

数据传递

在开发接口时,经常需要接收客户端提交的数据,并根据数据进行一些处理。Flask提供了request对象来处理客户端请求的数据。

接下来,我们将展示如何在接口中接收和处理GET和POST请求的数据。

from flask import Flask, request

app = Flask(__name__)

@app.route('/query', methods=['GET'])
def query():
    keyword = request.args.get('keyword', '')
    return f'Searching for "{keyword}"...'

@app.route('/form', methods=['POST'])
def form():
    username = request.form.get('username', '')
    password = request.form.get('password', '')
    return f'Username: {username}, Password: {password}'

if __name__ == '__main__':
    app.run()

上述代码中,query()函数定义了一个GET请求的路由'/query',通过request.args.get()方法获取URL中的查询参数。如果没有提供查询参数keyword,则默认为空字符串。

form()函数定义了一个POST请求的路由'/form',通过request.form.get()方法获取表单中的数据。在上述代码中,我们假设表单包含了usernamepassword两个字段。

响应数据

Flask提供了多种方式来响应客户端的请求。我们可以返回字符串、JSON数据、模板等不同格式的数据。

接下来,我们将展示如何返回JSON数据和模板。

from flask import Flask, jsonify, render_template

app = Flask(__name__)

@app.route('/json')
def json_response():