python:使用RESTful API(flask)调用python程序传递参数,实现Web端调用python程序

这篇具有很好参考价值的文章主要介绍了python:使用RESTful API(flask)调用python程序传递参数,实现Web端调用python程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

现有一个用python写的程序(或者是一个或几个的函数接口),需要在Web前端调用python写的函数。如果直接用前端java来调用会很不方便,而且会出现各种麻烦的问题,下面给出如何在web前端调用python的接口。

解决方法

使用python的RESTful API库将python写的函数封装为Web端可调用的接口,在web端即可直接调用python的程序。

解决过程

1. 安装RESTful API环境

RESTful API环境其实主要是需要安装flask库,安装方法如下:
使用pip安装:

pip install flask

使用conda 安装:
如何没有创建新的虚拟环境,首先创建虚拟环境:

conda create --name <环境名称> [python=<Python版本>]
# 例如
conda create --name myenv python=3.10

然后激活进入创建的新环境:

conda activate myenv

然后安装flask:

conda install flask

安装途中选择y即可安装好。

2.测试是否安装完成

from flask import Flask

app = Flask(__name__)

@app.route('/')  
def hello_world():
    return "hello world"

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

如果出现下面的输出,说明flask安装完成,然后复制下面的网站,输入浏览器
python提供restful接口,python,python,restful,flask,web端调用python
如果浏览器上显示返回的内容,则说明配置成功:
python提供restful接口,python,python,restful,flask,web端调用python

3. 如何调用带参数的python程序

上面的是一个简单的例子,下面介绍一下如何调用带参数的python程序
代码如下:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 求三个数的乘积,第三个输入参数为数组类型
def multiply(num1,num2,num3):
    return num1*num2*num3[0]
    
# sum 为端口,methods为方法
@app.route('/sum', methods=['GET'])
def sum_numbers():
	# 首先获取参数,将参数读进来
    num1 = float(request.args.get('num1'))
    num2 = int(request.args.get('num2'))
    num3 = np.array(eval(request.args.get('num3')))
    # 将读取到的参数输入函数和所要计算公式中
    result = num1 + num2 + multiply(num1,num2,num3)
    # 所要返回的内容,该例子返回的是一个字典类型数据
    result = {'ID':num1,'sum':result}
    return jsonify(result)

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

运行程序后,在浏览器输入:

http://127.0.0.1:5000/sum?num1=10&num2=20&num3=[2,3]

则可以显示返回值
python提供restful接口,python,python,restful,flask,web端调用python
根据上述步骤即可实现在Web端调用python程序接口。但调用接口的时候需要先运行上述的函数或接口,然后在浏览器中输入相应的url才可调用成功。

注意事项

1. 报错如何解决

出错最多的为404 NOT Found,这个错误一般是因为端口与程序中定义的不一致,自行检查一般可以解决。
还有就是Internal Server Error 500,这个错误说明端口可以正常访问,但是内部的程序或代码语法出现了问题,可以在代码中使用try....except来捕捉错误具体信息:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 求三个数的乘积,第三个输入参数为数组类型
def multiply(num1,num2,num3):
    return num1*num2*num3[0]
    
# sum 为端口,methods为方法
@app.route('/sum', methods=['GET'])
def sum_numbers():
	try:
		# 首先获取参数,将参数读进来
	    num1 = float(request.args.get('num1'))
	    num2 = int(request.args.get('num2'))
	    num3 = np.array(eval(request.args.get('num3')))
	    # 将读取到的参数输入函数和所要计算公式中
	    result = num1 + num2 + multiply(num1,num2,num3)
	    # 所要返回的内容,该例子返回的是一个字典类型数据
	    result = {'ID':num1,'sum':result}
	    return jsonify(result)
	except Exception as e:
        traceback.print_exc()
        return "Internal Server Error: " + str(e), 500

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

当报错Internal Server Error 500时,可以采用上述方法来查看具体错误。一般会返回类型值类型为非jsonify或string或数字类型,可以在返回值前添加int、float或str来进行转换,即可解决问题。

2. 多个函数调用

如果是多个函数调用,格式如下:

from flask import Flask, request, jsonify

app = Flask(__name__)
def function1():def function2():def function3():
	…
	…
if __name__ == '__main__':
    app.run()

以上就是全部内容,最后贴出一个如何用flask调用简单处理栅格数据的例子,其他操作可以参考:文章来源地址https://www.toymoban.com/news/detail-807185.html

# test
import numpy as np
import math
from osgeo import gdal
from osgeo import osr
from osgeo import ogr
from shapely.geometry import Point
from shapely.wkt import dumps
from flask import Flask, request, jsonify

app = Flask(__name__)

folder_dem = "C:\\Users\\Administrator\\Desktop\\ycDEM.tif"

# read data, nan to 0
def ReadData(filepath):
    gdal.AllRegister()
    ds = gdal.Open(filepath)
    cols = ds.RasterXSize
    rows = ds.RasterYSize
    bands = ds.RasterCount
    geotrans = ds.GetGeoTransform()
    proj = ds.GetProjection()
    data = ds.ReadAsArray()
    data[data == data[0,0]] = 0
    return data

@app.route('/ReadData1')
def test1():
    try:
        a = ReadData(folder_dem)
        b = np.max(a)
        point1 = Point(31.3,42.3)
        wkt1 = dumps(point1)
        c = {'a': int(b), 'b': int(b), 'c':wkt1}
        # 返回包含两个字典
        return jsonify([c,c])
    except Exception as e:
        traceback.print_exc()
        return "Internal Server Error: " + str(e), 500

@app.route('/ReadData2')
def test2():
    try:
        a = ReadData(folder_dem)
        b = np.max(a)
        point1 = Point(3,4)
        wkt1 = dumps(point1)
        c = {'a': int(b), 'c':wkt1}
        return jsonify([c,c])
    except Exception as e:
        traceback.print_exc()
        return "Internal Server Error: " + str(e), 500
    
if __name__ == '__main__':
    app.run()

更多内容关注公众号: GISerQ

到了这里,关于python:使用RESTful API(flask)调用python程序传递参数,实现Web端调用python程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flask中实现restful-api

    flask中实现restful-api 举例,我们可以创建一个用于管理任务(Task)的API。在这个例子中,我们将有以下API: GET /tasks : 获取所有任务 POST /tasks : 创建一个新的任务 GET /tasks/id : 获取一个任务的详情 PUT /tasks/id : 更新一个任务 DELETE /tasks/id : 删除一个任务 在这个例子中,我们将使

    2024年02月14日
    浏览(33)
  • 探索Flask中的RESTful API设计与实现

    基础介绍: ​ RESTful API(Representational State Transfer)是一种基于HTTP协议设计的应用程序编程接口(API)风格,用于在客户端和服务器之间进行通信。它提供了一组规范和约束,用于创建可伸缩、可靠和可维护的网络服务。 路径(URI)设计: 使用有意义的路径来表示资源,例

    2024年01月21日
    浏览(30)
  • Flask进阶:构建RESTful API和数据库交互

    在初级教程中,我们已经介绍了如何使用Flask构建基础的Web应用。在本篇中级教程中,我们将学习如何用Flask构建RESTful API,以及如何使用Flask-SQLAlchemy进行数据库操作。 REST(Representational State Transfer)是一种构建Web服务的方法,它利用了HTTP协议中的四种基本操作:GET、POST、

    2024年02月14日
    浏览(38)
  • FastAPI和Flask:构建RESTful API的比较分析

    Python 是一种功能强大的编程语言,广泛应用于 Web 开发领域。 FastAPI  和 Flask 是 Python Web 开发中最受欢迎的两个框架。本文将对 FastAPI 和 Flask 进行综合对比,探讨它们在语法和表达能力、生态系统和社区支持、性能和扩展性、开发工具和调试支持、安全性和稳定性、学习曲线

    2024年02月13日
    浏览(31)
  • java restful application/x-www-form-urlencoded 传递参数

            在发送短信的时候,要使用x-www-form-urlencoded的编码格式进行传递参数。  具体要求: 参数名称 说明 备注 userId 用户名 timespan 时间戳 格式为yyyyMMddHHmmss password 密码 此处用原始密码+时间戳 做MD5加密,32位大写格式   phone 手机号 多个用英文逗号隔开 msgType 编码类型 选

    2024年02月14日
    浏览(32)
  • 用Kettle调用Restful API 接口

    前言 作为一名架构师,在带领团队进行项目开发时,笔者认为一定要遵循一个原则:能借助第三方工具解决的开发任务,尽量用工具解决,以此来减少开发量,这样不但能够提高团队的工作效率,便于项目及时交付,也能在开发人员数量一定的条件下,更容易把余下的开发工

    2024年02月01日
    浏览(33)
  • 解释 RESTful API,以及如何使用它构建 web 应用程序

             RESTful API stands for Representational State Transfer Application Programming Interface. It is a set of principles and guidelines for building web services that provide data in a standard format, typically JSON or XML. RESTful API emphasizes on uniformity, scalability, reliability, performance, and flexibility. It operates on HTTP and follo

    2024年02月14日
    浏览(51)
  • 解释 RESTful API,以及如何使用它构建 web 应用程序。

    RESTful API是一种利用HTTP协议进行通信的Web API设计风格,它采用了一组统一且可缓存的操作,包括GET、POST、PUT、DELETE等,通过URL来定位资源,以及使用JSON、XML等格式来传输数据,以实现系统之间的数据交互和资源共享。 使用RESTful API构建Web应用程序,首先需要设计API的URL、

    2024年02月11日
    浏览(54)
  • 【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK

    Python是一种 流行 的高级编程语言,具有易于学习和使用的特性,被广泛应用于各种领域。 简单易学 :Python的语法清晰简洁,易于理解和学习。与其他编程语言相比,Python的语法设计非常直观,使得编程新手也能快速上手。 强大的标准库和丰富的第三方库 :Python拥有一个庞

    2024年02月04日
    浏览(40)
  • 使用Flask Web创建一个调用ChatGPT API的网页--简单示例(linux环境下)

    前提:你应该要有一个能正常使用chatGPT的openAI账号;即你已经成功注册了chatGPT,并能正常使用。 下面是一个使用Flask Web框架创建调用ChatGPT API的网页的示例代码和工程结构: 具体的工程,你可以选择自己创建,也可以直接下载我创建好的工程,链接如下: https://download.csd

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包