.net core 接口,动态接收各类型请求的参数

[HttpPost]
public async Task<IActionResult> testpost([FromForm] object info)

{
    //Postman工具测试结果:
    //FromBody,Postman的body只有=raw+json时才进的来
    //参数为空时,Body(form-data、x-www-form-urlencoded)解析到的数据也有所不同

    Dictionary<string,object> parmsVals=new Dictionary<string,object>();
    try
    {
        if (HttpContext.Request.Body != null)
        {
            Stream _stream = HttpContext.Request.Body;
            //_stream.Position = 0;
            using (StreamReader reader = new StreamReader(_stream, Encoding.UTF8))
            {
                string strv = await reader.ReadToEndAsync();
                if (!string.IsNullOrEmpty(strv) && strv.Trim().StartsWith("{") && strv.Trim().EndsWith("}"))
                {
                    parmsVals = JsonConvert.DeserializeObject<Dictionary<string, object>>(strv.Trim());
                }
                else
                {
                    parmsVals.Add("stream_str", strv);
                }
            }
        }
    }
    catch { }
 

    if (info != null && JsonConvert.SerializeObject(info).Trim()!="{}")
    {
        parmsVals.Add("info", JsonConvert.SerializeObject(info));
    }
    try
    {
        var files = Request.Form.Files;
        if (files != null && files.Count > 0)
        {

        }
    }
    catch { }
   
    
    if (HttpContext.Request.Query.Keys.ToList() != null)
    {
        List<string> lst = HttpContext.Request.Query.Keys.ToList();
        foreach (string key in lst)
        {
            if (!parmsVals.ContainsKey(key))
            {
                parmsVals.Add(key, Request.Query[key].ToString().Trim());
            }
           

        }
    }
    try
    {
      
        
        if (HttpContext.Request.Form != null)
        {
            List<string> lst = HttpContext.Request.Form.Keys.ToList();
            foreach (string key in lst)
            {
                if (!parmsVals.ContainsKey(key))
                {
                    parmsVals.Add(key, Request.Form[key].ToString().Trim());
                }
            }
        }
    }
    catch(Exception ex)
    {
        string msg = ex.Message;
    }
    

    //Values/testurl
    return Content(JsonConvert.SerializeObject(parmsVals));
}

一、Body以 from-data 传参数

二、Body以 x-www-from-urledcoded  传参数

三、Body以 raw+JSON 传参数

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python装饰器执行的顺序你知道吗

1. 引言 前面的文章中&#xff0c;讲到了 Python 装饰器的基础使用方式&#xff0c;在实际使用中&#xff0c;可能会遇到一个函数使用多个装饰器的情况&#xff0c;这个时候装饰器的顺序同样至关重要。本文将讨论装饰器的顺序如何影响函数的行为&#xff0c;并通过几个例子来说…

嵌入式操作系统FreeRTOS文件详解

系列文章目录 嵌入式操作系统FreeRTOS文件详解 嵌入式操作系统FreeRTOS文件详解 系列文章目录FreeRTOS下载 FreeRTOS下载 官网下载解压后得到的文件&#xff0c;如下图所示&#xff1a; 打开图 1.3.1.2 中的 FreeRTOS 子文件夹&#xff0c;就能够看到 FreeRTOS 内核的文件&…

使用Jupyter Notebook进行数据科学项目

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Jupyter Notebook进行数据科学项目 Jupyter Notebook 简介 安装 Jupyter Notebook 创建和管理 Notebook 编写和运行代码 示例…

火山引擎VeDI数据服务平台:在电商场景中,如何解决API编排问题?

01 平台介绍 数据服务平台可以在保证服务高可靠性和高安全性的同时&#xff0c;为各业务线搭建数据服务统一出口&#xff0c;促进数据共享&#xff0c;为数据和应用之间建立了一座“沟通桥梁”。 同时&#xff0c;解决数据理解困难、异构、重复建设、审计运维困难等问题&#x…

C#进阶1

C#进阶1 本文章主要介绍C#的进阶知识&#xff0c;如反射&#xff0c;特性.... 参考视频链接 原码 文章目录 C#进阶1反射步骤泛型反射调用方法 获取属性 特性特性的定义步骤扩展枚举练习 反射 在 C# 中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&a…

【深度学习】合合信息:生成式AI时代的内容安全与系统构建

生成式AI时代的内容安全与系统构建 一、生成式 AI 的发展现状二、图像内容安全问题2.1、举几个伪造数字内容的例子2.1.1、谣言检测2.1.2、欺诈图像识别2.1.3、伪造信息 2.2、伪造文档/证照检测应用场景2.2.1、目前图像篡改主要涉及以下几个场景 2.3、合合信息伪造文档/证照检测…

软件系统安全保证措施,质量保证措施方案(Word原件套用)

系统安全保证措施是构建稳固防御体系的核心&#xff0c;旨在全方位保障信息系统的安全性。以下是对这七项措施的简要概述&#xff1a; 一、身份鉴别&#xff1a;采用多种认证方式&#xff0c;如密码、生物识别等&#xff0c;确保用户身份的准确无误&#xff0c;防止非法入侵。 …

gozero--环境安装和api语法

文章目录 前言环境安装安装go ctl安装protoc安装go-zero安装etcd配置环境变量安装插件 二、api语法说明syntaxtypeserverservicedoc命令转换 前言 go-zero是go语言的微服务框架&#xff0c;微服务内容很多&#xff0c;我希望我这一篇可以绘制出完整的地图&#xff0c;帮助需要…

vue中el-table显示文本过长提示

1.el-table设置轻提示:show-overflow-tooltip“true“&#xff0c;改变轻提示宽度

在VS中安装chatGPT

2、在VSCode中打开插件窗口 3、输入ChatGPT 4、这里有个ChatGPT中文版&#xff0c;就它了 5、安装 6、这时候侧边栏多了一个chatGPT分页图标&#xff0c;点击它 7、打个招呼 8、好像不行 9、看一下细节描述 10、根据要求按下按下快捷键 Ctrl Shift P 11、切换成国内模式 12、…

sublime可以写python吗

首先你需要安装一个Sublime Text&#xff08;http://www.sublimetext.com/&#xff09;和一个Python&#xff08;https://www.python.org/downloads/&#xff09;&#xff0c; 接下来打开Sublime Text&#xff1a; 1、如下图所示&#xff0c;点击菜单栏中的Tools —> Buil…

初始Docker

概述&#xff1a; 容器&#xff0c;作为云原生技术的重要组成部分&#xff0c;与虚拟机一样&#xff0c;均属于虚拟化技术的范畴。然而&#xff0c;容器技术以其独特的优势&#xff0c;在虚拟化领域中脱颖而出。与虚拟机不同&#xff0c;容器能够摆脱操作系统的束缚&#xff0…

MATLAB函数,用于计算平均误差、误差最大值、标准差、均方误差、均方根误差

文章目录 源代码使用示例:计算公式1. 平均误差 (Mean Error, ME)2. 误差最大值 (Maximum Error, ME)3. 标准差 (Standard Deviation, SD)4. 均方误差 (Mean Squared Error, MSE)5. 均方根误差 (Root Mean Squared Error, RMSE) 总结 以下是一个MATLAB函数&#xff0c;用于计算常…

Axure设计之左右滚动组件教程(动态面板)

很多项目产品设计经常会遇到左右滚动的导航、图片展示、内容区域等&#xff0c;接下来我们用Axure来实现一下左右滚动的菜单导航。通过案例我们可以举一反三进行其他方式的滚动组件设计&#xff0c;如常见的上下滚动、翻页滚动等等。 一、效果展示&#xff1a; 1、点击“向左箭…

软考攻略/超详细/系统集成项目管理工程师/基础知识分享19

7.1 系统集成基础&#xff08;掌握&#xff09; 系统集成一般可以分为软件集成、硬件集成、网络集成、数据集成和业务应用集成等。 1、系统集成概念理解 软硬件系统集成是一种系统的思想和方法&#xff0c;它虽然涉及软件和硬件等技术问题&#xff0c;但绝不仅仅是技术问题 软硬…

数据库Redis篇

系列文章目录 第一章 C/C语言篇第二章 计算机网络篇第三章 操作系统篇第四章 数据库MySQL篇第五章 数据库Redis篇第六章 场景题/算法题第七篇 常见HR问题篇 本系列专栏&#xff1a;点击进入 后端开发面经 关注走一波 秋招阶段&#xff0c;面过很多大中小厂&#xff0c;积攒了…

SpringAOP技术

目录 一、概念引入 1.引入依赖 2.工具类 3.实体类 4.持久层实现类 5.业务层实现类 6.配置文件 7.测试类 8.运行 查看数据库&#xff1a; 9.现在如果转账过程中出现异常 AccountServiceImpl(模拟异常) 再运行&#xff1a; 查看数据库&#xff1a; 10.现在做事务…

从富文本窥探苹果的代码秘密

从富文本窥探苹果的代码秘密 背景 在我们的业务场景下&#xff0c;为突出诸如 “利益点”和“利率” 等特性以推动订单成交&#xff0c;引入了 “富文本” 这一概念。富文本具备丰富格式的文本展示与编辑功能。然而&#xff0c;恰是由于富文本具有 “多样式”“复杂排版” 等特…

恒创科技:如何知道一台服务器能承载多少用户?

如何知道一台服务器能承载多少用户?其实服务器承载能力并非一个单一固定的数值&#xff0c;而是由多种因素共同决定的动态指标&#xff0c;所以想知道能承载的访客量&#xff0c;我们要先搞清楚究竟有哪些因素会影响服务器承载访客的数量。 影响服务器承载访客的因素&#xff…

vue3配置eslint代码规划和prettier自动格式化

eslint 安装依赖&#xff1a;npm install -D eslint/create-config初始化&#xff1a;npx eslint --init初始化后会在项目中自动创建eslint.config.js文件&#xff0c;把以下内容复制粘粘替换 import globals from "globals"; import pluginJs from "eslint/j…