Vue3 结合 .NetCore WebApi 前后端分离跨域请求简易实例

1、本地安装Vue3环境

参考:VUE3中文文档-快速上手

注意:初始安装vue时,需要安装router,否则后续也要安装

2、安装axios组件

比如:npm install axios@latest 或 pnpm install axios@latest

3、设置跨域请求代理

打开vue3项目根目录的 vite.config.js文件,插入跨域请求设置

这样实现的效果,假设你的前端域名是 http://localhost:8088

那么你访问 http://localhost:8088/api/hello 等于访问 http://localhost:5153/api/hello

javascript 复制代码
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'

export default defineConfig({
  plugins: [
    vue(),
    vueDevTools(),
  ],
  //跨越请求代理设置
  server:{
    proxy: {
        '/api': {
            target: 'http://localhost:5153',
            changeOrigin: true,
        }
},
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})

4、后端.Net Core Webapi 接口返回JSON

cs 复制代码
using Microsoft.AspNetCore.Mvc;
using MyProj.Models;
using System.Text.Json;
namespace MyProj.Controllers
{

    [Route("api/login")]
    [ApiController]
    public class LoginController : ControllerBase
    {
        [HttpGet]
        public JsonResult Get(string pms)
        {
            //自定义Model,含2个属性。先初始化
            Rmessage r1 = new Rmessage("hello", "no data");

            //根据接口请求的参数值判断处理
            if(pms=="001")
            {
                r1.message = "right";
            }
            else
            {
                r1.message = "wrong";
            }
            //把最终的Rmessage实例JSON化返回
            return new JsonResult(r1);
        }

   
    }
}

5、Vue3前端发送请求,接收返回值

javascript 复制代码
import { ref } from 'vue'
import axios from 'axios'

let message = ref('please impress the button')

//按钮单击函数
function getApiData() {
        //axios触发GET请求,传递pms参数
        axios.get('api/login',{
          params: {
            pms:'001'
          }
        })
           .then(response => {
               //因为返回的是JSON,所以可以response.data直接读取message的值
                message.value = response.data.message
            })
           .catch(error => {
                console.log(error)
           })
}
相关推荐
共享家95276 小时前
搭建 AI 聊天机器人:”我的人生我做主“
前端·javascript·css·python·pycharm·html·状态模式
Halo_tjn7 小时前
基于封装的专项 知识点
java·前端·python·算法
有来技术8 小时前
Spring Boot 4 + Vue3 企业级多租户 SaaS:从共享 Schema 架构到商业化套餐设计
java·vue.js·spring boot·后端
东东5169 小时前
学院个人信息管理系统 (springboot+vue)
vue.js·spring boot·后端·个人开发·毕设
m0_7482299910 小时前
Vue2 vs Vue3:核心差异全解析
前端·javascript·vue.js
C澒10 小时前
前端监控系统的最佳实践
前端·安全·运维开发
xiaoxue..10 小时前
React 手写实现的 KeepAlive 组件
前端·javascript·react.js·面试
hhy_smile10 小时前
Class in Python
java·前端·python
小邓吖11 小时前
自己做了一个工具网站
前端·分布式·后端·中间件·架构·golang
南风知我意95711 小时前
【前端面试2】基础面试(杂项)
前端·面试·职场和发展