网站开发怎么谈客户,枣庄联通网站备案,想做网店怎么做,网站建设与推广协议引言 随着前端界面的完成#xff0c;我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求#xff0c;调用智能合约的方法获取食品溯源信息#xff0c;并将结果返回给前端。 通过前后端的整合#xff0c;我们可以构建一个食品溯源系统#xf…引言 随着前端界面的完成我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求调用智能合约的方法获取食品溯源信息并将结果返回给前端。 通过前后端的整合我们可以构建一个食品溯源系统为用户提供便捷、安全的食品查询服务。
目录
引言
后端代码实现
安装依赖
首先确保已经安装了Node.js和npm。然后在项目根目录下执行以下命令安装依赖
创建后端服务器
在项目根目录下创建一个名为server.js的文件并编写以下代码
配置环境变量
在项目根目录下创建一个名为.env的文件并添加以下环境变量
启动后端服务器
在项目根目录下执行以下命令启动后端服务器
修改前端代码中的请求地址
启动前端项目并测试
在前端项目根目录下执行以下命令启动前端项目
总结 后端代码实现
在本文中我们将使用Node.js和Express框架来编写后端代码。同时我们继续使用Web3.js库与区块链网络进行交互。
安装依赖 首先确保已经安装了Node.js和npm。然后在项目根目录下执行以下命令安装依赖
npm install express body-parser web3 dotenv 其中express用于构建Web服务器body-parser用于解析前端发送的请求体web3用于与区块链网络进行交互dotenv用于加载环境变量。 创建后端服务器 在项目根目录下创建一个名为server.js的文件并编写以下代码
require(dotenv).config();
const express require(express);
const bodyParser require(body-parser);
const Web3 require(web3); const app express();
app.use(bodyParser.json()); // 初始化Web3对象
const web3 new Web3(Web3.givenProvider || process.env.BLOCKCHAIN_PROVIDER); // 连接到区块链网络这里以本地开发环境为例
const contractAddress process.env.CONTRACT_ADDRESS;
const abi JSON.parse(process.env.CONTRACT_ABI);
const foodTraceabilityContract new web3.eth.Contract(abi, contractAddress); // 定义路由处理函数
app.get(/food/:id, async (req, res) { try { const foodId req.params.id; const foodInfo await foodTraceabilityContract.methods.getFoodInfo(foodId).call(); res.json(foodInfo); } catch (error) { console.error(error); res.status(500).json({ message: Error fetching food info }); }
}); // 启动服务器
const port process.env.PORT || 3001;
app.listen(port, () { console.log(Server is running on port ${port});
}); 在上面的代码中我们首先使用dotenv加载环境变量这些环境变量包括区块链网络的提供商地址、智能合约的地址和ABI等。然后我们创建了一个Express应用并使用了body-parser中间件来解析请求体。接下来我们初始化了Web3对象并连接到区块链网络。最后我们定义了一个路由处理函数/food/:id用于处理前端发送的食品信息查询请求。在该函数中我们根据请求中的食品ID调用智能合约的getFoodInfo方法获取食品信息并将结果以JSON格式返回给前端。 配置环境变量 在项目根目录下创建一个名为.env的文件并添加以下环境变量
BLOCKCHAIN_PROVIDERYOUR_BLOCKCHAIN_PROVIDER
CONTRACT_ADDRESSYOUR_CONTRACT_ADDRESS
CONTRACT_ABIYOUR_CONTRACT_ABI 将YOUR_BLOCKCHAIN_PROVIDER替换为你的区块链网络提供商地址例如本地开发环境的HTTP提供商地址YOUR_CONTRACT_ADDRESS替换为你的智能合约地址YOUR_CONTRACT_ABI替换为你的智能合约ABI的JSON字符串。 启动后端服务器 在项目根目录下执行以下命令启动后端服务器
node server.js 服务器将在指定的端口默认为3001上启动并等待前端发送请求。
现在我们已经完成了前后端的编写和配置。接下来我们需要将前端与后端进行整合并进行测试。
修改前端代码中的请求地址
在前端代码中我们需要将请求地址修改为后端服务器提供的地址。打开src/FoodTraceability.js文件找到发送请求的部分将请求地址修改为后端服务器的地址和端口。例如
// 修改请求地址为后端服务器的地址和端口
fetch(http://localhost:3001/food/${foodId}) .then(response response.json()) .then(data { // 处理后端返回的食品信息数据 console.log(data); // 更新UI等操作... }) .catch(error { console.error(Error fetching food info:, error); }); 确保将http://localhost:3001/food/${foodId}中的localhost:3001替换为你实际服务器的地址. 启动前端项目并测试 在前端项目根目录下执行以下命令启动前端项目
npm start 前端项目将在指定的端口上启动默认为3000。打开浏览器访问前端项目的地址并进行食品信息查询操作。如果一切正常你应该能够看到后端返回的食品信息并在前端界面上展示出来。
总结 通过本文的介绍我们实现了基于区块链的食品溯源系统的后端代码并与前端进行了整合。后端负责处理前端发送的请求调用智能合约获取食品溯源信息并将结果返回给前端。前后端的协同工作使得用户可以通过前端界面方便地查询食品的生产信息、流通信息等。