.NET6之MiniAPI(三):Response
MiniAPI中,Response的返回?cái)?shù)據(jù)有三種格式,IResult,string,json:
ValueTask<string> - 這包括 string 和 Task<string>
T(任何其他類型,返回前端時(shí)轉(zhuǎn)成json)- 這包括 Task<T> 和 ValueTask<T>
基于 IResult - 這包括 Task<IResult> 和 ValueTask<IResult>
1、字符串
返回字符串很簡單,就是把結(jié)果轉(zhuǎn)成字符串返回即可,如下:
app.MapGet("/hi", () => "Hellow Mini API");返回結(jié)果
Content-Type類型
2、Json
json也不難,只要返回對象就可以
結(jié)果
Content-Type
3、IResult
相對string,json,Result是就豐富的多,官方提供的如下:
這樣就能適配很多場景了,比如認(rèn)證的登錄登出,文件下載,重定向(Redirect,LocalRedirect,RedirectToRoute),以及各種返回值狀態(tài),當(dāng)然也包括返回Text,Json。
除了內(nèi)置的,還可對結(jié)果進(jìn)行擴(kuò)展,看一個(gè)返回yaml類型的例子。
擴(kuò)展類(這里引入了一個(gè)三方的對象序列化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);} }使用擴(kuò)展類
結(jié)果
content-type
總結(jié)
以上是生活随笔為你收集整理的.NET6之MiniAPI(三):Response的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何延迟一个 Task 的执行 ?
- 下一篇: .NET 6新特性试用 | 自动生成高性