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

简介: 架构 服务端采用 dotnet core  webapi   前端采用: Vue + router +elementUI+axios            问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问。

架构

服务端采用 dotnet core  webapi

 

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

 

640?wx_fmt=png&wxfrom=5&wx_lazy=1

        

问题

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

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

 

具体实现

 

服务端

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

 

创建 wepapi项目

l  Dotnet new webapi

 640?wx_fmt=png

 

l  引入 cors组件

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

 

 640?wx_fmt=png

 

 

l  服务端目录结构

 640?wx_fmt=png

  

l  添加 cors服务

 

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

        {

            if (env.IsDevelopment())

            {

                app.UseDeveloperExceptionPage();

            }


             //添加cors 服务

            services.AddCors(options => 

                                     options.AddPolicy("CorsSample",p => p.WithOrigins("http://localhost:5000")

            .AllowAnyMethod().AllowAnyHeader()));


            app.UseMvc();

        }

 设定header original


public void ConfigureServices(IServiceCollection services)


        {


            services.AddMvc();


            //配置Cors

            app.UseCors("CorsSample");


        }

l  修改controller的 get 方法


namespace webApiDemo1.Controllers

{

    [Route("api/[controller]")]

    public class ValuesController : Controller

    {

        // GET api/values

        [HttpGet]

        [EnableCors("CorsSample")]

        public IEnumerable<string> Get()

        {

            return new string[] { DateTime.Now.ToString() };

        }


    }

}

l  编译与运行 webapi

 

dotnet run

 640?wx_fmt=png

 

 

 

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

 

 640?wx_fmt=png

 

 

客户端

目录结构

640?wx_fmt=png

 

 

搭建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

 

640?wx_fmt=png

  

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


原文发布时间:2018-6-19

原文作者:dotNET跨平台

本文来源掘金如需转载请紧急联系作者

 


相关文章
|
4月前
|
存储 数据挖掘 BI
2-5 倍性能提升,30% 成本降低,阿里云 SelectDB 存算分离架构助力波司登集团实现降本增效
波司登集团升级大数据架构,采用阿里云数据库 SelectDB 版,实现资源隔离与弹性扩缩容,查询性能提升 2-5 倍,总体成本降低 30% 以上,效率提升 30%,助力销售旺季高效运营。
333 9
|
2月前
|
存储 SQL 消息中间件
从 ClickHouse 到 StarRocks 存算分离: 携程 UBT 架构升级实践
查询性能实现从秒级到毫秒级的跨越式提升
|
8月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
747 69
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
691 4
|
存储 JavaScript 前端开发
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
146 1
|
JavaScript 前端开发 网络架构
如何使用Vue.js构建响应式Web应用
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
JavaScript 前端开发 开发者
前端开发趋势:从Web Components到Vue.js
【10月更文挑战第9天】前端开发趋势:从Web Components到Vue.js
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
751 0
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化

热门文章

最新文章