找回密码
 会员注册
查看: 307|回复: 0

Asp.Net Core Web Api的简单实例

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962988
发表于 2024-2-29 08:55:42 | 显示全部楼层 |阅读模式

WebApi

Web API是网络应用程序接口。包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。

第一个Asp.NetCoreWebApi程序

首先新建项目,选择ASP.NET Core Web API

在这里插入图片描述

项目名称随意就好
在这里插入图片描述

直接点下一步就行
在这里插入图片描述

新建好了是这样的
在这里插入图片描述

Controllers文件夹是你的控制器
WeatherForecastController.cs是生成的例子控制器(删除就行)
Program.cs和Startup.cs是启动文件
WeatherForecast.cs是生成的例子模型(删除就行)
然后我们在Controllers文件夹里面新建一个文件
MyWebApiController.cs
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

写第一个函数

  1. [Route("api/[controller]")]
  2. [ApiController]
  3. public class MyWebApiController : ControllerBase
  4. {
  5. private readonly ILogger<MyWebApiController> _logger;
  6. public MyWebApiController(ILogger<MyWebApiController> logger)
  7. {
  8. _logger = logger;
  9. }
  10. [HttpGet("[action]")]
  11. public IActionResult SayHello()
  12. {
  13. return new JsonResult("Hello World");
  14. }
复制代码

编译运行

在这里插入图片描述

没问题
这就是我们的第一个Asp.Net Core Web Api

传入的参数

API即函数,函数那有参数的呀,下面我们展示如何传入参数

  1. [HttpGet("[action]")]
  2. public IActionResult SayHello(string name)
  3. {
  4. return new JsonResult($"Hello {name}");
  5. }
复制代码

编译运行

在这里插入图片描述

如果在浏览器里面直接请求
在这里插入图片描述

当请求数据比较多的时候就会出现Url过长,这个时候我们就要将参数写到Body里面,这个时候就要用HttpPost
首先我们创建一个模型文件夹
然后新建一个UserModel.cs
在这里插入图片描述

  1. public class UserModel
  2. {
  3. public string UserId { get; set; }
  4. public string UserName { get; set; }
  5. }
复制代码

然后修改一下控制器

  1. [HttpPost("[action]")]
  2. public IActionResult SayHello([FromBody] UserModel model)
  3. {
  4. return new JsonResult($"Hello {model.UserName}");
  5. }
复制代码

编译运行

在这里插入图片描述

可以的
由请求信息可以发现,我们的请求是json文件
在这里插入图片描述

返回的返回值

WebApi的返回值尽量统一为IActionResult接口
修改一下我们的代码

  1. [HttpGet("[action]")]
  2. public IActionResult SayHello(string pwd)
  3. {
  4. if (pwd != "000000") return new BadRequestResult();
  5. else
  6. {
  7. object obj = new
  8. {
  9. msg = "请求成功",
  10. name = "纸墨青鸢"
  11. };
  12. return new JsonResult(obj);
  13. }
  14. }
复制代码

编译运行

在这里插入图片描述

在这里插入图片描述

也由返回图片,文件等返回值的ActionResult类

WebApi和EF Core的联用

webapi是数据的传递,而数据离不开数据库,对比原生SQL语句,在webapi里面使用ef是更加快捷的选择

C# EF Core可视化工具的使用以及EF Core入门语句
首先我们新建一下数据库的表

  1. USE [DB_Data]
  2. GO
  3. SET ANSI_NULLS ON
  4. GO
  5. SET QUOTED_IDENTIFIER ON
  6. GO
  7. CREATE TABLE [dbo].[TB_Data](
  8. [Index] [int] IDENTITY(1,1) NOT NULL,
  9. [Header] [nvarchar](max) NULL,
  10. [Data] [varbinary](max) NULL,
  11. CONSTRAINT [PK_TB_Data] PRIMARY KEY CLUSTERED
  12. (
  13. [Index] ASC
  14. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  15. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  16. GO
  17. SET ANSI_NULLS ON
  18. GO
  19. SET QUOTED_IDENTIFIER ON
  20. GO
  21. CREATE TABLE [dbo].[TB_User](
  22. [UserID] [nchar](10) NOT NULL,
  23. [Password] [nchar](64) NOT NULL,
  24. [Type] [nchar](10) NULL,
  25. [UserName] [nchar](10) NOT NULL,
  26. CONSTRAINT [PK_TB_User] PRIMARY KEY CLUSTERED
  27. (
  28. [UserID] ASC
  29. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  30. ) ON [PRIMARY]
  31. GO
复制代码

在数据库中运行后连接一下我们的EF,具体操作请阅读
C# EF Core可视化工具的使用以及EF Core入门语句
生成好之后我们进行一下连接字符串的配置
在appsettings.json包含一下连接字符串

  1. "ConnectionStrings": {
  2. "DB_Data": "你的连接字符串"
  3. }
复制代码

然后配置一下控制器的依赖注入
在Startup.cs里面写一下依赖注入
(将public void ConfigureServices(IServiceCollection services)函数修改一下)

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddControllers();
  4. services.AddSwaggerGen(c =>
  5. {
  6. c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyWebApi", Version = "v1" });
  7. });
  8. services.AddDbContext<DB_DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DB_Data")));
  9. }
复制代码

最后在控制器里面构造一下依赖注入
先在控制器的类里面增加一个属性

  1. private readonly DB_DataContext _context;
复制代码

然后修改一下初始化函数

  1. public MyWebApiController(ILogger<MyWebApiController> logger,DB_DataContext context)
  2. {
  3. _logger = logger;
  4. _context = context;
  5. }
复制代码

然后去函数里面试一下

  1. [HttpGet("[action]")]
  2. public async Task<IActionResult> CreateUser(string uid,string pwd,string name,string type)
  3. {
  4. try
  5. {
  6. var user = new TbUser()
  7. {
  8. UserId = uid,
  9. Password = pwd,
  10. UserName = name,
  11. Type = type
  12. };
  13. _context.TbUser.Add(user);
  14. await _context.SaveChangesAsync();
  15. return Ok();
  16. }catch(Exception ex)
  17. {
  18. return BadRequest(ex.Message);
  19. }
  20. }
复制代码

编译运行

在这里插入图片描述

再次运行
在这里插入图片描述

因为主键要唯一,所以出现报错错误

总结

WebApi是很不错的东西


来源:https://blog.csdn.net/qq_39935495/article/details/123123765
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 00:36 , Processed in 0.382803 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表