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

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

架构

服务端采用 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 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

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

客户端

目录结构

搭建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的关键所在

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

原文作者:dotNET跨平台

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

原文地址:https://www.cnblogs.com/dragon2017/p/9404334.html

时间: 2024-10-01 02:30:22

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

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

架构 服务端采用 dotnet core  webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可能不在同个server上,即使前后端处在同个server上,由于前后端完全分离, 前后端使用的端口号也可能是不一样的,所以必须解决跨域访问. 具体实现 服务端 服务端使用的dotnetcore +webapi架构,支持cors非常简单,只要引入Microsoft.AspNetCore.Cors 组件

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

前言 最近几年前后端分离架构大行其道,而且各种框架也是层出不穷.本文通过dotnetcore +vue 来介绍 前后端分离架构实战. 涉及的技术栈 服务端技术 mysql 本项目使用mysql 作为持久化层 orm dapper 短小精悍,被称为orm中的瑞士军刀.作者之前使用EF 比较多,总感觉 EF 对一些复杂查询需要原生sql支持的不是那么好,EF 生成sql 不好控制,涉及对性能要求比较高的地方,优化起来不够理想.作者在最近的几个项目中接触到dapper,它对原生sql查询支持的相当给力

关于使用vue搭建前后端分离的项目,部署过程遇到的问题

1.首先应该有三个端口号:app前端.网页前端.后台接口  后台接口有很多,但是会映射到zuul上,保证他的端口号是对外开放的,其他不被占用就行 2.pc前端访问后台路径 他的baseUrl是每一次请求的基础路径,需要写服务器后台对外开放的ip和端口号,tomcat部署前端服务也得需要另一个端口号 3.然后发现他的静态资源都访问不到,可以看我的另一篇博客  https://www.cnblogs.com/vv-lilu/p/11106894.html 4.使用vue-lic3搭建的手机端框架,静

node+mysql+vue 搭建前后端分离基础框架

话不多说直接上 1.安装node,通过express.生成node项目.搭建链接 http://www.expressjs.com.cn/starter/generator.html: 2安装vue 前端项目. 3.配置vue 跨域问题,找到vue里面config里的index文件.配置proxyTable 原文地址:https://www.cnblogs.com/chen527/p/11442588.html

基于Spring Boot架构的前后端完全分离项目API路径问题

最近的一个项目采用前后端完全分离的架构,前端组件:vue + vue-router + vuex + element-ui + axios,后端组件:Spring Boot + MyBatis.之所以这样做是为了考虑后端水平扩容的便利性,在部署的时候完全可以将前后端彼此独立部署,前端部署可以直接使用诸如Nginx这样的高性能Web服务器. 前端需要知道它所访问的后端服务器IP地址才能访问到数据,但是如果将IP地址硬编码在前端代码中的话,在部署的时候会存在一个问题:当服务器端IP地址变化之后必须重

使用Vue+JFinal框架搭建前后端分离系统

前后端分离作为Web开发的一种方式,现在应用越来越广泛.前端一般比较流行Vue.js框架,后端框架比较多,网上有很多Vue+SpringMVC前后端分离的demo,但是Vue+JFinal框架貌似没有搜到,本文基于Vue.js和JFinal框架,给出了搭建了一个前后端分离项目的简单例子. 第一步:maven搭建后端JFinal部分 1.用maven新建web项目,项目名vue-jfinal 2.添加JFinal框架和jetty容器等依赖 <dependency> <groupId>

前后端完全分离的思考

网站开发历程 1.杂合模式 早期的asp开发网站时期大多是如此,一个asp文件混合业务处理,页面显示,js动态交互:完全杂合在一起: 一个请求对应一个asp文件,业务逻辑解析,动态输出html内容. 后期的php.早期的jsp也是如此模式: 2.webform模式 这个是微软asp.net时期的一个方式,本质上是封装html为服务器控件,动态生成html及相关提交和状态保持: 前后端分离,事件触发模式: 出发点是好的,但是这个模式问题太多. 简单的问题复杂化,导致大家学习成本增加,要单独取学习下

利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有2个问题不可避免:第一是前端调用后台接口时的跨域问题(因为前后端分开部署):第二是前端脱离后台服务后无法独立运行.本文总结最近一个项目的工作经验,介绍利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境的实践过程,希望能对你有所帮助. 注:

gin+vue的前后端分离开源项目

该项目是gin+vue的前后端分离项目,使用gorm访问MySQL,其中vue前端是使用vue-element-admin框架简单实现的: go后台使用jwt,对API接口进行权限控制.此外,Web页面在token过期后的半个小时内,用户再次操作会自动刷新token: 项目很小,适合gin新手学习!(后续有时间会补上相关教程) GitHub地址:https://github.com/Bingjian-Zhu/gin-vue 一.运行go后台项目 (1)把项目clone到GOPATH/src目录下