vue/配置axios(前后端数据连通/api接口的调用)

1.创建apis文件

2.写入调用的api地址且暴露出去。

import httpInstance from '@/utils/http';

export  function getHomeNav() {
  return httpInstance({
    url: 'http://10.0.11.91:91/dailyreport/getdailyreportall',
  })
}

3.创建文件编写拦截器 

代码部分

//axios基础封装
import axios from 'axios';
import { ElMessage } from 'element-plus';

// 创建axios实例,可以发起请求获得响应的实例。
const httpInstance = axios.create({
  //baseURL: 'http://localhost:8080', // 请求的基础路径
  timeout: 5000 // 请求超时时间
});

// 请求拦截器
httpInstance.interceptors.request.use(
  config => {
    // 在发送请求之前做一些处理
    return config;
  }, e => Promise.reject(e)
    // 请求错误时做一些处理
);  
// 响应拦截器
httpInstance.interceptors.response.use(res => res.data, e => {
        if(e.response.status === 401){
            ElMessage.error('请先登录')
            //跳转登录页面
        }else{
            ElMessage({type:'error',message:'请重新登录'+e})
        }
            return Promise.reject(e)
        })
export default httpInstance;
//用于在其他位置调用

 4.写验证函数

import './assets/main.css'

import { createApp } from 'vue'
//路由工具
import router from './router'
// import ElementPlus from 'element-plus'
// import 'element-plus/dist/index.css'
import App from './App.vue'

//测试接口函数
// @ts-ignore
import {getHomeNav} from '@/apis/testAPI'


getHomeNav().then((res: any) => {
  console.log(res)
})


const app = createApp(App)
app.use(router)
// app.use(ElementPlus)
app.mount('#app')

5.打开服务器端添加一个注解允许进行跨域访问

@CrossOrigin

接口部分代码

package com.log.controller;

import com.log.entites.DailyReport;
import com.log.entites.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;

@RestController
@CrossOrigin
@RequestMapping("dailyreport")
public class Daily_reportController_Consumer {

    public static final String REST_URL_PREFIX = "http://127.0.0.1:9001";

    @Autowired//装配
    private RestTemplate restTemplate;//与提供者传递数据的工具

    @GetMapping("getdailyreportall")
    public Result getUserinfoall(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/getdailyreportall",Result.class);
    }


    @GetMapping("getdailyreportbyid")
    public Result getDailyReportByid(Integer id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/getdailyreportbyid?id="+id,Result.class);
    }

    @GetMapping("getdailyreportusid")
    public Result selectDailyReportidUsid(Integer id){
        System.out.println(id);
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/getdailyreportusid?id="+id,Result.class);
    }

    @GetMapping("getdailyreportdate")
    public Result<ArrayList<DailyReport>> selectDailyReportDate(String date){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/getdailyreportdate?date="+date,Result.class);
    }

    @GetMapping("getdailyreportdateup")
    public Result<ArrayList<DailyReport>> selectDailyReportDateUp(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/getdailyreportdateup",Result.class);
    }

    @GetMapping("getdailyreportdatedown")
    public Result<ArrayList<DailyReport>> selectDailyReportDateDown(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/getdailyreportdatedown",Result.class);
    }
    @GetMapping("getdailyreportdatstatus")
    public Result<ArrayList<DailyReport>> selectDailyReportStatus(String status){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/getdailyreportdatstatus?status="+status,Result.class);
    }
    //添加
    @PostMapping("setdailyreport")
    public Result<DailyReport> insertDaolyReport(@RequestBody DailyReport dailyreport){

        return restTemplate.postForObject(REST_URL_PREFIX+"/dailyreport/setdailyreport",dailyreport,Result.class);
    }
    //修改
    @PostMapping("updailyreportbyid")
    public Result<DailyReport> updateDaolyReportByid(@RequestBody DailyReport dailyreport) {
        return restTemplate.postForObject(REST_URL_PREFIX + "/dailyreport/updailyreportbyid",dailyreport, Result.class);
    }

    @GetMapping("deletdailyreportbyid")
    public Result<DailyReport> deleteDaolyReport(Integer id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/deletdailyreportbyid?id="+id,Result.class);
    }

    @GetMapping("deletdailyreportall")
    public Result<DailyReport>deleteDaolyReportusAll(Integer id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dailyreport/deletdailyreportall?id="+id,Result.class);
    }
    @PostMapping("upevaluatio")
    public Result<DailyReport>updateDaolyReportevaluation(@RequestBody DailyReport dailyreport){
        return restTemplate.postForObject(REST_URL_PREFIX+"/dailyreport/upevaluatio",dailyreport,Result.class);
    }
}

6.启动服务测试

启动后端服务和前端服务访问网址,打开网页控制台出现数据库传来的数据。

api接口调用成功。

### 可行性分析 Vue3 是一种现代化的前端框架,专注于构建用户界面,而 ASP.NET Core API 提供了一种高效的方式来创建 RESTful Web 服务。两者结合可以很好地支持前后端分离的应用程序开发[^1]。 在前后端分离架构中,ASP.NET Core 负责处理业务逻辑、数据访问以及提供 API 接口,而 Vue3 则负责呈现 UI 并通过 HTTP 请求与后端通信。这种模式允许前端后端独立开发,从而提高团队协作效率并优化性能[^2]。 --- ### 方法概述 以下是使用 Vue3 和 ASP.NET Core API 进行前后端分离项目开发的主要方法: #### 1. 创建 ASP.NET Core API 可以通过 Visual Studio 或 .NET CLI 工具快速搭建一个 ASP.NET Core Web API 项目。此项目将作为后端服务,暴露一系列接口前端调用[^4]。 ```csharp // 示例:定义简单的控制器 [ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase { private static readonly string[] Summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild" }; [HttpGet(Name = "GetWeatherForecast")] public IEnumerable<WeatherForecast> Get() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summary = Summaries[Random.Shared.Next(Summaries.Length)] }) .ToArray(); } } ``` #### 2. 设置跨域资源共享 (CORS) 为了使 Vue 前端能够成功请求到 ASP.NET Core 后端数据,需配置 CORS 政策[^3]。 ```csharp builder.Services.AddCors(options => { options.AddPolicy("AllowAllOrigins", policy => policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); }); app.UseCors("AllowAllOrigins"); ``` #### 3. 使用 Vue3 开发前端 Vue3 提供了 Composition API 和更好的响应式模型,适合用来构建复杂的单页应用程序 (SPA)[^1]。可借助 Axios 库发起对后端 API 的异步请求。 ```javascript import axios from 'axios'; export default { data() { return { weatherData: null, }; }, async created() { try { const response = await axios.get('https://your-backend-url/api/weatherforecast'); this.weatherData = response.data; } catch (error) { console.error(error); } }, }; ``` #### 4. 部署与集成 完成开发后,分别部署前端静态文件至 Nginx/Apache 等服务器,而后端则可通过 IIS/Kestrel 发布运行。确保两者的域名或 IP 地址正确映射,并测试其连通性[^4]。 --- ### 注意事项 - **安全性**:始终验证输入参数并对敏感操作实施身份认证与授权机制。 - **状态管理**:对于复杂应用建议引入 Vuex 或 Pinia 实现全局状态同步。 - **错误处理**:设计统一异常捕获流程以便于调试定位问题所在。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值