位置: IT常识 - 正文

VUE3.0+Antdv+Asp.net WebApi开发学生信息管理系统(二)

编辑:rootadmin
在B/S系统开发中,前后端分离开发设计已成为一种标准,而VUE作为前端三大主流框架之一,越来越受到大家的青睐,Antdv是Antd在Vue中的实现。本系列文章主要通过Antdv和Asp.net WebApi开发学生信息管理系统,简述前后端分离开发的主要相关内容,仅供学习分享使用,如有不足之处,还请指... ...

推荐整理分享VUE3.0+Antdv+Asp.net WebApi开发学生信息管理系统(二),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在B/S系统开发中,前后端分离开发设计已成为一种标准,而VUE作为前端三大主流框架之一,越来越受到大家的青睐,Antdv是Antd在Vue中的实现。本系列文章主要通过Antdv和Asp.net WebApi开发学生信息管理系统,简述前后端分离开发的主要相关内容,仅供学习分享使用,如有不足之处,还请指正。

在本示例项目中,主要包含两大部分:1.前端web项目【vsims.web】2.后端webapi项目【vsims.webapi】,经过前一篇文章的讲解,已经对前端项目的架构和组成部分有了大致了解,今天继续开发后端webapi项目的开发讲解。

涉及知识点

在本示例中,涉及知识点包含前端和后端两部分:

前端项目涉及知识点如下:

开发工具:HbuilderX项目框架:VUE3.0+Antdv

后端项目涉及知识点如下:

开发工具:Visual Studio 2022项目类型:Asp.net WebApi数据库:SQL Server 2012数据库表结构

在学生信息管理系统中,学生,班级,课程,成绩等内容和管理模块的相关内容,都离不开数据库的支持,所以数据是支撑,页面是对数据的展示。根据系统功能设计,对应数据库如下所示:

关于具体表结构说明,之前已有说明,本文不再赘述,可参考文章:WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(二)

创建WebApi项目

在VS2022中文件--新建,打开创建新项目窗口,然后选择【ASP.NET Core Web API】项目类型,点击下一步,如下所示:

在配置新项目页面,输入项目名称,和保存位置,点击下一步,如下所示:

选择项目对应框架,默认.NET 6.0

数据库实体类

项目创建成功后,添加数据库表对应的实体类,如下图所示:

添加第三方框架

本示例中所需要的第三方框架主要有三个,如下所示:

EntityFramework框架主要用于操作数据库,是微软提供的通过ORM方式操作数据的框架。Autofac框架,主要用于类的依赖注入的自动实现。Swagger框架,主要用于WebApi在浏览器端的可视化展示。

第三方框架主要通过Nuget包进行安装,如下所示:

创建WebApi接口VUE3.0+Antdv+Asp.net WebApi开发学生信息管理系统(二)

在Asp.net WebApi项目中,采用三层架构的方式进行开发接口,如下所示:

关于具体实现类的代码,之前已有说明,本文不在赘述,可参考文章:WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(二)

配置接口

在上述接口开发完成后,需要配置注入DataCotext和Autofac等内容,如下所示:

1 using Autofac; 2 using Autofac.Extensions.DependencyInjection; 3 using Microsoft.EntityFrameworkCore; 4 using VSIMS.WebApi; 5 using VSIMS.WebApi.Data; 6 using VSIMS.WebApi.Services.Student; 7 using System.Configuration; 8 using System.Reflection; 9 10 var builder = WebApplication.CreateBuilder(args);11 12 // Add services to the container.13 14 builder.Services.AddControllers();15 // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle16 builder.Services.AddEndpointsApiExplorer();17 builder.Services.AddSwaggerGen();18 builder.Services.AddDbContext<DataContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));19 // 以下是autofac依赖注入20 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());21 builder.Host.ConfigureContainer<ContainerBuilder>(builder =>22 { // 注入Service程序集23 string assemblyName = Assembly.GetExecutingAssembly().GetName().Name;24 builder.RegisterAssemblyTypes(Assembly.Load(assemblyName))25 .AsImplementedInterfaces()26 .InstancePerDependency();27 });28 var app = builder.Build();29 30 // Configure the HTTP request pipeline.31 if (app.Environment.IsDevelopment())32 {33 app.UseSwagger();34 app.UseSwaggerUI();35 }36 37 app.UseHttpsRedirection();38 39 app.UseAuthorization();40 41 app.MapControllers();42 43 app.Run();运行WebApi接口

在VS中运行程序,如果显示接口列表,则表示成功。如下所示:

Web前端调用Api

在VUE3.0的前端项目中,如果需要调用WebApi,需要先安装第三方插件Axios以及vue-axios,安装命令为:

npm -i --save axiosnpm -i --save vue-axios

安装过程,如下图所示:

配置和封装Axios

在src目录下创建api目录,并创建config.js,配置接口访问基本地址,如下所示:

1 export default {2 baseUrl: {3 dev: "http://localhost:5151/", // 开发环境4 // fat: 'http://xxx.xx.xx.xx:8080' 5 //uat : "http://production.com"6 //pro:"http://localhost:8088/"7 },8 };

然后在api目录下,创建http.js文件,封装axios访问,如下所示:

1 import axios from "axios"; // 引用axios 2 import config from "@/api/config"; 3 4 const instance = axios.create({ 5 baseURL: config.baseUrl.dev, 6 timeout: 60000, 7 }); 8 //get请求 9 export function get(url, params = {}) {10 return new Promise((resolve, reject) => {11 instance12 .get(url, {13 params: params,14 })15 .then((response) => {16 resolve(response);17 })18 .catch((err) => {19 reject(err);20 });21 });22 }23 //post请求24 export function post(url, data = {}) {25 return new Promise((resolve, reject) => {26 instance.post(url, data).then(27 (response) => {28 resolve(response.data);29 },30 (err) => {31 reject(err);32 }33 );34 });35 }

然后创建index.js,封装get和post方法,如下所示:

1 // index.js 调用接口的方法2 // 引入封装的get/post请求方法3 import {4 get,5 post6 } from '@/api/http'7 8 export const getD = (url, m) => get(url, m)9 export const postD = (url, m) => post(url, m)

封装完成后,在LoginView登录视图中,调用接口,如下所示:

引入index.js封装的方法,如下所示:

1 import { getD } from '../api/index.js';

在登录事件中,调用接口,输出接口返回信息,如下所示:

1 const onFinish = (values: any) => { 2 console.log(values); 3 console.log('Success:', values); 4 getD('/api/Login/Login',{"username":values.username,"password":values.password}).then(res=> { 5 console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>"); 6 console.log(res); 7 console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>"); 8 router.push('/home'); 9 })10 .catch(error=>{11 console.log(error)12 });13 //this.$router.push('/home');14 };

然后运行程序,输入用户名密码,点击登录按钮,然后提示如下错误:

以上错误是前端项目和后端WebApi是两个独立的项目,不属于同一个域,所以会报跨域问题。在Vue3.0中,要解决跨域问题,需要在vue.config.js中增加跨域配置。如下所示:

1 const { 2 defineConfig 3 } = require('@vue/cli-service'); 4 const webpack = require('webpack'); 5 module.exports = defineConfig({ 6 css: { 7 loaderOptions: { 8 less: { 9 lessOptions: {10 modifyVars: {11 'primary-color': '#1DA57A',12 'link-color': '#1DA57A',13 'border-radius-base': '2px',14 },15 javascriptEnabled: true,16 },17 },18 },19 },20 chainWebpack: config => {21 config22 .plugin('html')23 .tap(args => {24 args[0].title = 'SIMS'25 return args26 })27 },28 transpileDependencies: true,29 configureWebpack: {30 devServer: {31 host:'localhost',32 port:8080,33 proxy: {34 '/api': { // /api是习惯性的写法,可以随意改35 target: 'http://localhost:5151/', //接口域名36 changeOrigin: true, //是否跨域37 }38 }39 }40 }41 })登录模块业务逻辑

通过登录接口窗口返回的状态码以及返回值,判断是否登录成功,如果成功,则跳转到主页面,如果失败,则提示错误信息,如下所示:

1 const onFinish = (values: any) => { 2 console.log(values); 3 console.log('Success:', values); 4 getD('/Login/Login',{"username":values.username,"password":values.password}).then(res=> { 5 if(res.status==200){ 6 //返回成功 7 if(res.data>0){ 8 sessionStorage['UserId']=values.username; 9 sessionStorage['LoginId']=res.data;10 message.success('登录成功!');11 router.push('/home');12 }else{13 message.error('登录失败,用户命名错误!');14 }15 }else if(res.status==204){16 //没有返回17 message.error('用户命名错误!');18 }else{19 message.error('系统错误!');20 }21 })22 .catch(error=>{23 console.log(error)24 });25 //this.$router.push('/home');26 };运行程序

启动项目后,在浏览器中输入网址,操作如下所示:

备注

以上就是Antdv+Asp.net WebApi开发学生信息管理系统第二篇的全部内容,写文不易,多谢支持。学习编程,从关注【老码识途】开始!!!

本文链接地址:https://www.jiuchutong.com/zhishi/311769.html 转载请保留说明!

上一篇:js中对象的两种属性(js中的对象种类有哪些)

下一篇:dedecms模板中if else判断语句写法(在dedecms中,如何模板建站)

  • 微信账户更名是什么意思(微信账户更名后还和原来一样使用吗)

    微信账户更名是什么意思(微信账户更名后还和原来一样使用吗)

  • 手机屏幕向右偏移怎么办(手机屏幕向右偏发红,向左偏发蓝)

    手机屏幕向右偏移怎么办(手机屏幕向右偏发红,向左偏发蓝)

  • 淘气值在哪里看(淘宝里面的淘气值在哪里看)

    淘气值在哪里看(淘宝里面的淘气值在哪里看)

  • 华为怎么调出来三键(华为怎么调出来最下面三个功能键)

    华为怎么调出来三键(华为怎么调出来最下面三个功能键)

  • 应用锁正在保护什么意思(应用锁正在保护通知怎么关闭)

    应用锁正在保护什么意思(应用锁正在保护通知怎么关闭)

  • word文档合并后格式乱了(word文档合并后字体变了)

    word文档合并后格式乱了(word文档合并后字体变了)

  • 二维码收款语音播报怎么设置的(二维码收款语音播报器怎么申请)

    二维码收款语音播报怎么设置的(二维码收款语音播报器怎么申请)

  • 华硕bios关闭节能模式(华硕bios怎么关机)

    华硕bios关闭节能模式(华硕bios怎么关机)

  • 数字电视遥控器没反应(小米电视机遥控器怎么配对数字电视遥控器)

    数字电视遥控器没反应(小米电视机遥控器怎么配对数字电视遥控器)

  • 华为p30pro系统问题充不进电(华为p30pro10.1系统)

    华为p30pro系统问题充不进电(华为p30pro10.1系统)

  • 微信朋友圈怎么发多张照片(微信朋友圈怎么统一回复评论)

    微信朋友圈怎么发多张照片(微信朋友圈怎么统一回复评论)

  • 群文件在哪里(微信群文件在哪里)

    群文件在哪里(微信群文件在哪里)

  • cpu和主板是一体的吗(cpu和主板是一起卖的吗)

    cpu和主板是一体的吗(cpu和主板是一起卖的吗)

  • 苹果手机储存的文件在哪(苹果手机储存的档案在哪里找?)

    苹果手机储存的文件在哪(苹果手机储存的档案在哪里找?)

  • 抖音可以设置只给一个人看吗(抖音可以设置只给谁看吗)

    抖音可以设置只给一个人看吗(抖音可以设置只给谁看吗)

  • 移动和联通的卡能同时在一个手机上用吗(移动和联通的卡哪个信号好)

    移动和联通的卡能同时在一个手机上用吗(移动和联通的卡哪个信号好)

  • 手机自动装软件怎么办(手机软件自动安装怎么回事)

    手机自动装软件怎么办(手机软件自动安装怎么回事)

  • 数控编程6个步骤(数控编程6个步骤是什么)

    数控编程6个步骤(数控编程6个步骤是什么)

  • 怎么通过照片原图定位(怎么通过照片原图定位手机)

    怎么通过照片原图定位(怎么通过照片原图定位手机)

  • 小米9pro无线反充怎么开(小米9反向无线充电在哪打开)

    小米9pro无线反充怎么开(小米9反向无线充电在哪打开)

  • 苹果正面呼吸灯在哪里设置(苹果呼吸灯什么样子)

    苹果正面呼吸灯在哪里设置(苹果呼吸灯什么样子)

  • 苹果怎么查下载过的东西(苹果怎么查下载软件的记录)

    苹果怎么查下载过的东西(苹果怎么查下载软件的记录)

  • ipad更新一半能取消吗(ipad更新了十几个小时)

    ipad更新一半能取消吗(ipad更新了十几个小时)

  • 手机压缩文件密码怎么解(手机压缩文件密码忘记了怎么解开)

    手机压缩文件密码怎么解(手机压缩文件密码忘记了怎么解开)

  • 红米note4耗电解决办法(红米note4耗电太厉害)

    红米note4耗电解决办法(红米note4耗电太厉害)

  • oppor17忘记密码怎么办(oppor17忘记密码怎么强制恢复出厂)

    oppor17忘记密码怎么办(oppor17忘记密码怎么强制恢复出厂)

  • 快手怎么开直播游戏(快手怎么开直播卖货)

    快手怎么开直播游戏(快手怎么开直播卖货)

  • win10商店无法连接网络(win10无法连接应用商店)

    win10商店无法连接网络(win10无法连接应用商店)

  • swatch命令  用于系统监控(swatch of)

    swatch命令 用于系统监控(swatch of)

  • 从香港向境外汇款怎么汇
  • 特定业务计算的应纳税所得额
  • 应付账款支付时需要付款申请单吗
  • 生产企业出口货物劳务免抵退税申报明细表
  • 国家税收与地方税收
  • 公司出售旧汽车要交什么税
  • 年终奖分摊到每个月
  • 超过缴款期限缴纳税款
  • 小规模10万元免税
  • 代开了专票,但是销售额没有超过30万怎么处理
  • 深圳增值税发票选择确认平台使用
  • 转账支票遗失能挂失吗
  • 房地产企业作为甲方开票给施工单位
  • 收购不良资产收益怎么算
  • 增值税发票是需要先对公转账吗
  • 劳务派遣差额征税5%
  • 非征期不能抄报
  • 发票涉税风险有哪些
  • 现金短缺属于出纳员负责如何做会计处理
  • 固定资产被政府查封
  • 工程费用包括哪几类
  • 固定资产少计提了怎么办
  • w11怎么更新
  • 事业单位的费用
  • 公司内部收据能做凭证吗
  • 房屋租赁合同变更
  • win10怎么调出命令行窗口
  • 特殊工种人身安全保险费可以扣除吗
  • 景点门票定价依据
  • 最新专业版win10
  • 租赁费和场地租赁费区别
  • mac系统怎么添加网络映射
  • 鸿蒙怎么设置默认系统
  • 系统远程桌面连接怎么用
  • php零基础入门教程
  • 税前可扣除的税费
  • 工伤补贴如何做凭证
  • 使用Zttp简化Guzzle 调用
  • 结转损益类收入科目
  • 对公打款打错了
  • 语谱图生成
  • 什么是社会团体组织
  • 业务招待费列支不规范
  • 让渡资产使用权收入计入什么科目
  • 经营范围没有的项目开票了会怎么样
  • 怎么看是不是真发
  • 在建工程增多
  • 个人所得税的纳税期限
  • 软件产品销售合同范本
  • 显示应退税额就是能退是吗
  • 公司银行账号注销需要法人到场吗
  • 企业中征码怎么生成
  • 进项税的发票
  • 会计软件包括
  • 没有期初数据,只要借贷平横,报表是不是就不会不平了?
  • windows storage server 2016下载
  • 系统安装驱动卡住了
  • ubuntu20.04升级20.10
  • linux 网站备份
  • 格式化不干净
  • win10资源管理器快捷键
  • win7一开机就弹窗
  • node.js cookie-parser之parser.js
  • xml文件网络传输
  • 批处理替换文件中的某个内容
  • Node.js中的construct
  • JavaScript中字符串模板
  • js的a标签
  • javascript 进阶篇1 正则表达式,cookie管理,userData
  • pulls toward
  • Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
  • socks5代理怎么用
  • 请问关于煤炭的法律法规
  • 上海中考规定
  • 一般纳税人服务费是几个点
  • 合伙企业所得税账务处理
  • 房屋出租到哪里挂出去
  • 土地分割抵押 如何实现抵押权
  • 白酒消费税应纳税额
  • 什么是坚持依法治国的重点任务和主体工程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设