返回
MiniAPI参数绑定 服务注入 响应输出使用示例
2022-11-23
1961 1在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.Ok | 200 | application/json | 将状态代码设置为 200,并包含可选的 JSON 响应。 |
Results.Json | 200 | application/json(默认),可配置 | 使用可选的序列化选项编写 JSON 响应。 |
Results.Text | 200 | text/plain(默认),可配置 | 编写文本响应。 |
Results.Bytes | 200 | application/octet-stream(默认),可配置 | 将响应编写为字节。 |
Results.Stream | 200 | application/octet-stream(默认),可配置 | 将字节流写入响应。 |
Results.File | 200 | application/octet-stream(默认),可配置 | 使用 content-disposition 标头将文件流式传输至响应以下载。 |
Results.Created | 201 | application/json | 将状态代码设置为 201,并包含可选的 JSON 响应和位置标头。 |
Results.Accepted | 202 | application/json | 将状态代码设置为 202,并包含位置标头。 |
Results.NoContent | 204 | 空值 | 将状态代码设置为 204。 |
Results.BadRequest | 400 | 空值 | 将状态代码设置为 400,并包含可选的 JSON 响应。 |
Results.ValidationProblem | 400 | 空值 | 将问题详细信息 JSON 对象写入包含验证错误的响应。 |
Results.Unauthorized | 401 | 空值 | 将状态代码设置为 401。 |
Results.NotFound | 404 | 空值 | 将状态代码设置为 404,并包含可选的 JSON 响应。 |
Results.Conflict | 409 | 空值 | 将状态代码设置为 409,并包含可选的 JSON 响应。 |
Results.UnprocessableEntity | 422 | 空值 | 将状态代码设置为 422,并包含可选的 JSON 响应。 |
Results.Problem | 500(默认),可配置 | 空值 | 将问题详细信息 JSON 对象写入响应。 |
您可能感兴趣:
阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价
领取 通义灵码 免费使用资格 兼容 Visual Studio Code、Visual Studio、JetBrains IDEs 等主流编程工具, 为你提供高效、流畅、舒心的智能编码体验!
相关阅读
.NET Core如何记录方法运行时间
.NET Core+Vue.js实现JWT身份验证
将 .NET Core 应用程序发布为 Windows 服务
在.NET Core应用程序中使用Polly实现重试模式
.NET Core c#使用SkiaSharp压缩图片
PDFiumCore | .NET Core PDF 处理渲染库
.NET Core最新使用Session的方法
ASP.NET Core使用BuildBundlerMinifier捆绑压缩样式JS文件
PluginCore 基于 ASP.NET Core 的轻量级插件框架
.NET Core C#使用SixLabors.ImageSharp图像处理库
Amanda
Mini API有哪些应用场景呢?一般都直接用WebAPI吧