Asp.Net Core Web Api的简单实例
文章目录
- WebApi
- 第一个Asp.NetCoreWebApi程序
- 传入的参数
- 返回的返回值
- WebApi和EF Core的联用
- 总结
WebApi
Web API是网络应用程序接口。包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。
第一个Asp.NetCoreWebApi程序
首先新建项目,选择ASP.NET Core Web API
项目名称随意就好
直接点下一步就行
新建好了是这样的
Controllers文件夹是你的控制器
WeatherForecastController.cs是生成的例子控制器(删除就行)
Program.cs和Startup.cs是启动文件
WeatherForecast.cs是生成的例子模型(删除就行)
然后我们在Controllers文件夹里面新建一个文件
MyWebApiController.cs
写第一个函数
[Route("api/[controller]")]
[ApiController]
public class MyWebApiController : ControllerBase
{private readonly ILogger<MyWebApiController> _logger;public MyWebApiController(ILogger<MyWebApiController> logger){_logger = logger;}[HttpGet("[action]")]public IActionResult SayHello(){return new JsonResult("Hello World");}
编译运行
没问题
这就是我们的第一个Asp.Net Core Web Api
传入的参数
API即函数,函数那有参数的呀,下面我们展示如何传入参数
[HttpGet("[action]")]
public IActionResult SayHello(string name)
{return new JsonResult($"Hello {name}");
}
编译运行
如果在浏览器里面直接请求
当请求数据比较多的时候就会出现Url过长,这个时候我们就要将参数写到Body里面,这个时候就要用HttpPost
首先我们创建一个模型文件夹
然后新建一个UserModel.cs
public class UserModel
{public string UserId { get; set; } public string UserName { get; set; }
}
然后修改一下控制器
[HttpPost("[action]")]
public IActionResult SayHello([FromBody] UserModel model)
{return new JsonResult($"Hello {model.UserName}");
}
编译运行
可以的
由请求信息可以发现,我们的请求是json文件
返回的返回值
WebApi的返回值尽量统一为IActionResult接口
修改一下我们的代码
[HttpGet("[action]")]
public IActionResult SayHello(string pwd)
{if (pwd != "000000") return new BadRequestResult();else{object obj = new{msg = "请求成功",name = "纸墨青鸢"};return new JsonResult(obj);}
}
编译运行
也由返回图片,文件等返回值的ActionResult类
WebApi和EF Core的联用
webapi是数据的传递,而数据离不开数据库,对比原生SQL语句,在webapi里面使用ef是更加快捷的选择
C# EF Core可视化工具的使用以及EF Core入门语句
首先我们新建一下数据库的表
USE [DB_Data]
GOSET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TB_Data]([Index] [int] IDENTITY(1,1) NOT NULL,[Header] [nvarchar](max) NULL,[Data] [varbinary](max) NULL,CONSTRAINT [PK_TB_Data] PRIMARY KEY CLUSTERED
([Index] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GOSET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TB_User]([UserID] [nchar](10) NOT NULL,[Password] [nchar](64) NOT NULL,[Type] [nchar](10) NULL,[UserName] [nchar](10) NOT NULL,CONSTRAINT [PK_TB_User] PRIMARY KEY CLUSTERED
([UserID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
在数据库中运行后连接一下我们的EF,具体操作请阅读
C# EF Core可视化工具的使用以及EF Core入门语句
生成好之后我们进行一下连接字符串的配置
在appsettings.json包含一下连接字符串
"ConnectionStrings": {"DB_Data": "你的连接字符串"}
然后配置一下控制器的依赖注入
在Startup.cs里面写一下依赖注入
(将public void ConfigureServices(IServiceCollection services)函数修改一下)
public void ConfigureServices(IServiceCollection services)
{services.AddControllers();services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyWebApi", Version = "v1" });});services.AddDbContext<DB_DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DB_Data")));
}
最后在控制器里面构造一下依赖注入
先在控制器的类里面增加一个属性
private readonly DB_DataContext _context;
然后修改一下初始化函数
public MyWebApiController(ILogger<MyWebApiController> logger,DB_DataContext context)
{_logger = logger;_context = context;
}
然后去函数里面试一下
[HttpGet("[action]")]
public async Task<IActionResult> CreateUser(string uid,string pwd,string name,string type)
{try{var user = new TbUser(){UserId = uid,Password = pwd,UserName = name,Type = type};_context.TbUser.Add(user);await _context.SaveChangesAsync();return Ok();}catch(Exception ex){return BadRequest(ex.Message);}
}
编译运行
再次运行
因为主键要唯一,所以出现报错错误
总结
WebApi是很不错的东西
Asp.Net Core Web Api的简单实例相关推荐
- Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)
图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...
- 重温.NET下Assembly的加载过程 ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线...
重温.NET下Assembly的加载过程 最近在工作中牵涉到了.NET下的一个古老的问题:Assembly的加载过程.虽然网上有很多文章介绍这部分内容,很多文章也是很久以前就已经出现了,但阅读之后发现 ...
- ASP.NET Core Web API基于RESTFul APIs的集合结果过滤和分页
译者荐语:如何在RESTFul APIs中进行集合结果分页?还是用客户端来拼接链接地址么? 原文来自互联网,由长沙DotNET技术社区[邹溪源]翻译.如译文侵犯您的版权,请联系小编,小编将在24小时内 ...
- ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...
- ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容.下面的类图描述了我们已经实现的组件及其之间的关系,貌似系统已经变得越来越复杂了. 其 ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...
- 连接Android与ASP.NET Core Web API的完整教程
目录 准备数据库 ASP.NET Core Web API项目 创建新的ASP.NET Core Web API项目 实体 导入EF Core 创建DbContext 将连接字符串添加到appsett ...
最新文章
- CSS布局--head区的其他设置
- VS2015--win32project配置的一些想法之在 Visual Studio 2015 中进行调试的同一时候分析性能...
- DropDownList的值去控制TextBox是否可编写
- 一张图看懂新一代人工智能知识体系
- 了解Linux操作系统发展阶段
- 【浏览器】浏览器模式与文档模式区别
- 除了汪峰,还有哪些明星跨界做智能硬件
- x-jquery-tmpl代码示例,分页
- 扒一扒那些叫欧拉的定理们(二)——简单多面体欧拉定理的证明
- 计算机专业知识3,计算机专业知识试卷3
- html顺势正旋转360度,庞明:混元太极揉球
- 中国古代兵器与兵书·铁马驰骋
- Linux Centos 7 实现java控制打印机打印文件**
- 智能机器人与智能系统(大连理工大学庄严教授)——3.工业机器人
- 相关关系与因果关系之探讨——大数据时代读后感(1)
- Springboot实战项目---从需求分析到项目部署一站式开发,给简历添加一点色彩
- react 生命挂钩_秋田+ React挂钩=耸人听闻的国家管理食谱
- 数据库系统概论第五版第(第 4 章数据库安全性)习题答案
- linux远程工具xshell下载,Xshell 6下载 Xshell 6(SSH远程终端工具) 6.0 官方最新安装版 下载-脚本之家...
- go 你有50枚金币,需要分配给以下几个人
热门文章
- 联想G470自带的无线网卡总是不能上网
- Java项目:医院分诊管理系统(java+SSM+jsp+HTML+JavaScript+mysql)
- 领导最爱的数据驾驶舱、大屏,真的只是“面子工程”吗?
- 一款使用C# .NET开发的SIP网络电话客户端完整源码
- Pycharm使用shell命令
- 《ANSYS Workbench 14有限元分析自学手册》——导读
- 视频教程-清华-尹成老师-Python爬虫day48-Python
- Ae效果控件快速参考:通道
- UI5-技术篇-Implementing Expand Entity/Entity Set
- 用python轻松制作动态二维码