文章目录

  • 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的简单实例相关推荐

  1. Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)

    图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...

  2. ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现

    很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...

  3. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...

  4. 重温.NET下Assembly的加载过程 ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线...

    重温.NET下Assembly的加载过程 最近在工作中牵涉到了.NET下的一个古老的问题:Assembly的加载过程.虽然网上有很多文章介绍这部分内容,很多文章也是很久以前就已经出现了,但阅读之后发现 ...

  5. ASP.NET Core Web API基于RESTFul APIs的集合结果过滤和分页

    译者荐语:如何在RESTFul APIs中进行集合结果分页?还是用客户端来拼接链接地址么? 原文来自互联网,由长沙DotNET技术社区[邹溪源]翻译.如译文侵犯您的版权,请联系小编,小编将在24小时内 ...

  6. ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现

    在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...

  7. ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线

    在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容.下面的类图描述了我们已经实现的组件及其之间的关系,貌似系统已经变得越来越复杂了. 其 ...

  8. ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

    在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...

  9. 连接Android与ASP.NET Core Web API的完整教程

    目录 准备数据库 ASP.NET Core Web API项目 创建新的ASP.NET Core Web API项目 实体 导入EF Core 创建DbContext 将连接字符串添加到appsett ...

最新文章

  1. CSS布局--head区的其他设置
  2. VS2015--win32project配置的一些想法之在 Visual Studio 2015 中进行调试的同一时候分析性能...
  3. DropDownList的值去控制TextBox是否可编写
  4. 一张图看懂新一代人工智能知识体系
  5. 了解Linux操作系统发展阶段
  6. 【浏览器】浏览器模式与文档模式区别
  7. 除了汪峰,还有哪些明星跨界做智能硬件
  8. x-jquery-tmpl代码示例,分页
  9. 扒一扒那些叫欧拉的定理们(二)——简单多面体欧拉定理的证明
  10. 计算机专业知识3,计算机专业知识试卷3
  11. html顺势正旋转360度,庞明:混元太极揉球
  12. 中国古代兵器与兵书·铁马驰骋
  13. Linux Centos 7 实现java控制打印机打印文件**
  14. 智能机器人与智能系统(大连理工大学庄严教授)——3.工业机器人
  15. 相关关系与因果关系之探讨——大数据时代读后感(1)
  16. Springboot实战项目---从需求分析到项目部署一站式开发,给简历添加一点色彩
  17. react 生命挂钩_秋田+ React挂钩=耸人听闻的国家管理食谱
  18. 数据库系统概论第五版第(第 4 章数据库安全性)习题答案
  19. linux远程工具xshell下载,Xshell 6下载 Xshell 6(SSH远程终端工具) 6.0 官方最新安装版 下载-脚本之家...
  20. go 你有50枚金币,需要分配给以下几个人

热门文章

  1. 联想G470自带的无线网卡总是不能上网
  2. Java项目:医院分诊管理系统(java+SSM+jsp+HTML+JavaScript+mysql)
  3. 领导最爱的数据驾驶舱、大屏,真的只是“面子工程”吗?
  4. 一款使用C# .NET开发的SIP网络电话客户端完整源码
  5. Pycharm使用shell命令
  6. 《ANSYS Workbench 14有限元分析自学手册》——导读
  7. 视频教程-清华-尹成老师-Python爬虫day48-Python
  8. Ae效果控件快速参考:通道
  9. UI5-技术篇-Implementing Expand Entity/Entity Set
  10. 用python轻松制作动态二维码