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]
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]
GO

SET 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]
GO

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

  • 22
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ASP.NET Core Web API 是一种用于构建 Web API 的框架。它是微软开发的一个开源框架,旨在提供高性能、可扩展性和可靠性,支持跨平台开发,并且易于使用。 ASP.NET Core Web API 基于 .NET Core 平台,可以运行在 Windows、Linux 和 macOS 等多个操作系统上。它支持使用 C# 或者其他 .NET 支持的语言进行开发,并且提供了许多开箱即用的功能,如模型绑定、身份验证、授权、路由等等。 使用 ASP.NET Core Web API,你可以构建 RESTful API,支持多种数据格式,如 JSON、XML 等等。你还可以轻松地集成其他框架和工具,如 Swagger、Entity Framework Core、SignalR 等等。 总之,ASP.NET Core Web API 是一个功能强大、灵活、易于使用的框架,非常适合构建 Web API。 ### 回答2: ASP.NET Core Web API 是微软推出的一种服务器端的轻量级框架,用于构建基于 RESTful 的 Web API。该框架建立在 .NET Core 上,并具有很好的可扩展性和灵活性,可适用于跨平台开发ASP.NET Core Web API 的主要特点包括: 1. 开箱即用的依赖注入:该框架提供了一个内置的依赖注入容器,使得 DI 可以轻松地集成到 Web API开发中。 2. 轻量级:由于底层是使用 .NET Core 构建的,因此 ASP.NET Core Web API 框架非常灵活、快速、轻量级,并且能够满足高并发访问的需求。 3. 跨平台支持:ASP.NET Core Web API 是跨平台的,可以运行在 Windows、Linux 和 macOS 等操作系统上。 4. 开放式标准:该框架遵循开放式的标准,并支持多种数据格式、服务器框架和插件。 5. 网络安全:ASP.NET Core Web API 提供了多种安全功能,包括认证、授权和加密等,以保护 Web 应用程序免受网络攻击。 总之,ASP.NET Core Web API 框架是一个方便、快捷、灵活和高性能的框架,适用于构建任何规模的 Web API 应用程序。与此同时,该框架还提供了良好的文档和社区支持,愿意学习的开发者可以通过微软的官方文档和各种社区论坛,快速上手并掌握该框架的使用。 ### 回答3: ASP.NET Core Web API是一个开放源代码跨平台的Web框架,用于开发基于HTTP协议的RESTful服务,并支持各种客户端,包括Web界面及流行语言开发的客户端应用程序。其已经成为目前.NET生态系统中最重要的发展方向之一。 相比于传统的.NET框架,ASP.NET Core Web API具有以下几个优点: 1. 跨平台:在Linux、Mac、Windows等平台上都可以运行,且不必担心所使用的系统版本问题; 2. 高性能:ASP.NET Core Web API在响应请求方面有极佳的性能,对于高并发访问的场景有着不错的表现; 3. 轻量级:ASP.NET Core Web API具有比传统的.NET框架更轻量级的特点,其运行时占用的硬盘空间和内存资源更少; 4. 便于部署:用Docker等虚拟化容器将应用打包后部署非常简单,不需要过多的配置,适用于现代化的云端应用场景。 在开发方面,ASP.NET Core Web API提供了丰富的工具和库,使Web API开发效率更高,且可用于多种类型的Web应用程序,例如单页应用程序、移动客户端、大型企业软件等。通过使用ASP.NET Core Web API开发人员可以轻松创建高效稳定的Web服务和RESTful APIs。 总之,ASP.NET Core Web API是一个反应迅速、易于扩展的开发框架,不仅能够加速Web应用程序的开发工作,更能够提供高性能的Web服务,从而大大提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纸墨青鸢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值