博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dotnet core webapi +vue 搭建前后端完全分离web架构(一)
阅读量:5141 次
发布时间:2019-06-13

本文共 2084 字,大约阅读时间需要 6 分钟。

摘要: 架构 服务端采用 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跨平台

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

转载于:https://www.cnblogs.com/dragon2017/p/9404334.html

你可能感兴趣的文章
使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
查看>>
PC站跳转M站的方法
查看>>
wow 各职业体验(pvp)
查看>>
Streaming的receiver模式
查看>>
[转载]一个人的失败,99%失败于“脾气”
查看>>
【Nowcoder】玩游戏
查看>>
过滤器(Filter)
查看>>
字符串的操作
查看>>
性能优化之Java(Android)代码优化
查看>>
springMVC相关—文件上传
查看>>
由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
查看>>
uva 1416 Warfare And Logistics
查看>>
欲则不达
查看>>
盒子游戏
查看>>
OpenJudgeP1.10.08:病人排队__(刷题)_水题
查看>>
观察者模式
查看>>
Hadoop分布式文件系统中架构和设计要点汇总
查看>>
cout和printf
查看>>
UVa 10088 - Trees on My Island (pick定理)
查看>>
#C++PrimerPlus# Chapter11_Exersice4_mytimeV4
查看>>