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%,助力销售旺季高效运营。
303 9
|
2月前
|
存储 SQL 消息中间件
从 ClickHouse 到 StarRocks 存算分离: 携程 UBT 架构升级实践
查询性能实现从秒级到毫秒级的跨越式提升
|
8月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
704 69
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
9月前
|
存储 消息中间件 缓存
支持百万人超大群聊的Web端IM架构设计与实践
本文将回顾实现一个支持百万人超大群聊的Web端IM架构时遇到的技术挑战和解决思路,内容包括:通信方案选型、消息存储、消息有序性、消息可靠性、未读数统计。希望能带给你启发。
303 0
支持百万人超大群聊的Web端IM架构设计与实践
|
12月前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
255 2
Web应用上云经典架构实践教学
|
12月前
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
287 1
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。