前后端分离,前端调用后端接口

本文详细介绍了如何在Spring Boot后端与Vue.js前端之间实现数据交互,并配置跨域解决策略,包括后端控制器设置及前端代理配置。

参考https://blog.csdn.net/Mr_carry/article/details/100537047?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

后端

package com.pp.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller
public class TestController {

    // 欢迎页面
    @RequestMapping("/test2")
    @ResponseBody
    public Map test() {

       Map<String,String> map = new HashMap<String, String>();
       map.put("测试1","123");
       map.put("测试2","456");

       return map;
    }
}

允许跨域配置类

package com.pp.config;


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class CorsConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addCorsMappings(CorsRegistry registry) {
        System.out.println("----------------------");
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                .maxAge(3600);
    }
}

前端页面

在项目根目录创建一个 vue.config.js文件,可进行baseUrl配置,接口代理以及其他配置

(vue-cli3没有bulid和config文件夹)

module.exports = {
    devServer: {
        proxy: {
            // 配置跨域
            '/api': { //代理接口前缀为/api的请求
                target: 'http://localhost:7007', //需要代理到的目标地址
                ws: true,
                changOrigin: true, //是否跨域
                pathRewrite: {
                    '^/api': '' //重写路径
                }
            }
        }
    }
};

 

https://blog.csdn.net/lihefei_coder/article/details/97630544

https://blog.csdn.net/weixin_38578293/article/details/84823027

<template>
  <div class="info">
    这是从本地后端项目获取的json数据:
    <button v-on:click="postInfo">获取数据</button>
    <br>
    {{this.info}}
  </div>
</template>

<script>
  export default {
    name: 'App',
    data() {
      return {
        info: {}
      }
    },
    methods: {
      postInfo: function () {
        this.$http.post('/api/test2')
                .then(response => (this.info = response))
                .catch(function (error) { // 请求失败处理
                  // eslint-disable-next-line no-console
                  console.log(error);
                });
      }
    }
  }
</script>
<style>
  .info{
    width:100%;
    height: 100%;
  }
</style>

在main.js中:

Vue.prototype.$http = axios

所以是

 this.$http.post('/api/test2')

调用结果:

<think>好的,我现在需要回答用户关于在云平台前后端分离项目中,前端如何调用后端接口访问数据库的问题。首先,用户希望了解具体的实现方法和步骤。我需要结合提供的引用内容,确保回答准确且符合用户的需求。 首先,用户的问题涉及云平台、前后端分离前端调用后端接口以及数据库访问。根据引用[3],云平台承载系统是架构演进的一部分,而引用[4]提到使用Apifox等工具进行API调试,这可能与联调方法有关。引用[1]和[2]讨论了前后端分离的基本原理和登录状态管理,这里可能需要涉及API通信和认证机制。 我应该分步骤说明,从接口定义开始,再到前端调用后端处理、数据库访问,最后是联调测试。每一步需要引用相关文献支持。例如,接口定义可以参考引用[1]中的HTTP方法和数据格式,认证机制可以参考引用[2]的session或token。数据库访问部分可能需要引用[5]关于数据库拆分的内容,但用户的问题更关注基础实现,所以可能不需要深入分布式部分。 需要注意前后端分离的优势,如引用[1]提到的通信协议和JSON数据格式。同时,联调阶段引用[4]中的工具如Apifox能帮助自动校验数据结构,这也是关键点。最后,确保回答结构清晰,步骤明确,并自然添加引用标识。还要生成相关问题,可能涉及安全性、性能优化、错误处理等。</think>### 云平台前后端分离项目中前端调用后端接口的实现方法 在云平台的前后端分离架构中,前端通过定义清晰的API与后端交互,后端负责处理业务逻辑并访问数据库。以下是具体实现步骤: #### 1. **接口定义与规范** - **RESTful API设计**:后端定义标准接口,使用HTTP方法(GET/POST/PUT/DELETE)对应数据库的增删改查操作。例如: - `GET /api/users` 获取用户列表 - `POST /api/login` 用户登录[^1] - **数据格式**:前后端约定使用JSON格式传输数据,如登录请求: ```json {"username": "admin", "password": "123456"} ``` #### 2. **前端调用接口** - **HTTP请求库**:前端使用`axios`或`fetch`发起请求,示例代码: ```javascript axios.post('https://api.example.com/login', { username, password }) .then(response => { localStorage.setItem('token', response.data.token); // 存储认证凭证[^2] }); ``` - **跨域处理**:通过反向代理(如Nginx)或后端配置CORS头部解决跨域问题[^3]。 #### 3. **后端处理与数据库访问** - **路由层**:接收请求并解析参数,例如使用Spring Boot的`@RestController`: ```java @PostMapping("/login") public ResponseEntity<?> login(@RequestBody User user) { // 调用Service层验证用户 } ``` - **数据库操作**:通过ORM框架(如MyBatis、Hibernate)执行SQL: ```java @Select("SELECT * FROM users WHERE username = #{username}") User findByUsername(String username); ``` - **连接池优化**:云平台中使用数据库连接池(如HikariCP)提升并发性能[^5]。 #### 4. **认证与安全性** - **Token机制**:后端生成JWT令牌返回给前端,后续请求通过`Authorization: Bearer <token>`头部传递[^2]。 - **加密传输**:使用HTTPS加密通信,敏感数据(如密码)需加盐哈希存储[^4]。 #### 5. **联调与测试** - **接口文档工具**:使用Swagger或Apifox生成可视化文档,支持自动校验响应数据结构[^4]。 - **Mock数据**:前端开发阶段可通过Mock.js模拟接口返回,降低对后端的依赖。 --- ### 技术架构示意图 ``` 前端(React/Vue) → 调用API(HTTPS+JSON) → 云服务器(Nginx负载均衡) → 后端微服务(Spring Cloud) → 数据库集群(MySQL分库分表[^3]) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值