首页 程序笔记 MiniAPI参数绑定 服务注入 响应输出使用示例

MiniAPI参数绑定 服务注入 响应输出使用示例

在VS2022中可以使用MiniAPI。 使用MiniAPI以创建具有最小依赖项的 HTTP API。 它们非常适合于需要在 ASP.NET Core 中仅包括最少文件、功能和依赖项的微服务和应用。

MiniAPI创建方法

启动 Visual Studio 2022 并选择“创建新项目”。

在“创建新项目”对话框中,选择“ASP.NET Core 空”模板,然后选择“下一步”。

在“其他信息”对话框中,选择“.NET 7.0” 或者 旧的“.NET 6.0”,取消选中“不使用顶级语句”,选择“创建”。

在Program.cs里包含如下代码。

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

其中app.MapGet("/", () => "Hello World!");就是一个MiniAPI, 按F5运行,通过http get请求/路径会输出Hello World!。

MiniAPI GET参数绑定示例:

Program.cs

builder.Services.AddScoped<IApiService, ApiService>();
app.MapGet("/api/test/{id?}", (int? id, // 绑定路由值
    [FromQuery] string? sid, // QueryString参数
    [FromHeader(Name = "CUSTOM-KEY-NAME")] string? customHeader, // Header值
    IApiService apiService // 依赖注入服务
    ) =>
{
    /// your code
    return Results.Ok();
});

其中服务注入需要在Program.cs里注册服务,否则会报错:

Body was inferred but the method does not allow inferred body parameters.
Below is the list of parameters that we found: 

Parameter           | Source                        
---------------------------------------------------------------------------------
platform            | Query String (Inferred)
env                 | Query String (Inferred)
type                | Query String (Inferred)
contact             | Query String (Inferred)
apiService          | Body (Inferred)

Did you mean to register the "Body (Inferred)" parameter(s) as a Service or apply the [FromService] or [FromBody] attribute?

如果没有注册服务,service参数被认为是绑定body参数所以报错了。

MiniAPI POST参数绑定示例

app.MapPost("/api/test", (Article article) =>
{
    // your code
    return Results.Ok(new
    {
        success = true,
        data = article
    });
});

这里会返回200状态的json:

{
    "success": true,
    "data": {
        "id": 1,
        "title": "this is title"
    }
}

MiniAPI相应输出

返回JSON结果

app.MapGet("/hello", () => Results.Json(new { Message = "Hello World" }));

返回TEXT结果

app.MapGet("/text", () => Results.Text("This is some text"));

返回自定义状态

app.MapGet("/405", () => Results.StatusCode(405));

内置返回结果

API
状态码
响应类型
说明
Results.Ok200application/json将状态代码设置为 200,并包含可选的 JSON 响应。
Results.Json200application/json(默认),可配置使用可选的序列化选项编写 JSON 响应。
Results.Text200text/plain(默认),可配置编写文本响应。
Results.Bytes200application/octet-stream(默认),可配置将响应编写为字节。
Results.Stream200application/octet-stream(默认),可配置将字节流写入响应。
Results.File200application/octet-stream(默认),可配置使用 content-disposition 标头将文件流式传输至响应以下载。
Results.Created201application/json将状态代码设置为 201,并包含可选的 JSON 响应和位置标头。
Results.Accepted202application/json将状态代码设置为 202,并包含位置标头。
Results.NoContent204空值将状态代码设置为 204。
Results.BadRequest400
空值将状态代码设置为 400,并包含可选的 JSON 响应。
Results.ValidationProblem400
空值将问题详细信息 JSON 对象写入包含验证错误的响应。
Results.Unauthorized401
空值将状态代码设置为 401。
Results.NotFound404
空值将状态代码设置为 404,并包含可选的 JSON 响应。
Results.Conflict409
空值将状态代码设置为 409,并包含可选的 JSON 响应。    
Results.UnprocessableEntity422
空值将状态代码设置为 422,并包含可选的 JSON 响应。
Results.Problem500(默认),可配置空值将问题详细信息 JSON 对象写入响应。
3

站心网

在VS2022中可以使用MiniAPI。 使用MiniAPI以创建具有最小依赖项的 HTTP API。 它们非常适合于需要在 ASP.NE..

为您推荐

.NET 10 C# 14 必知的 6 大语法糖:提升开发效率,简洁优雅

.NET 10(搭配 C# 14)正式上线,带来一批令人惊喜的语法糖改进,让日常开发变得更加简洁、高效。无论你是编写企业级系统、构建性能敏感型组件,还是编写一次性脚本,这些新语法糖都能让你的代码更具可读性、减少..

2025年最佳.NET C#实现PDF转Word:主流库功能与对比

在日常工作中,将 PDF 文件高质量地转换为 Word 文档已成为许多企业和办公人员的常见需求,尤其是在文档归档、编辑流程自动化和办公系统集成等场景中尤为重要。对于使用 .NET 平台,特别是 C# 的开发者来说,选择一..

.NET Core 图像处理:Magick.NET 与 SkiaSharp 的全面对比

随着 .NET Core 的发展,传统的 System.Drawing 库因其对 Windows 的依赖性和在跨平台应用中的限制,逐渐被其他图像处理库所取代。在众多替代方案中,Magick.NET 和 SkiaSharp 是最受欢迎的两个选择。本文将从多个维..

使用.NET C#将图片转换为.ico图标文件的多种方法

在Windows应用程序开发中,图标(.ico)文件是不可或缺的一部分。本文将介绍如何使用.NET C#将常见的图片格式(如PNG、JPG、BMP)转换为.ico文件,并提供多种实现方式,包括使用System.Drawing、Magick.NET库的方法..

RevokeMsgPatcher:.NET开源、免费的Windows下PC版微信/QQ/TIM的防撤回补丁

今天给大家分享一款基于 .NET 开源、免费的适用于 Windows 下 PC 版微信/QQ/TIM的防撤回补丁(我已经看到了,撤回也没用了),通用的微信多开工具:RevokeMsgPatcher。RevokeMsgPatcher GitHub地址:https://github...

RabbitMQ 4.0+重大更新!.NET(C#)开发者必须掌握的6大升级要点

RabbitMQ 作为一款广受欢迎的消息队列中间件,近年来从 3.x 版本升级到 4.0+,带来了显著的功能增强和架构调整。与此同时,其官方 C# 客户端也从 6.x 版本跃升至 7.0,引入了全新的编程模型和性能优化。这些变化不仅..

Paylinks:基于现代 .NET 的跨平台第三方支付 SDK 详解与使用示例

Paylinks 是一套基于现代 .NET 开发的,支持跨平台、多商户的第三方支付SDK。该项目旨在简化开发者接入第三方支付平台的过程,特别是针对支付宝和微信支付,便于快速集成支付功能。Paylinks 提供了丰富的配置选项和..

.NET 使用 Qdrant.Client 连接向量数据库 Qdrant 的完整指南

随着向量数据库在 AI、搜索、推荐系统等领域的广泛应用,越来越多的开发者开始将 Qdrant 集成到自己的项目中。对于 .NET 开发者而言,使用 Qdrant.Client 实现与 Qdrant 的高效连接和数据操作,是构建语义搜索和嵌入..

Entity Framework(EF) Core 10新特性全面解析:提升开发效率的关键更新​

Entity Framework Core(EF Core)作为 .NET 平台的主流对象关系映射(ORM)框架,持续为开发者提供高效、灵活的数据访问解决方案。​在最新发布的 EF Core 10 中,微软引入了多项新特性,旨在简化数据库操作,提升..

.NET(C#)使用 iText7 高效处理PDF文件的全面指南​

在现代软件开发中,PDF 文件处理是一个常见且重要的需求。无论是生成报告、填充表单、添加水印,还是进行数字签名,选择一个功能强大的 PDF 库至关重要。iText7 作为一款开源且功能丰富的 PDF 操作库,广泛应用于 C#..

.NET Exception: Received an unexpected EOF or 0 bytes from the transport stream.解决方法

在 .NET 应用中试用HttpClient调用API异常报错“Received an unexpected EOF or 0 bytes from the transport stream,通常表示在进行 HTTPS 通信时,SSL/TLS 握手未能成功完成,导致连接被意外关闭。​以下是一..

微软退出中国对.NET开发人员有什么影响?

关于微软将停止在中国运营的报道,微软中国方面已明确表示该信息不实。网传邮件截图显示,“由于地缘政治及国际业务环境的变化,微软将调整其全球战略布局,并将于2025年4月8日起正式停止在中国区的运营”..

EasyCaching:一款灵活高效的 .NET 缓存库

EasyCaching 项目简介EasyCaching 是一个开源的 .NET 缓存抽象库,由 DotNetCore 团队开发,旨在为 .NET 应用提供简单、统一、强大且可扩展的缓存解决方案。它支持内存缓存(In-Memory)、Redis、Memcached、LiteDB..

.NET 依赖注入如何一个接口注册两种实现

在.NET的依赖注入(Dependency Injection,DI)系统中,一个接口注册两种或多种实现是常见的需求,尤其是在需要根据不同场景或条件选择不同实现时。以下是一些实现方法:1. 使用 IEnumerable<T> 解析所有实现这是最..

.NET C# 过滤从富文本编辑器html里的Javascript脚本

富文本编辑器在允许用户输入丰富内容的同时,也带来了跨站脚本攻击(XSS)的风险。过滤提交的 HTML 中的 <script> 脚本是防止跨站脚本攻击(XSS)的关键步骤。在 .NET C# 服务端过滤 <script> 脚本主要有以下几种方..

ZLinq:.NET 高性能 LINQ 替代方案及其使用指南

在 .NET 开发中,LINQ(Language Integrated Query)为数据查询提供了简洁且强大的语法。然而,传统的 LINQ 在处理大量数据时可能会引发性能瓶颈,主要由于频繁的内存分配和对象创建。为解决这一问题,Cysharp 团队..

.NET使用AutoMapper简化对象映射

在.NET软件开发中,常常需要将一个对象的数据转换并映射到另一个对象上。​这种手动映射的过程既繁琐又容易出错,影响开发效率和代码可维护性。​为了解决这一问题,AutoMapper应运而生。​什么是 AutoMapper?AutoM..

.NET C# RESTful API交互Refit库使用教程

Refit 是一个 .NET C# 库,它简化了与 RESTful API 的交互。Refit 受到 Square 的 Retrofit 库的启发,它将 REST API 转换为实时接口,允许你以声明方式定义 REST API 调用。Refit 的特点1. 声明式 API 定义:Refit ..

.NET C# System.Text.Json进阶使用技巧

System.Text.Json 是 .NET 中用于处理 JSON 数据的强大库。除了基本用法外,它还提供了许多进阶技巧,可以帮助你更高效、更灵活地处理 JSON 数据。以下是一些 System.Text.Json 的进阶使用技巧:1. 自定义序列化和反..

.NET Core 使用ML.NET 机器学习分析预测股票走势

在 .NET Core 中,你可以利用 ML.NET 框架来构建机器学习模型,以预测股票价格走势。以下是一个基本的实现步骤:​1. 准备数据:​收集并整理股票的历史数据,包括日期、开盘价、最高价、最低价、收盘价和成交量等信..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制