文章目录
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]publicclassMyWebApiController:ControllerBase{privatereadonlyILogger<MyWebApiController> _logger;publicMyWebApiController(ILogger<MyWebApiController> logger){
_logger = logger;}[HttpGet("[action]")]publicIActionResultSayHello(){returnnewJsonResult("Hello World");}
编译运行
没问题
这就是我们的第一个Asp.Net Core Web Api
传入的参数
API即函数,函数那有参数的呀,下面我们展示如何传入参数
[HttpGet("[action]")]publicIActionResultSayHello(string name){returnnewJsonResult($"Hello {name}");}
编译运行
如果在浏览器里面直接请求
当请求数据比较多的时候就会出现Url过长,这个时候我们就要将参数写到Body里面,这个时候就要用
HttpPost
首先我们创建一个模型文件夹
然后新建一个UserModel.cs
publicclassUserModel{publicstring UserId {get;set;}publicstring UserName {get;set;}}
然后修改一下控制器
[HttpPost("[action]")]publicIActionResultSayHello([FromBody]UserModel model){returnnewJsonResult($"Hello {model.UserName}");}
编译运行
可以的
由请求信息可以发现,我们的请求是json文件
返回的返回值
WebApi的返回值尽量统一为IActionResult接口
修改一下我们的代码
[HttpGet("[action]")]publicIActionResultSayHello(string pwd){if(pwd !="000000")returnnewBadRequestResult();else{object obj =new{
msg ="请求成功",
name ="纸墨青鸢"};returnnewJsonResult(obj);}}
编译运行
也由返回图片,文件等返回值的ActionResult类
WebApi和EF Core的联用
webapi是数据的传递,而数据离不开数据库,对比原生SQL语句,在webapi里面使用ef是更加快捷的选择
C# EF Core可视化工具的使用以及EF Core入门语句
首先我们新建一下数据库的表
USE[DB_Data]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATETABLE[dbo].[TB_Data]([Index][int]IDENTITY(1,1)NOTNULL,[Header][nvarchar](max)NULL,[Data][varbinary](max)NULL,CONSTRAINT[PK_TB_Data]PRIMARYKEYCLUSTERED([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]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATETABLE[dbo].[TB_User]([UserID][nchar](10)NOTNULL,[Password][nchar](64)NOTNULL,[Type][nchar](10)NULL,[UserName][nchar](10)NOTNULL,CONSTRAINT[PK_TB_User]PRIMARYKEYCLUSTERED([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)函数修改一下)
publicvoidConfigureServices(IServiceCollection services){
services.AddControllers();
services.AddSwaggerGen(c =>{
c.SwaggerDoc("v1",newOpenApiInfo{ Title ="MyWebApi", Version ="v1"});});
services.AddDbContext<DB_DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DB_Data")));}
最后在控制器里面构造一下依赖注入
先在控制器的类里面增加一个属性
privatereadonlyDB_DataContext _context;
然后修改一下初始化函数
publicMyWebApiController(ILogger<MyWebApiController> logger,DB_DataContext context){
_logger = logger;
_context = context;}
然后去函数里面试一下
[HttpGet("[action]")]publicasyncTask<IActionResult>CreateUser(string uid,string pwd,string name,string type){try{var user =newTbUser(){
UserId = uid,
Password = pwd,
UserName = name,
Type = type
};
_context.TbUser.Add(user);await _context.SaveChangesAsync();returnOk();}catch(Exception ex){returnBadRequest(ex.Message);}}
编译运行
再次运行
因为主键要唯一,所以出现报错错误
总结
WebApi是很不错的东西
版权归原作者 纸墨青鸢 所有, 如有侵权,请联系我们删除。