python:
from flask import Flask, render_template, redirect, url_for, flash, request,jsonify
import mysql.connector
from mysql.connector import Error
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask_cors import CORS
app = Flask(__name__)
app.secret_key = 'your_secret_key' # 用于 CSRF 保护
CORS(app)
# 数据库配置
db_config = {
'host': 'localhost',
'database': 'mydb3',
'user': 'root',
'password': '123456'
}
# 假设有一个名为 garbage 的表,其结构如下:
# CREATE TABLE `garbage` (
# `id` INT AUTO_INCREMENT PRIMARY KEY,
# `type` VARCHAR(255),
# `name` VARCHAR(255)
# );
# 创建一个简易的表单类
class GarbageForm(FlaskForm):
type = StringField('Type', validators=[DataRequired()])
name = StringField('Name', validators=[DataRequired()])
submit = SubmitField('Submit')
@app.route('/')
def home():
return "Hello, Welcome to the App!"
# 返回JSON数据
@app.route('/api/get-garbage-data', methods=['GET'])
def get_garbage_data_api():
connection = None
try:
connection = mysql.connector.connect(**db_config)
if connection.is_connected():
dbcursor = connection.cursor()
query = ("SELECT id, type, name FROM garbage")
dbcursor.execute(query)
data = dbcursor.fetchall()
dbcursor.close()
return jsonify(list(map(lambda x: {"id": x[0], "type": x[1], "name": x[2]}, data)))
except Error as e:
print(f"Error while connecting to MySQL: {e}")
return jsonify({"status": "error", "message": str(e)}), 500
finally:
if connection is not None:
connection.close()
# 主入口
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0',port=5000)
微信小程序端 云函数index.js 和页面 index.js 以及最后报错
云函数index.js
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 云函数入口函数
exports.main = async (event, context) => {
const axios = require('axios');
try {
// 使用正确的URL替换下面的URL
const response = await axios.get('https://2695e4eb.r21.cpolar.top/api/get-garbage-data');
if (response.status === 200) {
const garbageData = response.data;
const db = cloud.database();
const result = await Promise.all(garbageData.map(item => {
return db.collection('garbage').add({
data: {
type: item.type,
name: item.name,
}
});
}));
console.log('数据成功保存到云数据库:', result);
return {
success: true,
result: result,
message: '数据已成功保存到云数据库'
};
} else {
console.error('获取数据失败,HTTP状态码:', response.status);
return {
success: false,
message: '获取数据失败,HTTP状态码:' + response.status
};
}
} catch (e) {
console.error('处理远程请求时发生错误:', e);
return {
success: false,
message: '处理远程请求时发生错误:' + e.message
};
}
};
y页面index.js:
// pages/index/index.js
// pages/index/index.js
Page({
data: {
garbageList: [],
operationStatus: '',
errorMessage: '',
},
onLoad: function(options) {
this.main();
},
main: function() {
wx.cloud.callFunction({
name: 'main',
data: {}, // 传递给云函数的参数
}).then(res => {
if (res.result && res.result.success) {
this.setData({
operationStatus: 'success',
garbageList: res.result.result,
errorMessage: res.result.message || '',
});
console.log('数据获取并保存成功:', res.result);
} else {
this.setData({
operationStatus: 'error',
errorMessage: res.result ? res.result.message : '未知错误',
});
console.error('数据获取失败:', res.result ? res.result.message : '未知错误');
}
}).catch(err => {
this.setData({
operationStatus: 'error',
errorMessage: '云函数调用失败:' + err.message,
});
console.error('云函数调用失败:', err);
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})
y页面 wxml:
<view>
<view wx:if="{{operationStatus === 'success'}}">
数据获取并保存成功,请在云数据库中查看。
</view>
<view wx:elif="{{operationStatus === 'error'}}">
获取数据失败,请检查网络状态或联系管理员:{{errorMessage}}
</view>
<view wx:else>
正在获取数据,请稍候...
</view>
</view>
最后报错:
index.js? [sm]:31 数据获取失败: 处理远程请求时发生错误:Request failed with status code 404(env: Windows,mp,1.06.2402040; lib: 2.25.4)
(anonymous) @ index.js? [sm]:31
Promise.then (async)
main @ index.js? [sm]:18
onLoad @ index.js? [sm]:11
求解答为什么会出现这个问题 做了core 也用postman 请求过 能获得数据但是换到微信小程序就不行了????
q求大佬解答
接口404,这还需要解答吗
这是不是意味着服务端搭建出问题了?没穿透出去吗?