码迷,mamicode.com
首页 > Windows程序 > 详细

dotnet core webapi +vue 搭建前后端完全分离web架构

时间:2017-12-14 03:55:15      阅读:472      评论:0      收藏:0      [点我收藏+]

标签:ges   ble   sem   eve   get   lis   val   工作   dev   

 

架构

服务端采用 dotnet core  webapi

 

前端采用: Vue + router +elementUI+axios

 

技术分享图片

 

                         

 

问题

使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问。前后端可能不在同个server上,即使前后端处在同个server上,由于前后端完全分离,

前后端使用的端口号也可能是不一样的,所以必须解决跨域访问。

 

具体实现

 

服务端

服务端使用的dotnetcore +webapi架构,支持cors非常简单,只要引入Microsoft.AspNetCore.Cors 组件,所有问题就迎刃而解了。具体实现如下:

 

创建 wepapi项目

l  Dotnet new webapi

 技术分享图片

 

l  引入 cors组件

dotnet add package Microsoft.AspNetCore.Cors --version 2.0.1

 

 技术分享图片

 

 

l  服务端目录结构

 技术分享图片

 

 

 

l  添加 cors服务

 

public void ConfigureServices(IServiceCollection services)

        {

            services.AddMvc();

            //添加cors 服务

            services.AddCors();

        }

 

l  设定header original

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            //设定header original
             app.UseCors(builder =>
                           builder.WithOrigins("http://localhost:8081")
                           );

            app.UseMvc();
        }

 

l  修改controller的 get 方法

namespace webApiDemo1.Controllers
{
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        // GET api/values
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { DateTime.Now.ToString() };
        }

    }
}

 

l  编译与运行 webapi

 

dotnet run

 技术分享图片

 

 

 

至此 服务端的所有工作都已完成,测试

 

 技术分享图片

 

 

客户端

目录结构

技术分享图片

 

 

搭建webpack 下Vue + router +elementUI

如果不清楚如何搭建 vue+router+elementUI ,请自行度娘。

引入axios 组件

npm install axios

 

创建单页组件UserInfo.vue

<template>

  <div class="userList">

       <el-button type="primary"  @click="handleClick">获取服务端时间</el-button>

       <p>call from server:{{msg}}</p>

  </div>

</template>

 

 

<script>

  import axios from axios;

  export default{

    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>

 

<style scoped>

.userList

{

   padding-top: 10px;

}

</style>

 

 

运行效果

npm run dev

 

技术分享图片

 

 

 

注意:response的 original ,这可是cors的关键所在

 

 

本文vue+elementUI+router 参考了monster1935.github.io 代码,再次感谢作者。

dotnet core webapi +vue 搭建前后端完全分离web架构

标签:ges   ble   sem   eve   get   lis   val   工作   dev   

原文地址:http://www.cnblogs.com/hbb0b0/p/8035241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!