iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >.NET Core API格式化输出对象OutputFormatter怎么用
  • 748
分享到

.NET Core API格式化输出对象OutputFormatter怎么用

2023-06-30 09:06:06 748人浏览 泡泡鱼
摘要

这篇“.net Core api格式化输出对象OutputFORMatter怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,

这篇“.net Core api格式化输出对象OutputFORMatter怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“.NET Core API格式化输出对象OutputFormatter怎么用”文章吧。

相信大家在项目中都用过统一响应参数模板。

先声明一个响应模板类:

public class ResponseDto{    public int code { get; set; }    public string msg { get; set; }    public object data { get; set; }}

再定义返回成功和失败的方法:

public IActionResult Success(object data){return ......}public IActionResult Fail(string msg){return ......}

在接口返回时统一调用:

[HttpGet]public IActionResult Get(){var data = new WeatherForecast() { Date = DateTime.Now };return Success(data);}

.NET Core API格式化输出对象OutputFormatter怎么用

当然了,这篇文章所讲的OutputFormatter和上面的统一模板不冲突哈,存在共通之处,都是格式化响应参数嘛,拿来做个引子。

OutputFormatter

OutputFormatter是所有格式化输出的基类,有唯一的子类:TextOutputFormatter,同时TextOutputFormatter又有一大堆子类:

  • JSONOutputFormatter

  • NewtonsoftjsonOutputFormatter

  • StrinGoutputFormatter

  • SystemTextJsonOutputFormatter

  • XmlDataContractSerializerOutputFormatter

  • XmlSerializerOutputFormatter

如果不配置任何响应参数输出格式,ASP.net core api响应参数默认的输出格式就是json

猴:这个接口给我返回xml,我不要json

我:你是不是脑子有毛病?好好的json不用用xml

得,前端大佬得要求还是得满足不是,这时候有些同学是不是已经去百度:.Net怎么将对象转换成xml?

No No No,这时候就轮到OutputFormatter的孙子 XmlDataContractSerializerOutputFormatter 出场了。

只需要简单给接口配置一个属性就搞定啦。

[Produces("application/xml")][HttpGet]public WeatherForecast Get(){return new WeatherForecast() { Date = DateTime.Now };}

我们来运行看一看:

.NET Core API格式化输出对象OutputFormatter怎么用

wtf,怎么会406

406:表示客户端无法解析服务端返回的内容。说白了就是后台的返回结果前台无法解析就报406错误。

哦,原来是忘了在Startup中配置我们的孙子XmlDataContractSerializerOutputFormatter

services.AddControllers((c) =>{c.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());});

.NET Core API格式化输出对象OutputFormatter怎么用

注意:不只是没有在Startup中会出现406哦,以下情况也会出现:

  • contentType不存在

  • contentType与响应参数不匹配

OutputFormatter扩展

上面介绍了内置OutputFormatter的使用,那如果我们想自定义呢?当然也是可以的。

下面我们就用自定义的OutputFormatter实现顶部响应模板的效果:

public class ObjectOutputFormatter : TextOutputFormatter{public ObjectOutputFormatter(){SupportedEncodings.Add(Encoding.UTF8);SupportedEncodings.Add(Encoding.Unicode);// 这就是我们自定义contentType的名称SupportedMediaTypes.Add("text/object");}public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding){if (context == null){throw new ArgumentNullException(nameof(context));}if (selectedEncoding == null){throw new ArgumentNullException(nameof(selectedEncoding));}string text = JsonConvert.SerializeObject(new ResponseDto(){msg = "成功,自定义的哦",code = 200,data = context.Object});var response = context.HttpContext.Response;await response.WriteAsync(text, selectedEncoding);}}[Produces("text/object")][HttpGet]public WeatherForecast Get(){return new WeatherForecast() { Date = DateTime.Now };}public void ConfigureServices(IServiceCollection services){services.AddControllers((c) =>{c.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());// 我们自定义的输出格式c.OutputFormatters.Add(new ObjectOutputFormatter());});}

搞定,我们来看看效果:

.NET Core API格式化输出对象OutputFormatter怎么用

ActionFilterAttribute

有些同学可能会想到过滤器,是的,上面的效果过滤器也能实现:

public class ResultFilter : ActionFilterAttribute{    public override void OnResultExecuting(ResultExecutinGContext context)    {        ResponseDto result = new ResponseDto();        result.code = 200;        result.msg = "成功,ResultFilter";        var properties = context.Result.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);        result.data = properties.FirstOrDefault(c => c.Name == "Value").GetValue(context.Result);        context.Result = new JsonResult(result);        base.OnResultExecuting(context);    }}[TypeFilter(typeof(ResultFilter))][HttpGet]public WeatherForecast Get(){return new WeatherForecast() { Date = DateTime.Now };}

.NET Core API格式化输出对象OutputFormatter怎么用

猴:有了过滤器为什么还搞个OutputFormatter呢?

我:不能因为过滤器可以实现同样的功能就认为OutputFormatter多余了,很显然过滤器的操作对象是请求/响应上下文,而OutputFormatter的操作对象则是响应参数。再说了,ActionFilterAttribute过滤器只是众多过滤器的一种。

猴:那过滤器和自定义OutputFormatter一起用会是什么效果呢?是不是像下面这样?

.NET Core API格式化输出对象OutputFormatter怎么用

我:不是,过滤器和自定义OutputFormatter同时使用,生效的只有过滤器,不信可以打断点试一下哦。

[Produces("text/object")][TypeFilter(typeof(ResultFilter))][HttpGet]public WeatherForecast Get(){return new WeatherForecast() { Date = DateTime.Now };}

.NET Core API格式化输出对象OutputFormatter怎么用

以上就是关于“.NET Core API格式化输出对象OutputFormatter怎么用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: .NET Core API格式化输出对象OutputFormatter怎么用

本文链接: https://www.lsjlt.com/news/327962.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .NET Core API格式化输出对象OutputFormatter怎么用
    这篇“.NET Core API格式化输出对象OutputFormatter怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,...
    99+
    2023-06-30
  • .NETCoreAPI之格式化输出对象OutputFormatter
    相信大家在项目中都用过统一响应参数模板。 先声明一个响应模板类: public class ResponseDto { public int code { get; set;...
    99+
    2024-04-02
  • mysql时间怎么格式化输出
    mysql时间格式化输出的方法:在mysql中执行以下sql语句格式化即可。select now(); #获取当前时间select date_format(now(),'%Y-%m-%d %H...
    99+
    2024-04-02
  • python格式化输出%s与format()的用法对比
    目录1、python格式化输出历史起源2、为什么要学习python3支持的新式格式化输出呢?3、基本用法format()支持位置格式化填充,%s不支持;4、填充和对齐1)填充(只能用...
    99+
    2024-04-02
  • 怎么使用python的f-string格式化输出
    本篇内容介绍了“怎么使用python的f-string格式化输出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!f-string简介pytho...
    99+
    2023-06-01
  • C语言格式化输出函数printf怎么使用
    这篇文章主要介绍“C语言格式化输出函数printf怎么使用”,在日常操作中,相信很多人在C语言格式化输出函数printf怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言格式化输出函数printf怎...
    99+
    2023-07-05
  • 怎么在python中利用print函数格式化输出
    今天就跟大家聊聊有关怎么在python中利用print函数格式化输出,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack...
    99+
    2023-06-14
  • C语言怎么以%d格式化输出整数
    这篇文章主要讲解了“C语言怎么以%d格式化输出整数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么以%d格式化输出整数”吧!%d 格式化输出整数#include <stdio....
    99+
    2023-06-16
  • 使用Python怎么在数据库中格式化输出文档
    使用Python怎么在数据库中格式化输出文档?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。思路首先,数据已经录入库,需要python能读取数据库,可使用mysq...
    99+
    2023-06-08
  • 使用PHP的json_encode()函数将数组或对象转换为JSON字符串并格式化输出
    使用PHP的json_encode()函数将数组或对象转换为JSON字符串并格式化输出,可以让数据在不同的平台和语言之间进行传递和交换变得更加容易。本文将介绍json_encode()函数的基本用法,以及如何将JSON字符串格式化输出。一、...
    99+
    2023-11-03
    PHP 格式化 JSON
  • 怎么使用Net将HTML简历导出为PDF格式
    这篇“怎么使用Net将HTML简历导出为PDF格式”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Net将HTML简历...
    99+
    2023-07-05
  • python怎么使用prettytable内置库美化输出表格
    这篇文章主要介绍“python怎么使用prettytable内置库美化输出表格”,在日常操作中,相信很多人在python怎么使用prettytable内置库美化输出表格问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-02
  • 使用java怎么对BigDecimal进行格式化
    使用java怎么对BigDecimal进行格式化?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合...
    99+
    2023-06-14
  • 怎么在 ASP.NET Core 中使用内置的 Json 格式化日期
    这篇文章主要介绍“怎么在 ASP.NET Core 中使用内置的 Json 格式化日期 ”,在日常操作中,相信很多人在怎么在 ASP.NET Core 中使用内置的 Json 格式化日期 问题上存在疑惑,小...
    99+
    2024-04-02
  • Remix路由模块输出对象loader函数怎么使用
    本篇内容介绍了“Remix路由模块输出对象loader函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!主要内容Remix load...
    99+
    2023-07-05
  • Remix路由模块输出对象handle函数怎么使用
    这篇“Remix路由模块输出对象handle函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Remix路由模块输出...
    99+
    2023-07-06
  • 怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出
    这篇文章主要介绍“怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出”,在日常操作中,相信很多人在怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2024-04-02
  • 怎么用Python输出简洁美观的文本化表格
    本篇内容主要讲解“怎么用Python输出简洁美观的文本化表格”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python输出简洁美观的文本化表格”吧!一、前言最近在用 Python 写一个小...
    99+
    2023-06-15
  • 怎么使用PHP输出数据并转成JS可读格式
    这篇文章主要讲解了“怎么使用PHP输出数据并转成JS可读格式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PHP输出数据并转成JS可读格式”吧!PHP 输出 JSON 格式现在,JS...
    99+
    2023-07-05
  • 怎么在Android中利用SpannableString对内容进行格式化
    这篇文章将为大家详细讲解有关怎么在Android中利用SpannableString对内容进行格式化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。要实现的效果:将话题进行变色并且可以点击提示...
    99+
    2023-05-31
    android spannablestring les
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作