您的位置:首页 > 产品设计 > UI/UE

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代码,再次感谢作者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐