.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");

返回结果

036ee5e641f442559eabdeeb277b2374.png

Content-Type类型

9be70e9c6e56c6d55aec4554e471df71.png

2、Json

json也不难,只要返回对象就可以

app.MapGet("/answers/{questionid}", (int questionId, ExamContext exam) => exam.Answers.Where(s => s.QuestionId == questionId));

结果

d819bba852d79984aeff410a49a79193.png

Content-Type

37d3504be64235409d3a887686a120f6.png

3、IResult

相对string,json,Result是就丰富的多,官方提供的如下:

6fcb3abca0b8fb118d1d08522479d3c4.png

这样就能适配很多场景了,比如认证的登录登出,文件下载,重定向(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 })}))
);

结果

64330fb0487626988b427d9c55d0927d.png

content-type

f220058ed967c5ae0fbc565cec349917.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg speex转换为mp3或者aac

2019独角兽企业重金招聘Python工程师标准>>> 输入&#xff1a; flv格式&#xff0c;视频264编码&#xff0c;音频speex编码 -8:[rootandrew ffmpeg-3.0./ffprobe test_speex1.flv 32:ffprobe version 3.0-static32: Copyright (c) 2007-2016 the FFmpeg developers3…

python 解析器的常用options

解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v 冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行…

c语言给bmp图片加滤镜,关于BMP位图透明通道的详解制作教程, 教你输出透明的BMP位图...

我是sjmhiex啊月谢谢大家的支持 百度贴吧&#xff1a;sjmhiex吧QQ群&#xff1a;243153684BMP支持透明比较常见的方法有两种&#xff1a; 一种是32位图&#xff0c;直接就可以是透明的&#xff0c;还可以是半透明效果&#xff0c;一般都是用PNG转成的&#xff0c;或者在保存图…

QM课程02-外部功能

质量计划 对质量计划和检验计划进行基本数据的管理 物料说明 检验计划 质量检验 触发检验 具有检验计划选择和样本计算的检验处理 打印采样和检验的车间文档 记录结果和缺陷 做出使用决策并触发后续行为 质量控制 在质量级别历史的基础上的动态样本确定 使用质量控制…

Android之Lollipop DevicePolicyManager学习(上)

Android 5.0(lollipop)发布之后&#xff0c;看特性文档增加了不少有趣的东西。 最近花了一些时间&#xff0c;研究了下其中Managed Profile的概念&#xff0c;简称MP&#xff0c;记录下来作为一些经验&#xff0c;有需要的同学请参考。 简介 Managed Profile&#xff0c;简称被…

c语言时间算法如何以毫秒显示,C语言时间的方法.doc

C语言时间的方法.docC语言获取系统时间的几种方式—源于网络C语言中如何获取时间&#xff1f;精度如何&#xff1f;1 使用time_t time( time_t * timer ) 精确到秒2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 计算时间差使用double difftime( time_t time…

简述JQuery,Extjs,YUI,Prototype,Dojo等JS框架的区别和应用场景

随着web2.0的彪悍发展&#xff0c;以及浏览器端所承载的工作越来越大&#xff08;在不是很影响性能的情况下&#xff0c;开发者都习惯把能用浏览器做的事儿都让浏览器做&#xff0c;以减轻服务器的压力和带宽费用等&#xff09;。所以Javascript已经成为了web开发最最基本的要求…

怎么向小学生解释欧拉公式 e^(πi)+1=0?

全世界只有3.14 % 的人关注了爆炸吧知识前几天&#xff0c;超模君空投了一个包裹给8岁表妹。不到三秒&#xff0c;表妹就从包裹里面拿出来一条毛毯&#xff1a;表哥&#xff0c;这个毛绒绒的毯子好舒服&#xff0c;我披着毯子写作业很暖和&#xff0c;但这个图案是啥&#xff0…

正式发布!Azure Functions OpenAPI Extension

微软中国MSDN 点击上方蓝字关注我们距离Azure Functions OpenAPI Extension的预览版发布已有一年的时间&#xff0c;今天&#xff0c;我们很开心地宣布它已经正式发布了&#xff01;该版本支持.NET Core 2.1 (LTS)、3.1 (LTS)、.NET 5 和 .NET 6 (LTS)的同时&#xff0c;它还支…

Java中数据是如何存储

2019独角兽企业重金招聘Python工程师标准>>> 一&#xff1a;JAVA中数据的存储方式 ①&#xff1a;寄存器&#xff1a;这是最快的存储区&#xff0c;因为它位于不同于其他存储区的地方———处理器内部。但是寄存器的数量极其有限&#xff0c;所以寄存器根据需求进行…

代码重构五

2014年3月3日 10:13:25 今天使用frameset时&#xff0c;发现。在框架的src页面里&#xff0c;如果引用 base_url() 载入的页面一片空白。转载于:https://www.cnblogs.com/jsRunner/p/3577832.html

Android之Lollipop DevicePolicyManager学习(下)

转载&#xff1a;http://blog.csdn.net/guiyu_1985/article/details/42968781 3. 如何在主账户与被管理者账户之间做数据通信。 a) 什么是userID 刚才提到&#xff0c;Lollipop用来区分主账户与被管理账户的其实是一个int型数值userID。 从UserHandler.class可…

oracle 时间转化函数及常见函数 .

摘自: http://blog.csdn.net/feifei666888/article/details/4835685 两种时间转换格式 plsql> select to_date(2005-01-01 13:14:20,yyyy-MM-dd HH24:mi:ss) from dual; select date‘2005-01-01’ from dual; 按规定格式 获得系统时间 如下&#xff1a; select to_char(sys…

详解:从Greenplum、Hadoop到现在的阿里大数据技术

对于企业来说&#xff0c;但是到底云计算是什么呢&#xff1f;相信很多企业都有这样的困惑&#xff0c;让我们一起回到这个原始的起点探讨究竟什么是云计算&#xff1f;云计算对于企业而言到底意味什么&#xff1f;云计算的三条发展路径及三种落地形态 当回到最初的起点再审视云…

技术分享 | 【构建服务端SDK】之连接中心统一调用SDK

源宝导读&#xff1a;微服务架构与传统的单体式方案的最大不同是微服务将应用的核心功能拆分成多项服务。每项服务可以单独构建和部署。服务之间需要互相通信。假设服务间每次通信都需要在调用方编码操作&#xff0c;那么必定会增加很大的工作量&#xff0c;并且造成代码冗余并…

android动态化ui框架,动态化高性能的 UI 框架 Virtualview-Android

软件介绍Virtualview-Android 是一个虚拟化组件&#xff0c;是 Tangram 模型在 2.0 版本补充的 UI 开源库。它开创了一种虚拟化开发基础控件的技术&#xff0c;使用方只要按照指定协议实现一个基础控件的尺寸计算、绘制逻辑、布局逻辑&#xff0c;即能实现在宿主容器的 canvas …

Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)

位运算符主要针对二进制&#xff0c;它包括了&#xff1a;“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符&#xff0c;但逻辑运算符是针对两个关系运算符来进行逻辑运算&#xff0c;而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运…

关于Webapp的注意事项

meta标签<meta name"viewport" content"widthdevice-width, initial-scale1.0, user-scalableno, minimum-scale1.0, maximum-scale1.0">宽度&#xff1d;设备宽度&#xff0c;初始比例&#xff1d;1&#xff0c;阻止放大&#xff0c;最小比例&#…