基于Express框架的前后端通信(GET/POST)

  当服务器(后端)搭建完毕后,接下来需要做的就是客户的浏览器(前端)与服务器的通信服务了。在node.js中前端提交信息给后端主要依靠GET/POST请求,现在基于Express框架来实现以下功能:在前端的页面上将个人的名称信息提交给后端,后端将收到的信息以JSON格式回传到前端页面。

GET请求的实现:

  首先要提供后端服务器与前端的页面。将两个文件放在一个根目录下:
在这里插入图片描述
  首先做好web页面。在bom.html文件中做一个简单的文本输入框与提交按钮,代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>bom_app</title>
<style type="text/css">
	input{
		margin: 10px;/*文本框之间适当增加距离*/
	}	
</style>
</head>

<body>
	<form action="http://127.0.0.1:8888/process_get" method="GET"> /*数据要传
	给服务器,IP地址为127.0.0.0.1,端口为8888,处理该数据的URL为process_get,方式为
	GET*/
		Firstname:<input type="text" name="first_name">
		<br>
		Lastname:<input type="text" name="last_name">
		<input type="submit" value="Submit">
	</form>
</body>
</html>

  以上代码值得一提的是,用来与后端通信的标签只有form中的属性action,method与name,其余成分仅是为了构建页面;其中action属性表明了数据传递指向的具体路径;method属性表明了传递的方式;name属性表明了后端调用该数据变量所使用的变量名称。
  app.js中的代码如下:

var express = require('express');
var app = express();

app.get('/bom', function (req, res) {
   res.sendFile( __dirname + "/" + "bom.html" );
});// 显示html页面
app.get('/process_get', function (req, res) {
   // 将输入的值以JSON格式输出
   var response = {
       "first_name":req.query.first_name,
       "last_name":req.query.last_name,
   };
   console.log(response);
   res.end(JSON.stringify(response));
})

var server = app.listen(8888, function () {
   var host = server.address().address
   var port = server.address().port
  //  服务器IP地址为127.0.0.1 端口为8888
   console.log( "server is running"+host+port);
 });

  GET请求方法,它的请求是直接嵌入到URL路径中的。从bom.html中的代码可知,前端数据的请求就是process_get。因此后端对process_get请求做响应就可以了。
  服务器启动了嗷:
在这里插入图片描述  找个浏览器打开,在地址栏中输入127.0.01:8888/bom,登录页面,效果如下图所示:

在这里插入图片描述  在输入栏输入信息,随后单击提交按钮。会发现页面刷新,并回传显示自己的输入信息。
在这里插入图片描述

POST请求的实现:

  首先从html页面做起。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>bom_app</title>
<style type="text/css">
	input{
		margin: 10px;
	}	
</style>
</head>

<body>
	<form action="http://127.0.0.1:8888/process_post" method="POST"> 
		Firstname:<input type="text" name="first_name">
		<br>
		Lastname:<input type="text" name="last_name">
		<input type="submit" value="Submit">
	</form>
</body>
</html>

  和之前的html代码相比修改了两处:1.method从GET改为POST 2.action中的URL改成了process_post,方便区分。
  post请求通常会发送一个表单,或者JSON,它作为request的body发送,但是node.js的request对象是无法解析body内的内容的。为了解决这个问题,需要增加一个中间件(middleware)叫body-parser。
  显然body-parser这个插件需要用npm安装和管理。安装此插件的命令为:
  npm install body-parser --save
  安装完毕之后就可以用require方式引入程序内部了。
  js文件内部程序如下:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
 
// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({ extended: false });
 
app.get('/bom', function (req, res) {
   res.sendFile( __dirname + "/" + "bom.html" );
});// 显示html页面
app.post('/process_post', urlencodedParser, function (req, res) {
   // 将输入的值以JSON格式输出
   var response = {
       "first_name":req.body.first_name,
       "last_name":req.body.last_name,
   };
   console.log(response);
   res.end(JSON.stringify(response));
});

var server = app.listen(8888, function () {
   var host = server.address().address
   var port = server.address().port
  //  服务器IP地址为127.0.0.1 端口为8888
   console.log( "server is running"+host+port);
});

  由以上代码可见,POST与GET主要区别在于响应函数不同。POST使用app.get()构建服务,GET使用app.get()构建服务;POST由于报文内容的特殊性,需要加载额外的中间件来解析request中的内容。
  启动服务器后在浏览器地址栏输入127.0.0.1:8888/bom显示页面。
在这里插入图片描述
  输入数据后单击提交按钮,可查看输入数据。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 是的,Axios是一个基于Promise的HTTP客户端,可以用于在浏览器和Node.js中发送HTTP请求。因此,Axios可以在前端与后端进行交互,实现数据的请求和响应。 在Vue中,可以使用Axios来发送异步请求,从后端获取数据。 首先,需要在Vue项目中安装Axios: ``` npm install axios --save ``` 然后,在需要发送请求的Vue组件中,可以使用Axios来发送请求并处理响应。例如: ``` <template> <div> <ul> <li v-for="item in items">{{ item }}</li> </ul> </div> </template> <script> import axios from 'axios'; export default { data() { return { items: [] }; }, mounted() { axios.get('/api/items') .then(response => { this.items = response.data; }) .catch(error => { console.log(error); }); } }; </script> ``` 在上面的例子中,当Vue组件被挂载到页面上时,使用Axios发送GET请求到后端的/api/items接口,获取数据并更新Vue组件的items数据。如果请求出错,会在控制台输出错误信息。 Axios支持GET、POST、PUT、DELETE等HTTP请求方法,也支持设置请求头、请求体、响应拦截等功能,可以根据实际需求进行使用。 ### 回答2: Axios 是一个用于浏览器和 Node.js 的基于 Promise 的 HTTP 客户端,可以用于前后端之间的交互。它支持在浏览器中发送和接收 HTTP 请求,并以常见的数据格式(如 JSON、表单等)与后端进行通信。 Axios 提供了一组简洁而强大的 API,使得在前后端之间进行数据传输变得更加容易。我们可以通过使用 Axios 来发送 GET、POST、PUT、DELETE 等类型的请求,并处理后端返回的响应。 在前端部分,我们可以通过引入 Axios 库来使用它的功能。我们可以从浏览器中向后端发送请求,例如获取数据或提交表单等,并处理后端返回的数据。Axios 提供了一些方法来设置请求的参数、头部、拦截器、超时等,使得请求更加灵活和可控。 在后端部分,我们可以使用 Express 等后端框架来接收来自前端的请求,并使用 Axios 来向其他后端服务器发送请求。这样就可以实现前后端之间的交互。在后端服务器之间的通信中,我们可以使用 Axios 发送请求并获取其他服务器的响应,以便在后续的处理中使用。 总而言之,Axios 是一个强大的前后端交互工具,它可以帮助我们在浏览器和 Node.js 中实现前后端之间的数据传输和交互。无论是在前端向后端发送请求,还是在后端向其他后端服务器发送请求,Axios 都可以起到重要的作用。 ### 回答3: Axios是一个流行的HTTP客户端库,可以用于在前端和后端之间进行交互。它可以用于发送HTTP请求并处理响应,从而实现前后端之间的数据传输和交互。 在前端开发中,Axios通常用于从前端发送HTTP请求到后端API,并获取API返回的数据。它支持多种请求方式,如GET、POST、PUT、DELETE等。通过Axios,前端可以向后端发送请求参数和数据,并处理后端的响应结果。Axios还提供了拦截器机制,可以在请求和响应发送和接收之前进行预处理或处理后续的错误。 在后端开发中,Axios也可以用于与其他后端系统进行通信。后端可以使用Axios发送HTTP请求到其他后端API,并获取其他后端API返回的数据。这种情况下,后端可以充当前端的角色,使用Axios与其他后端系统进行数据传输和交互。 综上所述,Axios能够进行前后端交互。无论是在前端还是后端,我们都可以使用Axios发送HTTP请求和处理响应,实现前后端之间的数据传输和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值