使用axios进行前后端数据传输

最近在和朋友合作写一个新的项目,前后端进行了分离,既然是分离的,肯定需要交互,今天这篇文章详细介绍一下数据交互的一种常见方式:使用axios,希望对大家有所帮助。

前端:以LoginPage.vue登录页面为例,后端,使用python的djanjo框架

首先,需要在前端进行一些基本的配置,保证数据能够传过去,

在vite,config.js中添加如下配置:

1)

 configWebpack: {
    devServer: {
      proxy: {
        '/api': {
          target: 'http://192.168.234.22:8000/',//这里填入你要请求的接口的前缀
          ws:true,//代理websocked
          changeOrigin:true,//虚拟的站点需要更管origin
          secure: true,                   //是否https接口
          pathRewrite:{
              '^/api':''//重写路径
          }
        }
      }
    }
  }

这里,我最初在配置的时候遇到了一些问题,比较典型的是ECMAScript 模块(ES module)的作用域中使用了 module 关键字,但是该关键字在 ES 模块中并不被支持的问题,上面是修改之后的代码,改之前的代码如下所示:

module.exports = {
    devServer: {
        proxy: {
            '/api': {
                target: 'http://127.0.0.1:8000/',//这里填入你要请求的接口的前缀
                ws:true,//代理websocked
                changeOrigin:true,//虚拟的站点需要更管origin
                secure: true,                   //是否https接口
                pathRewrite:{
                    '^/api':''//重写路径
                }
            }
        }
    }

分析其原因:我们发现,在 ECMAScript 模块中,没有 module 关键字,而是使用 exportimport 来导出和导入模块。

因为我在在一个 Vue 单文件组件中的 <script> 标签中尝试使用了 module 关键字,而这是不正确的。Vue 单文件组件中的 <script> 标签应该使用 export default {...} 导出组件,或者使用 import 导入其他模块。

这种方法是可以解决问题的,我尝试的是另外一种,如同代码1)

然后,接下来是前端向后端传输数据的相关配置,目的是点击登录按钮的时候,让它执行登录操作,然后跳转到首页。

const doLogin = () => {
  // // router.push('/layout')
  // console.log('登录成功,页面即将跳转到首页')
  // 发送 GET 请求
axios({
	url:'http://192.168.234.22:8000/query/',
	method:'GET',
	data:{
		name:form.value.name,
		pswd:form.value.password,
	},
	headers:{
		"Access-Control-Allow-Origin":"*",
		Accept:"*/*"
	}
})
  .then(response => {
    console.log('Response:', response.data);
    console.log('请求成功!');
    router.push('/layout'); // 在请求成功后跳转页面
  })
  .catch(error => {
    console.error('Error:', error);
  })

}

以上内容配置好之后,前端就可以向后端传送数据了。

接下来,看看后端的逻辑:

def query(request):
    query_set = userInfo.objects.all()  # 查询所有数据相当于seleclt *
    for item in query_set:
        print(item.name, item.pswd)
    name = request.GET.get("name")
    pswd = request.GET.get("pswd")
    query_set = userInfo.objects.filter(name=name)  # 查询id=1的数据
    query_set = userInfo.objects.filter(pswd=pswd).first()  # 查询第一条数据
    return HttpResponse("1")请求成功后台为什么会返回1

在登录页面,需要用户输入账号和密码,然后点击登录按钮,服务器收到了前端传过来的数据,进行查询,返回一个对象,因为后端虽然执行了相关的操作,但没有明确返回一个 HttpResponse 对象,因此Django默认会返回一个空响应体,并且状态码为 200

以下是响应结果。

好啦,本期文章就到这里,下期见~

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答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请求和处理响应,实现前后端之间的数据传输交互

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学英语的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值