.NET6之MiniAPI(三):Response
2022/5/11 23:17:33
本文主要是介绍.NET6之MiniAPI(三):Response,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MiniAPI中,Response的返回数据有三种格式,IResult,string,json:
-
ValueTask<string> - 这包括 string 和 Task<string>
-
T(任何其他类型,返回前端时转成json)- 这包括 Task<T> 和 ValueTask<T>
-
基于 IResult - 这包括 Task<IResult> 和 ValueTask<IResult>
1、字符串
返回字符串很简单,就是把结果转成字符串返回即可,如下:
app.MapGet("/hi", () => "Hellow Mini API");
返回结果
Content-Type类型
2、Json
json也不难,只要返回对象就可以
app.MapGet("/answers/{questionid}", (int questionId, ExamContext exam) => exam.Answers.Where(s => s.QuestionId == questionId));
结果
Content-Type
3、IResult
相对string,json,Result是就丰富的多,官方提供的如下:
这样就能适配很多场景了,比如认证的登录登出,文件下载,重定向(Redirect,LocalRedirect,RedirectToRoute),以及各种返回值状态,当然也包括返回Text,Json。
除了内置的,还可对结果进行扩展,看一个返回yaml类型的例子。
扩展类(这里引入了一个三方的对象序列化ymal字符串的库YamlDotNet)
static class ResultsExtensions { public static IResult Yaml(this IResultExtensions resultExtensions, object yamlObject) { ArgumentNullException.ThrowIfNull(resultExtensions, nameof(resultExtensions)); var serialzer = new YamlDotNet.Serialization.SerializerBuilder().Build(); return new YamlResult(serialzer.Serialize(yamlObject)); } } class YamlResult : IResult { private readonly string _yaml; public YamlResult(string yaml) { _yaml = yaml; } public Task ExecuteAsync(HttpContext httpContext) { httpContext.Response.ContentType = "yaml"; httpContext.Response.ContentLength = Encoding.UTF8.GetByteCount(_yaml); return httpContext.Response.WriteAsync(_yaml); } }
使用扩展类
app.MapGet("/yaml/questions/{id}", (int id, ExamContext exam) => Results.Extensions.Yaml(exam.Questions.Where(s => s.Id == id).Include("Answers").Select(s => new { s.Id, Question = s.Question1, s.Score, QuestionType = s.QuestionType.TypeName, SubjectType = s.SujectType.TypeName, Answers = s.Answers.Select(t => new { t.Id, Answer = t.Answer1 }) })) );
结果
content-type
想要更快更方便的了解相关知识,可以关注微信公众号
这篇关于.NET6之MiniAPI(三):Response的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#