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)
           })
}
相关推荐
霉运全滚蛋好运围着转19 分钟前
启动 Taro 4 项目报错:Error: The specified module could not be found.
前端
cxxcode22 分钟前
前端模块化发展
前端
不务正业的前端学徒26 分钟前
docker+nginx部署
前端
不务正业的前端学徒32 分钟前
webpack/vite配置
前端
hhcccchh1 小时前
学习vue第八天 Vue3 模板语法和内置指令 - 简单入门
前端·vue.js·学习
yyf198905251 小时前
Vue 框架相关中文文献
前端·javascript·vue.js
粥里有勺糖1 小时前
开发一个美观的 VitePress 图片预览插件
前端·vue.js·vitepress
陟上青云1 小时前
一篇文章带你搞懂原型和原型链
前端
我的写法有点潮1 小时前
推荐几个国外比较流行的UI库(上)
前端·javascript·css
鹏多多1 小时前
jsx/tsx使用cssModule和typescript-plugin-css-modules
前端·vue.js·react.js