Comment créer des fonctions API à l'aide de Python Flask ?

PHPz
Libérer: 2023-04-21 20:49:06
avant
1596 Les gens l'ont consulté

1. Présentation

Python Flask est un framework Web léger qui fournit une API facile à utiliser pour créer des applications Web. Dans Flask, nous pouvons utiliser les fonctions Python pour définir des routes et des gestionnaires pour notre application Web.

2. Explication des fonctions courantes

Voici quelques fonctions courantes de l'API Python Flask :

1) Fonction Flask()

Cette fonction est le cœur de l'application Flask et est utilisée pour créer une nouvelle instance Flask.

from flask import Flask
app = Flask(__name__)
Copier après la connexion

2) Fonction route()

Cette fonction est utilisée pour spécifier les méthodes de routage et de requête. Plusieurs itinéraires peuvent être définis à l'aide de plusieurs fonctions route(). route() 函数来定义多个路由。

@app.route('/')
def hello_world():
    return 'Hello, World!'
Copier après la connexion

3)jsonify() 函数

这个函数可以将 Python 对象转换为 JSON 格式的响应对象。

from flask import jsonify
@app.route('/users')
def get_users():
    users = [
        {'name': 'Alice', 'age': 25},
        {'name': 'Bob', 'age': 30},
        {'name': 'Charlie', 'age': 35}
    ]
    return jsonify(users)
Copier après la connexion

4)render_template() 函数

这个函数用来渲染模板并返回 HTML 响应对象。可以使用模板引擎来动态生成 HTML。

from flask import render_template
@app.route(&#39;/profile/<username>&#39;)
def profile(username):
    return render_template(&#39;profile.html&#39;, name=username)
Copier après la connexion

5)redirect() 函数

这个函数可以将请求重定向到另一个 URL。

from flask import redirect
@app.route(&#39;/redirect&#39;)
def redirect_to_home():
    return redirect(&#39;/&#39;)
Copier après la connexion

6)url_for() 函数

这个函数用于生成 URL,可以使用视图函数的名称作为参数。

from flask import url_for
@app.route(&#39;/profile/<username>&#39;)
def profile(username):
    return f&#39;Hello, {username}! Your profile URL is {url_for("profile", username=username)}.&#39;
Copier après la connexion

7)before_request() 函数

这个函数用来注册一个函数,在每个请求之前执行。

@app.before_request
def before_request():
    if &#39;user_id&#39; not in session and request.endpoint not in [&#39;login&#39;, &#39;static&#39;]:
        return redirect(url_for(&#39;login&#39;))
Copier après la connexion

8)after_request() 函数

这个函数用来注册一个函数,在每个请求之后执行。

@app.after_request
def after_request(response):
    response.headers[&#39;X-Frame-Options&#39;] = &#39;SAMEORIGIN&#39;
    return response
Copier après la connexion

9)abort() 函数

这个函数用于在视图函数中引发异常,并返回一个错误响应。

from flask import abort
@app.route(&#39;/users/<int:user_id>&#39;)
def get_user(user_id):
    user = User.query.get(user_id)
    if user is None:
        abort(404)
    return jsonify(user.to_dict())
Copier après la connexion

10)send_file() 函数

这个函数用于发送文件作为响应,可以将文件作为字节流或者文件路径来发送。

from flask import send_file
@app.route(&#39;/download&#39;)
def download_file():
    file_path = &#39;/path/to/file&#39;
    return send_file(file_path, as_attachment=True)
Copier après la connexion

三、常用对象讲解

1)request 对象

这个对象表示客户端发出的请求,包含请求头和请求体等信息。可以使用 request 对象来获取客户端发送的数据。

from flask import request
@app.route(&#39;/login&#39;, methods=[&#39;POST&#39;])
def login():
    username = request.form[&#39;username&#39;]
    password = request.form[&#39;password&#39;]
    return f&#39;Hello, {username}! Your password is {password}.&#39;
Copier après la connexion

2)session 对象

这个对象可以用来存储用户会话数据,例如用户 ID 等。

from flask import session
@app.route(&#39;/login&#39;, methods=[&#39;POST&#39;])
def login():
    username = request.form[&#39;username&#39;]
    password = request.form[&#39;password&#39;]
    if username == &#39;admin&#39; and password == &#39;password&#39;:
        session[&#39;user_id&#39;] = 1
        return redirect(&#39;/&#39;)
    else:
        return &#39;Invalid username or password.&#39;
Copier après la connexion

四、Flask 中的 cookies 与 session

1)cookies 与 session 的介绍与区别

在 Flask 中,Cookies 和 Session 都是用来跟踪用户状态的机制。

Cookie 是一小段文本数据,当一个用户访问你的网站时,服务器可以通过设置 cookie 把一些数据存储在用户的计算机上。当用户再次访问网站时,浏览器会发送 cookie 数据给服务器,以便服务器可以使用该数据来识别用户。Flask 使用 Flask-Cookie 来处理 cookies,使用它可以设置、获取和删除 cookies

Session 是一种在服务器端存储的状态数据,与 Cookie 不同,Session 数据不会存储在用户的计算机上,而是存储在服务器端。当一个用户访问你的网站时,服务器会为该用户创建一个唯一的 Session ID,并将该 ID 存储在一个 cookie 中,然后服务器使用该 Session ID 来识别用户。Flask 使用 Flask-Session 来处理 Session,使用它可以设置、获取和删除 Session 数据。

一般来说,Session 更加安全,因为数据存储在服务器端,而且用户无法直接修改数据。Cookie 的优点是可以存储大量数据,并且可以在不同的页面之间共享。在实际使用中,开发者可以根据需要选择使用 CookieSession

以下是在 Flask 中使用 Cookies 和 Session 的示例:

2)示例讲解

1、使用 Flask-Cookie 设置 Cookie
from flask import Flask, make_response
app = Flask(__name__)
@app.route(&#39;/&#39;)
def index():
    response = make_response(&#39;Hello, World!&#39;)
    response.set_cookie(&#39;name&#39;, &#39;value&#39;)
    return response
if __name__ == &#39;__main__&#39;:
    app.run()
Copier après la connexion

在上面的例子中,我们使用 Flask 的 make_response 函数创建一个响应对象,然后使用 set_cookie 方法设置了一个名为 name,值为 valuecookie

2、使用 Flask-Cookie 获取 Cookie
from flask import Flask, request
app = Flask(__name__)
@app.route(&#39;/&#39;)
def index():
    name = request.cookies.get(&#39;name&#39;)
    return f&#39;Hello, {name}!&#39;
if __name__ == &#39;__main__&#39;:
    app.run()
Copier après la connexion

在上面的例子中,我们使用 Flask 的 request 对象获取了名为 namecookie 的值,然后将其返回给用户。

3、使用 Flask-Session 设置和获取 Session
from flask import Flask, session
app = Flask(__name__)
app.config[&#39;SECRET_KEY&#39;] = &#39;your_secret_key&#39;
@app.route(&#39;/&#39;)
def index():
    session[&#39;name&#39;] = &#39;value&#39;
    name = session.get(&#39;name&#39;)
    return f&#39;Hello, {name}!&#39;
if __name__ == &#39;__main__&#39;:
    app.run()
Copier après la connexion

在上面的例子中,我们使用 Flask 的 session 对象设置了一个名为 name,值为 value 的 Session,并使用 get 方法获取了该 Session 的值,然后将其返回给用户。

需要注意的是,为了使用 Flask-Session,需要在应用程序中设置一个 SECRET_KEY。该密钥用于加密 Sessionrrreee

3) Fonction jsonify()🎜🎜Cette fonction peut convertir un objet Python en un objet de réponse au format JSON. 🎜rrreee🎜4) Fonction render_template() 🎜🎜Cette fonction est utilisée pour restituer le modèle et renvoyer l'objet de réponse HTML. Les moteurs de modèles peuvent être utilisés pour générer dynamiquement du HTML. 🎜rrreee🎜5) Fonction redirect()🎜🎜Cette fonction peut rediriger la requête vers une autre URL. 🎜rrreee🎜6) Fonction url_for() 🎜🎜Cette fonction est utilisée pour générer des URL et peut utiliser le nom de la fonction d'affichage comme paramètre. 🎜rrreee🎜7) Fonction before_request() 🎜🎜Cette fonction permet d'enregistrer une fonction à exécuter avant chaque requête. 🎜rrreee🎜8) Fonction after_request() 🎜🎜Cette fonction est utilisée pour enregistrer une fonction à exécuter après chaque requête. 🎜rrreee🎜9) Fonction abort() 🎜🎜Cette fonction est utilisée pour déclencher une exception dans la fonction d'affichage et renvoyer une réponse d'erreur. 🎜rrreee🎜10) Fonction send_file() 🎜🎜Cette fonction est utilisée pour envoyer un fichier en réponse. Le fichier peut être envoyé sous forme de flux d'octets ou de chemin de fichier. 🎜rrreee🎜3. Explication des objets communs🎜🎜1) objet de demande🎜🎜Cet objet représente la demande émise par le client, y compris les en-têtes de demande, les corps de demande et d'autres informations. Vous pouvez utiliser l'objet request pour obtenir les données envoyées par le client. 🎜rrreee🎜2) objet de session🎜🎜Cet objet peut être utilisé pour stocker les données de session utilisateur, telles que l'ID utilisateur, etc. 🎜rrreee🎜4. Cookies et session dans Flask🎜🎜1) Introduction et différence entre les cookies et la session🎜🎜Dans Flask, les cookies et la session sont tous deux des mécanismes utilisés pour suivre le statut de l'utilisateur. 🎜🎜Cookie est un petit morceau de données textuelles Lorsqu'un utilisateur visite votre site Web, le serveur peut stocker certaines données sur l'ordinateur de l'utilisateur en définissant un cookie. Lorsque l'utilisateur visite à nouveau le site Web, le navigateur envoie des données de cookie au serveur afin que le serveur puisse utiliser les données pour identifier l'utilisateur. Flask utilise Flask-Cookie pour gérer les cookies, qui peuvent être utilisés pour définir, obtenir et supprimer des cookies. 🎜🎜Session est une sorte de données d'état stockées côté serveur Contrairement au Cookie, les données Session ne seront pas stockées sur l'ordinateur de l'utilisateur. Au lieu de cela, il est stocké côté serveur. Lorsqu'un utilisateur visite votre site Web, le serveur crée un ID de session unique pour l'utilisateur et stocke l'ID dans un cookie , le serveur utilise ensuite cet ID de session pour identifier l'utilisateur. Flask utilise Flask-Session pour gérer la Session, qui peut être utilisée pour définir, obtenir et supprimer les données Session. 🎜🎜De manière générale, Session est plus sécurisée car les données sont stockées côté serveur et les utilisateurs ne peuvent pas modifier directement les données. L'avantage des Cookies est qu'ils peuvent stocker de grandes quantités de données et peuvent être partagés entre différentes pages. En utilisation réelle, les développeurs peuvent choisir d'utiliser Cookie ou Session selon leurs besoins. 🎜🎜Ce qui suit est un exemple d'utilisation des cookies et de la session dans Flask : 🎜🎜2) Exemple d'explication🎜
1 Utilisez Flask-Cookie pour définir Cookie
rrreee🎜Dans l'exemple ci-dessus, nous utilisons le make_response crée un objet de réponse, puis utilise la méthode set_cookie pour définir un cookie nommé name avec une valeur de value. 🎜
2. Utilisez Flask-Cookie pour obtenir Cookie
rrreee🎜Dans l'exemple ci-dessus, nous utilisons l'objet request de Flask pour obtenir le cookie nommé name cookie et le renvoie à l'utilisateur. 🎜
3. Utilisez Flask-Session pour définir et obtenir Session
rrreee🎜Dans l'exemple ci-dessus, nous utilisons l'objet session de Flask pour configurer une session nommée name avec une valeur, et utilisons la méthode get pour l'obtenir. Obtenez la valeur de la session, puis renvoyez-la à l'utilisateur. 🎜🎜Il convient de noter que pour utiliser Flask-Session, vous devez définir un SECRET_KEY dans l'application. Cette clé est utilisée pour chiffrer les données Session afin de garantir que les données ne sont pas falsifiées. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!