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月前
|
JavaScript
VUE3(三十七)Vue3.2子父组件交互(vue、ts不分离)~
VUE3(三十七)Vue3.2子父组件交互(vue、ts不分离)~
47 0
|
6月前
|
存储 分布式计算 并行计算
计算存储分离架构
计算存储分离架构
|
3月前
|
存储 Cloud Native 数据处理
Flink 2.0 状态管理存算分离架构演进
本文整理自阿里云智能 Flink 存储引擎团队负责人梅源在 Flink Forward Asia 2023 的分享,梅源结合阿里内部的实践,分享了状态管理的演进和 Flink 2.0 存算分离架构的选型。
807 0
Flink 2.0 状态管理存算分离架构演进
|
5天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
1月前
|
JavaScript 前端开发 API
Vue.js:构建现代化Web应用的灵活选择
Vue.js:构建现代化Web应用的灵活选择
37 0
|
1月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
95 1
|
2月前
|
Web App开发 JavaScript 前端开发
构建现代Web应用:Vue.js与Node.js的完美结合
在当今快速发展的Web技术领域,选择合适的技术栈对于开发高效、响应迅速的现代Web应用至关重要。本文深入探讨了Vue.js和Node.js结合使用的优势,以及如何利用这两种技术构建一个完整的前后端分离的Web应用。不同于传统的摘要,我们将通过一个实际的项目示例,展示从搭建项目架构到实现具体功能的整个过程,着重介绍了Vue.js在构建用户友好的界面方面的能力,以及Node.js在处理服务器端逻辑和数据库交互中的高效性。通过本文,读者不仅能够理解Vue.js与Node.js各自的特点,还能学习到如何将这两种技术融合应用,以提升Web应用的开发效率和用户体验。
|
3月前
|
数据可视化 数据挖掘 数据管理
架构之争:数用一体VS数用分离,谁才是永远滴神
架构之争:数用一体VS数用分离,谁才是永远滴神
|
4月前
|
前端开发 Java BI
基于Springboot+Vue开发前后端端分离农产品进销存系统
基于Springboot+Vue开发前后端端分离农产品进销存系统
|
4月前
|
JavaScript 前端开发 数据库
VUE3(三十八)Vue3.2子父组件交互(vue、ts分离)
VUE3(三十八)Vue3.2子父组件交互(vue、ts分离)
77 0