dotnet core webapi +vue 搭建前后端完全分离web架构(一)
2017-12-13 22:48
1221 查看
架构
服务端采用dotnetcorewebapi前端采用:Vue+router+elementUI+axios
问题
使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问。前后端可能不在同个server上,即使前后端处在同个server上,由于前后端完全分离,前后端使用的端口号也可能是不一样的,所以必须解决跨域访问。
具体实现
服务端
服务端使用的dotnetcore+webapi架构,支持cors非常简单,只要引入Microsoft.AspNetCore.Cors组件,所有问题就迎刃而解了。具体实现如下:创建wepapi项目
lDotnetnewwebapi
l引入cors组件
dotnetaddpackageMicrosoft.AspNetCore.Cors--version2.0.1
l服务端目录结构
l添加cors服务
publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv) { if(env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } //添加cors服务 services.AddCors(options=> options.AddPolicy("CorsSample",p=>p.WithOrigins("http://localhost:5000") .AllowAnyMethod().AllowAnyHeader())); app.UseMvc(); }
l设定headeroriginal
publicvoidConfigureServices(IServiceCollectionservices)
{
services.AddMvc();
//配置Cors
app.UseCors("CorsSample");
}
l修改controller的get方法
namespacewebApiDemo1.Controllers
{
[Route("api/[controller]")]
publicclassValuesController:Controller
{
//GETapi/values
[HttpGet]
[EnableCors("CorsSample")]
publicIEnumerable<string>Get()
{
returnnewstring[]{DateTime.Now.ToString()};
}
}
}
l编译与运行webapi
dotnetrun
至此服务端的所有工作都已完成,测试
客户端
目录结构
搭建webpack下Vue+router+elementUI
如果不清楚如何搭建vue+router+elementUI,请自行度娘。引入axios组件
npminstallaxios创建单页组件UserInfo.vue
<template>
<divclass="userList">
<el-buttontype="primary"@click="handleClick">获取服务端时间</el-button>
<p>callfromserver:{{msg}}</p>
</div>
</template>
<script>
importaxiosfrom'axios';
exportdefault{
data(){
return{
msg:""
}
},
methods:{
handleClick(evt){
let_self=this;
axios.get('http://localhost:5000/api/Values')
.then(function(response){
//debugger;
console.log(response);
_self.msg=response.data;
})
.catch(function(error){
console.log(error);
});
}
}
}
</script>
<stylescoped>
.userList
{
padding-top:10px;
}
</style>
运行效果
npmrundev注意:response的original,这可是cors的关键所在
本文vue+elementUI+router参考了monster1935.github.io代码,再次感谢作者。
相关文章推荐
- dotnet core webapi +vue 搭建前后端完全分离web架构(一)
- dotnet core webapi +vue 搭建前后端完全分离web架构
- spring cloud+dotnet core搭建微服务架构:Api网关(三)
- spring cloud+.net core搭建微服务架构:Api网关(三)
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
- spring cloud+.net core搭建微服务架构:Api授权认证(六)
- ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
- ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
- 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之七 || API项目整体搭建 6.2 轻量级ORM
- 通过Swashbukle给DotNet Core Web API 增加自动文档功能
- 通过Swashbukle给DotNet Core Web API 增加自动文档功能
- 通过Swashbukle给DotNet Core Web API 增加自动文档功能
- spring cloud+.net core搭建微服务架构:Api授权认证(六)
- ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
- spring cloud+dotnet core搭建微服务架构:配置中心
- ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
- Asp.net Core WebApi--(1)环境搭建
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
- spring cloud+dotnet core搭建微服务架构
- 重温.NET下Assembly的加载过程 ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线