.NET6之MiniAPI(三):Response
生活随笔
收集整理的這篇文章主要介紹了
.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也不難,只要返回對象就可以
結果
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);} }使用擴展類
結果
content-type
總結
以上是生活随笔為你收集整理的.NET6之MiniAPI(三):Response的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何延迟一个 Task 的执行 ?
- 下一篇: 正式发布!Azure Functions