0

0

通过Web API实现JavaScript与Python的数据交互

DDD

DDD

发布时间:2025-09-10 14:52:01

|

435人浏览过

|

来源于php中文网

原创

通过Web API实现JavaScript与Python的数据交互

本文详细介绍了如何在浏览器端JavaScript与Python后端之间建立高效的数据通信。核心方法是利用Web API,通过Python的Flask框架构建后端服务,处理JavaScript发送的请求并返回数据。教程涵盖了从API设计、Flask后端实现(包括参数传递和JSON响应),到JavaScript前端(使用Fetch API)消费API的完整流程,旨在帮助开发者实现动态的前后端数据交换。

理解前后端通信的挑战

在web开发中,前端(运行在浏览器中的javascript)和后端(如python应用)之间的数据交互是核心需求。然而,直接让浏览器中的javascript调用本地文件系统上的python脚本是不可能的,这主要是出于安全考虑。浏览器环境是沙盒化的,不允许网页直接访问用户的文件系统或执行本地程序。

与之不同的是,Node.js作为服务器端的JavaScript运行时,可以通过child_process模块来执行本地Python脚本,但这适用于服务器端逻辑,而非浏览器前端。因此,对于浏览器中的JavaScript与Python后端进行通信,我们需要一个标准化的、跨网络的机制,即Web API(应用程序编程接口)。

Web API充当了前端和后端之间的桥梁。它定义了一组规则和协议,允许不同的软件组件相互通信。当浏览器中的JavaScript需要与Python后端交互时,它会向后端提供的API发送HTTP请求(例如,GET、POST),后端接收请求,处理数据,然后通过HTTP响应返回结果。

构建Python后端API:使用Flask

为了实现JavaScript与Python的数据交互,我们将使用Python的轻量级Web框架Flask来构建一个简单的Web API。Flask以其简洁和灵活性而闻名,非常适合快速开发API。

1. 安装必要的库

立即学习Java免费学习笔记(深入)”;

首先,确保你的Python环境中安装了Flask和Flask-CORS。Flask-CORS是一个Flask扩展,用于处理跨域资源共享(CORS)问题,这在前后端部署在不同域时非常常见。

pip install flask flask_cors

2. 定义API行为

我们的目标是创建一个API端点,允许前端传递一个参数给Python函数,然后返回该函数的执行结果。

  • API地址(URL): 我们将在本地运行Flask应用,默认端口是5000。因此,API的基地址将是http://localhost:5000。
  • API端点: 为了组织性,我们将定义一个名为/api/run_foo的端点,用于执行我们的foo函数。完整的API地址将是http://localhost:5000/api/run_foo。
  • 参数传递: 前端需要将数据传递给Python函数。一种常见且简单的方式是通过URL查询参数(Query Parameters)。例如,http://localhost:5000/api/run_foo?param_to_foo=100,其中param_to_foo是参数名,100是其值。
  • 结果返回: 后端将以JSON(JavaScript Object Notation)格式返回结果。JSON是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成,是Web API中最常用的数据格式。

3. 编写Flask应用 (app.py)

创建一个名为app.py的文件,并添加以下代码:

from flask import Flask, jsonify, request
from flask_cors import CORS

# 初始化Flask应用
app = Flask(__name__)
# 启用CORS,允许所有来源的请求
CORS(app)

# 你的核心业务逻辑函数
def foo(param):
    """
    一个简单的Python函数,接收一个参数并返回处理后的结果。
    """
    if isinstance(param, (int, float)):
        return f"From Python. Received: {param}. Its double is: {param * 2}"
    else:
        return f"From Python. Received: {param}. Cannot double non-numeric input."

# 定义API端点及其行为
@app.route("/api/run_foo")
def run_foo_endpoint():
    """
    处理对/api/run_foo端点的GET请求。
    从URL查询参数中获取'param_to_foo',调用foo函数,并返回JSON格式的结果。
    """
    # 从URL查询参数中获取'param_to_foo',并尝试将其转换为整数。
    # 如果参数不存在或转换失败,则返回None。
    foo_param = request.args.get("param_to_foo", type=int)

    # 调用Python函数
    result = foo(foo_param)

    # 将结果封装为字典,然后使用jsonify转换为JSON响应
    data = {"result": result}
    return jsonify(data)

# 如果直接运行此脚本,则启动Flask开发服务器
if __name__ == '__main__':
    app.run(debug=True) # debug=True 会在代码修改时自动重启服务器

4. 启动Flask服务器

在app.py所在的目录下打开终端,运行以下命令启动Flask服务器:

E购-新零售系统
E购-新零售系统

“米烁云货宝”,是一款基于云计算的Saas模式新零售系统。以互联网为基础,通过大数据、人工智能等先进技术,对商品的生产、流通、销售、服务等环节转型升级改造,进而重塑业态结构与生态圈。并对线上交易运营服务、线下体验购买及现代物流进行深度融合,所形成的零售新模式。

下载
flask run

如果你的文件不是app.py,例如是my_api.py,则需要运行:

flask --app my_api run

服务器启动后,你可以在浏览器中访问 http://localhost:5000/api/run_foo?param_to_foo=50 来测试API。你应该会看到一个JSON响应,例如:{"result":"From Python. Received: 50. Its double is: 100"}。

JavaScript前端消费API:使用Fetch API

现在,我们已经有了一个运行中的Python API,接下来将展示如何在浏览器中的JavaScript代码中调用这个API,并处理其返回的数据。我们将使用现代JavaScript内置的Fetch API,它提供了一种简单且强大的方式来发起网络请求。

1. 编写HTML文件 (index.html)

创建一个名为index.html的文件,并添加以下代码:




    
    
    JavaScript与Python API交互示例
    


    

JavaScript与Python API交互

API响应:

等待输入...

2. 运行前端页面

在浏览器中打开index.html文件(可以直接双击打开,或者通过Web服务器如Live Server)。确保你的Flask服务器(app.py)仍在运行。

在输入框中输入一个数字,点击“发送到Python”按钮,你将看到Python处理后的结果显示在“API响应”区域。

关键概念与注意事项

  • HTTP协议: 前后端通信基于HTTP协议。前端发送HTTP请求,后端返回HTTP响应。
  • RESTful API: 这种通过URL和HTTP方法(GET、POST等)来操作资源的API设计风格被称为RESTful。
  • JSON: 广泛用于Web API的数据交换格式,JavaScript原生支持JSON解析和序列化。
  • CORS (跨域资源共享): 当前端页面和后端API部署在不同的域名、端口或协议时,浏览器会实施同源策略,阻止跨域请求。flask_cors库允许后端服务器明确告知浏览器允许哪些源进行访问。
  • 异步编程 (async/await): 网络请求是异步操作,async/await是JavaScript中处理异步操作的现代方式,使代码看起来更像同步代码,提高了可读性。
  • 错误处理: 在实际应用中,前端和后端都应包含健壮的错误处理机制。例如,后端应验证输入,处理异常;前端应捕获网络错误、解析错误和服务器返回的错误信息。
  • 安全性: 对于生产环境,还需要考虑API的安全性,如用户认证、授权、输入验证、防止SQL注入或XSS攻击等。
  • 部署: 本教程是在本地运行Flask服务器。在生产环境中,你需要将Flask应用部署到Web服务器(如Gunicorn + Nginx或Heroku等平台),使其可以通过公共IP地址访问。

总结

通过本教程,我们学习了如何利用Web API实现浏览器端JavaScript与Python后端之间的数据交互。核心思想是构建一个基于HTTP协议的后端服务(使用Flask),并通过JavaScript的Fetch API向该服务发送请求、传递参数并接收处理结果。这种前后端分离的架构是现代Web应用开发的标准范式,它使得前端和后端可以独立开发、部署和扩展,极大地提高了开发效率和系统灵活性。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

773

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

684

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

765

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

699

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1405

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

570

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

751

2023.08.11

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

17

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.1万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号