首页 程序笔记 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 Core 中替代 System.Drawing 的图像处理库:ImageSharp、SkiaSharp、Magick.NET 等对比分析

随着 .NET Core / .NET 6+ 平台对跨平台支持的加强,以及 System.Drawing.Common 在非 Windows 平台上的限制日益凸显,越来越多的开发者需要寻找合适的替代方案。微软从 .NET 6 起明确指出,System.Drawing.Common ..

Access to the path 'C:\Windows\TEMP\ASPNETCORE_xxx.tmp' is denied. 解决方法

.NET 网站上传文件时报错:System.InvalidOperationException: The exception handler configured on ExceptionHandlerOptions produced a 404 status response. This InvalidOperationException containing the ori..

如何显著提升 .NET 应用的启动速度:实用技巧与最佳实践

在现代软件环境下,用户对应用启动速度的容忍度非常低——启动过程若太慢,就可能损失首次体验和用户留存。对于 .NET 应用(包括 ASP.NET Core、桌面应用、服务程序等),启动性能优化是一项必须重视的工..

Blazor 与传统 MVC 对比详解:如何为你的 .NET 项目选择合适框架

在 .NET 世界里,Web 应用长期以来主要依靠 MVC(Model-View-Controller) 架构加上 Razor 视图渲染。但近年来随着前端交互需求增强、单页应用(SPA)趋势普及,微软推出 Blazor(支持在浏览器运行 C#)为 .NET 开发..

.NET Web API 文档库全对比:Swagger、NSwag、Scalar 选哪个?

在 .NET 生态中,Web API 已成为主流后端服务形式。对于 API 项目而言,良好的文档不仅能提升开发效率、易用性,还能支撑客户端、第三方接入、测试、运维、协作等环节。近年来,除了传统的 Swagger / Swashbuckle,..

在 ASP.NET Core 中:修改 appsettings 后程序会自动重启吗?详解与实践

在日常 ASP.NET Core 开发中,很多人疑惑:当修改 appsettings.json 或其他配置文件后,程序会自动重启吗?答案是:不一定。具体行为取决于托管环境、配置加载方式、以及代码中是否支持“热重载”或&ldquo..

如何使用 .NET 与 C# 利用 FluentFTP 库实现可靠的 FTP 文件传输

在许多企业系统与网络应用中,FTP(File Transfer Protocol)或 FTPS(FTP over SSL/TLS)仍然是文件传输的常见方案。使用标准的 FTP 客户端类固然可行,但在可靠性、可维护性与功能性上往往难以满足复杂需求。Fluen..

2025 年最新 .NET Redis 客户端库对比测评:性能、功能与适用场景解析

随着 .NET 应用对高性能分布式缓存与消息通讯需求不断提升,Redis 成为后端架构中的关键组件之一。然而,如何在 .NET 生态选择合适的 Redis 客户端库,却是一项需要深入考量的问题。本文从性能、功能扩展、安全许可..

.NET 中用 C# 构建布隆过滤器(Bloom Filter)实战教程

布隆过滤器是一种空间高效的概率型数据结构,常用于快速判断某元素绝对不存在,从而优化缓存、防止缓存穿透或数据库重复查询场景。尤其在 .NET 系统中,它能显著减少数据库或其他后端服务的压力。.NET 上常用的布隆..

.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 握手未能成功完成,导致连接被意外关闭。​以下是一..

发表回复

返回顶部

微信分享

微信分享二维码

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

链接已复制
蜂鸟影院2048影视资源论坛熊猫影视河马影视星辰影视萝卜影院八哥电影网人人看电影无忧影视网橙子影视网叮当影视网天天影视网青青影视网电影天堂开心追剧网西瓜影院麻花影视网70影视网年钻网茶小舍电影藏影堂新神州影域煮酒观影体积影视爱看影院星光电影至尊影院极影公社超清视界