net6全局api过滤统一返回格式

2024-03-30 17:52

本文主要是介绍net6全局api过滤统一返回格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开发过程中我们的api接口返回格式如果不统一的话,前端去解析起来可能会比较麻烦,我们应该统一返回形式,固定数据的存放。

创建特性

using Identification.Domain.Shared.CustomAttribute.Model;
using Identification.Domain.Shared.CustomAttribute;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc;
using System.Net;namespace Test.Host.Common.CustomAttribute
{public class MyActionFilterAttribute : IActionFilter{public void OnActionExecuting(ActionExecutingContext context){if (!context.ModelState.IsValid){List<string> errorList = new List<string>();var result = context.ModelState.Keys.SelectMany(key => context.ModelState[key]!.Errors.Select(x => new ValidationError() { fields = key, data = x.ErrorMessage })).ToList();result.ForEach(x =>{errorList.Add($"{x.fields}:{x.data}");});context.Result = new ObjectResult(new BaseResultModel{code = 400,message = errorList.Count > 0 ? string.Join(',', errorList) : "error:请参考详细信息",data = result});}}public void OnActionExecuted(ActionExecutedContext context){ // 如果方法上有 SkipMyActionFilterAttribute 特性,则跳过过滤器的处理  if (context.ActionDescriptor.EndpointMetadata.Any(em => em is SkipMyActionFilterAttribute)) return; var statusCode = HttpStatusCode.OK;var result = context.Result as ObjectResult;context.Result = new OkObjectResult(new BaseResultModel{code = (int)statusCode,message = "success",data = result?.Value});}}
}

注册

在Program.cs文件中注册特性类

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers(options =>
{options.Filters.Add<MyActionFilterAttribute>();//控制器方法的过滤
});

查看效果

{"code": 200,"message": "success","data": {"access_token": "eyJhbGciOiJodHRwOi8vd3d3LnczL","refresh_token": "edc123-259f-4f0d-9fa0-9375c17d8c64","expires_in": 86400,"token_type": "Bearer"}
}

这篇关于net6全局api过滤统一返回格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862169

相关文章

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

python dict转换成json格式的实现

《pythondict转换成json格式的实现》本文主要介绍了pythondict转换成json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 一开始你变成字典格式data = [ { 'a' : 1, 'b' : 2, 'c编程' : 3,

java streamfilter list 过滤的实现

《javastreamfilterlist过滤的实现》JavaStreamAPI中的filter方法是过滤List集合中元素的一个强大工具,可以轻松地根据自定义条件筛选出符合要求的元素,本文就来... 目录1. 创建一个示例List2. 使用Stream的filter方法进行过滤3. 自定义过滤条件1. 定

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

Redis如何实现刷票过滤

《Redis如何实现刷票过滤》:本文主要介绍Redis如何实现刷票过滤问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言一、概述二、技术选型三、搭建开发环境四、使用Redis存储数据四、使用SpringBoot开发应用五、 实现同一IP每天刷票不得超过次数六

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

Java中使用注解校验手机号格式的详细指南

《Java中使用注解校验手机号格式的详细指南》在现代的Web应用开发中,数据校验是一个非常重要的环节,本文将详细介绍如何在Java中使用注解对手机号格式进行校验,感兴趣的小伙伴可以了解下... 目录1. 引言2. 数据校验的重要性3. Java中的数据校验框架4. 使用注解校验手机号格式4.1 @NotBl