Check me out
Check that out
Submit
Reset
```
记得配置路由:
```javascript
// src/router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login.vue'
import Information from '@/components/Information.vue'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'Login',
component: Login
},
{
path: '/information',
name: 'Information',
component: Information
}
]
})
```
## 后端:提供 RESTful API
因为只有后端提供了接口,前端才能调用,所以现在要进行后端开发。RESTful 是现在很流行的 API 设计风格,所以我这里也实践了一下。下面是 controller 的代码,完整源码地址附在文末。
```java
@RestController
public class DemoController {
@RequestMapping(path = "/login", method = RequestMethod.POST)
@ResponseBody
public String login(@RequestParam String username,
@RequestParam String password) {
// 简单处理一下,实际开发中肯定是要用到数据库的
if (username.equals("123") && password.equals("123")) {
return "{\"code\":\"0000\", \"message\":\"success\"}";
} else {
return "{\"code\":\"1111\", \"message\":\"failed\"}";
}
}
}
```
后端的 API 现在有了,就差前端调用了。但是没这么简单,接下来就要解决我前面提到的问题。
# 实现 CORS
在这个 Demo 中前端占用的端口是8080,后端是 8088。这就存在跨域的问题,如果不解决的话后端就没法接收前端的请求。
我参考了[这个例子](https://github.com/boylegu/SpringBoot-vue/blob/master/src/main/java/com/boylegu/springboot_vue/config/CORSConfig.java),通过配置 Spring MVC 实现了 CORS:
```java
@Configuration
public class CORSConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins(ALL)
.allowedMethods(ALL)
.allowedHeaders(ALL)
.allowCredentials(true);
}
}
```
后端配置好了还不行,前端也要有一些配置,要用 axios 顺利地发送请求并保证后端能接收到,需要对请求参数做处理。我参考[这个回答](https://segmentfault.com/q/1010000008292792)用 qs 库对请求参数做了处理:
```javascript
qs.stringify({
'username': this.form.username,
'password': this.form.password
})
```
现在只需完善前端调用后端 API 的代码:
```html
// Login.vue
```
至此,终于实现了前后端的分离,并且保证前后端能够顺利交互。