0


Asp.Net Core Web Api的简单实例

文章目录

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是很不错的东西

标签: asp.net 前端 后端

本文转载自: https://blog.csdn.net/qq_39935495/article/details/123123765
版权归原作者 纸墨青鸢 所有, 如有侵权,请联系我们删除。

“Asp.Net Core Web Api的简单实例”的评论:

还没有评论