Python写一个简单的api接口的实现
作者:小创果 发布时间:2023-07-23 20:20:53
python框架有很多,例如:Flask,Django,FastAPI 等。本文将使用 Flask 来编写 API 接口。
安装Flask
首先,您需要安装 Flask:
pip install flask
写主程序
接下来,我们可以创建一个名为 app.py 的文件,在其中编写 Flask 应用程序代码:
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def api():
name = request.args.get('name')
if name:
return "Hello, " + name
else:
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
运行代码
python app.py
在浏览器中访问 http://localhost:5000/api,应该会返回 “Hello, World!”。
如果向该 URL 添加参数,例如 http://localhost:5000/api?name=YourName,则会返回 “Hello, YourName”。
我们还可以给它添加一个简单的token验证
以下代码来给 API 接口添加一个简单的 token 验证:
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def api():
token = request.args.get('token')
if token != 'secret_token':
return "Invalid token", 401
name = request.args.get('name')
if name:
return "Hello, " + name
else:
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
在上面的代码中,我们添加了一个 token 参数,并在该参数不为 secret_token 时返回一个 “Invalid token” 的错误响应(HTTP 状态代码 401)。
在实际生产环境中,应该使用更强大的身份验证方法,而不是仅仅使用简单的 token,但在本例中可以作为一个简单的示例。
在生产环境中,您应该使用更复杂的身份验证方法,例如:OAuth2,JWT 等。
在使用 Flask 的情况下,您可以使用第三方库,例如 Flask-OAuthlib 或 Flask-JWT-Extended 来实现身份验证。
下面是使用 Flask-JWT-Extended 实现身份验证的示例代码:
from flask import Flask, request
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity
)
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'secret-key'
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username', None)
password = request.json.get('password', None)
if username != 'test' or password != 'test':
return {'message': 'Bad username or password'}, 401
# identity is a simple string, like a username
access_token = create_access_token(identity=username)
return {'access_token': access_token}, 200
@app.route('/api', methods=['GET'])
@jwt_required
def api():
current_user = get_jwt_identity()
return "Hello, " + current_user
if __name__ == '__main__':
app.run(debug=True)
在上面的代码中,我们定义了两个路由:/login 和 /api。在 /login 中,我们检查用户名和密码,如果正确,则创建一个 JWT 访问令牌并将其返回给用户。在 /api 中,我们使用 jwt_required 装饰器来确保该 API 只能被拥有 JWT 令牌的用户访问。
在实际生产环境中,应该使用更复杂的身份验证方法,例如:OAuth2,JWT 等。另外,还需要仔细考虑 JWT 秘密密钥的安全性,以防止任何恶意用户恢复或篡改 JWT 令牌。
为了确保身份验证过程的安全性,还应该在客户端使用 HTTPS 安全套接字层 (SSL/TLS) 连接到 API 接口,以防止数据在网络中被窃取。
请注意,这仅是一个简单的 JWT 身份验证示例,在生产环境中,可能需要更复杂的验证方法。因此,请确保在使用 JWT 或任何其他身份验证方法之前,完全了解其安全性,以确保你的 API 接口不会受到攻击。
来源:https://blog.csdn.net/qq_39653624/article/details/128991400


猜你喜欢
- 一、创建和管理表 1、创建表语法 create table 表名(column datatype [default expr][,colum
- 引文之前将PHP反序列化的基础知识讲了一遍,不知道大家学习的怎么样了,今天给大家带来PHP反序列化的进阶知识:PHAR反序列化,也是之前本人
- 前言:日常工作中,会遇到一些加密的zip文件,但是因为某些原因或者时间过长,密码不知道了。但是zip文件中文件有很重要很必须。那么,我们试一
- 本文研究的主要是python处理csv数据动态显示曲线,分享了实现代码,具体如下。代码:# -*- coding: utf-8 -*- &q
- 在做项目时发现,很多场合都可能用到Input但又想让它具有select的特性,研究了一下,似乎可以实现,下面的代码可以大概说明我的意图,但实
- 在使用pytorch的时候,经常会涉及到两种数据格式tensor和ndarray之间的转换,这里总结一下两种格式的转换:1. tensor
- ########################## # # # 为了避免截断中文字符 # # 文件要求是 unicode 编码 # # t
- Python具有基本的文本文件读写功能。Python的标准库提供有更丰富的读写功能。文本文件的读写主要通过open()所构建的文件对象来实现
- python cron定时任务触发接口自动化巡检定时任务触发方式有几种类型,日常的工作中,研发同学运用比较多的就是cron方式查了一下APS
- 当我们写用例断言时,往往一个断言结果是不够的,所以需要加入多重断言,而多重断言,当断言中间出现断言结果False时,会中断后续的断言执行,会
- 下载:pip install apschedulerpip install django-apscheduler将 django-apsch
- 最近vue更新的2.0版本,唉,我是在2.0版本前学习的,现在更新了又要看一遍了,关键是我之前看了3个星期2.0就更新了,vux还没同步更新
- Tensorflow 提供了一种统一的格式来存储数据,这个格式就是TFRecord,上一篇文章中所提到的方法当数据的来源更复杂,每个样例中的
- 本文实例讲述了朴素贝叶斯算法的python实现方法。分享给大家供大家参考。具体实现方法如下:朴素贝叶斯算法优缺点优点:在数据较少的情况下依然
- cookielib是一个自动处理cookies的模块,如果我们在使用爬虫等技术的时候需要保存cookie,那么cookielib会让你事半功
- 通常我们会在一些javascript的书籍上看到,使用Javascript保留字作为标识符(变量名、函数名、循环标记等)时,会引起程序报错!
- 这篇文章主要介绍了python获取网络图片方法及整理过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 目前搜索到的方法有:np.where(‘元素')还有就是pandas的方法:df.index(‘元素')但是第二个方法的问题
- XML 的使用越来越广泛,但是很多 XML 的结构并不好。即便结构良好,也常常设计得很糟,使得处理和维护非常困难。而大部分用于 XML 的基
- 引言上次给大家分享了:《1行Python代码,实现增值税发票识别》。在那个视频的开始,也预告了本篇的内容:把识别的发票内容,分门别类的写进E