首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当参数直接定义为方法参数而不是模型时,IHttpActionResult结果无法绑定请求正文参数

当参数直接定义为方法参数而不是模型时,IHttpActionResult结果无法绑定请求正文参数
EN

Stack Overflow用户
提问于 2018-02-02 13:38:49
回答 1查看 104关注 0票数 3

当我将一个Guids数组作为参数直接放在我的web api操作结果中时,它找不到请求体中的任何guids并绑定它们,例如

代码语言:javascript
运行
AI代码解释
复制
[HttpPost]
public IHttpActionResult AddStores([FromBody]Guid[] Ids)
{
   ...            
}

虽然我确实在请求正文中包含了in,但它是一个guids数组。

只有当我将i放在模型中时,模型绑定器才会在请求正文中找到我的i。

例如:

代码语言:javascript
运行
AI代码解释
复制
public class AddStoresRequest
{
    public Guid[] Ids { get; set; }
}


[HttpPost]
public IHttpActionResult AddStoreUser(AddStoresRequest request)
{
     ...            
}

在这种情况下,它确实可以正确地找到ids。为什么会出现这种异常?当我在方法参数中直接使用in作为参数时,为什么模型绑定器失败?

当我构建请求时,我不使用模型...我只是在请求主体中放入了一个名为Ids的数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-02 13:48:37

默认情况下,当添加Guid[] it来请求时,您的json序列化程序会将其映射为以下内容:

代码语言:javascript
运行
AI代码解释
复制
{
   "Ids":["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]
}

这就是为什么你必须使用第二个动作实现。

如果你想使用第一个实现,你必须在body中发送类似这样的东西:

代码语言:javascript
运行
AI代码解释
复制
["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]

您必须使用自定义序列化或JArray来实现这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48583909

复制
相关文章
请求参数绑定
我们都知道,表单中请求参数都是基于 key=value 的。 SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的 例:例如:
暴躁的程序猿
2022/03/24
6010
请求参数绑定
缺省参数是编译期间绑定的,而不是动态绑定
看一个程序 #include <iostream> using namespace std; class A { public: virtual void Fun(int number = 10) { std::cout << "A::Fun with number " << number<<endl; } }; class B: public A { public: virtual void Fun(int number = 20) { std::cout << "B::Fun wi
用户1624346
2018/04/17
1K0
请求参数的绑定
public String testParam(String username,String password){
阮键
2019/12/10
7980
SpringMVC请求参数的绑定
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
7380
SpringMVC之请求参数的绑定
SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的。
yuanshuai
2022/08/22
6540
SpringMVC之请求参数的绑定
参数绑定
bind用于将一个可调用对象绑定到新的可调用对象上,新对象的参数就是被绑定对象参数列表中的占位符所占据的位置的参数 其调用形式如下:
Enterprise_
2019/11/03
1.7K0
参数绑定
bind用于将一个可调用对象绑定到新的可调用对象上,新对象的参数就是被绑定对象参数列表中的占位符所占据的位置的参数 其调用形式如下:
Enterprise_
2020/08/02
9210
快速学习-SpringMVC请求参数的绑定
SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的。 例如:
cwl_java
2020/04/08
7130
springmvc之使用@RequestParam绑定请求参数
说明:可以使用RequestParam注解来传递前端请求传过来的参数,value表示传过来的参数名,required表示是否必须,defaultValue表示默认值。当在方法中使用Int接收整型数据时,必须要指定defaultValue="0",否则可以直接用Integer来接收。
西西嘛呦
2020/08/26
3980
直接取出 post 请求中的 json、得请求体参数、查看 post 请求参数
方法如下: try{ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); StringBuffer sb = new S
微风-- 轻许--
2022/04/13
5K0
springMVC参数绑定
处理器形参中添加如下类型的参数处理注解适配器会默认识别并进行赋值。 1 HttpServletRequest 通过request对象获取请求信息 2 HttpServletResponse 通过response处理响应信息 3 HttpSession 通过session对象得到session中存放的对象 4 Model 通过model向页面传递数据,如下: //调用service查询商品信息 Items item = itemService.findItemById(id); model.addAttribute("item", item); 页面通过${item.XXXX}获取item对象的属性值。 model也可以通过modelMap或map将数据传到页面(这是因为底层就是这个类型,具体可以看看底层代码)。
intsmaze-刘洋
2018/08/29
6660
Spring MVC 参数的绑定方法
在Spring MVC中,常见的应用场景就是给请求的Url绑定参数。本篇就介绍两种最最基本的绑定参数的方式: 基于@RequestParam 这种方法一般用于在URL后使用?添加参数,比如: @R
用户1154259
2018/01/17
1K0
SpringBoot中自定义参数绑定
本文是vhr系列的第十篇,vhr项目地址https://github.com/lenve/vhr 正常情况下,前端传递来的参数都能直接被SpringMVC接收,但是也会遇到一些特殊情况,比如Date对象,当我的前端传来的一个日期时,就需要服务端自定义参数绑定,将前端的日期进行转换。自定义参数绑定也很简单,分两个步骤: 1.自定义参数转换器 自定义参数转换器实现Converter接口,如下: public class DateConverter implements Converter<String,Da
江南一点雨
2018/04/02
1.3K0
使用POJO对象绑定请求参数值(6)
SpringMVC 会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值。支持级联属性
桑鱼
2020/03/18
4370
get请求包含参数属性为数组
有些时候,我们需要使用GET请求传递数组,但是使用很多前端请求框架,以及EcmaScript自带的URLSearchParams转换的URL参数都无法直接进行转换:
阿超
2022/09/26
1.9K0
@RequestParam等参数绑定注解是怎么实现的?自定义参数绑定注解的妙用
SpringMVC参数绑定的注解有很多,如@RequestParam,@RequestBody,@PathVariable,@RequestHeader,@CookieValue等。这些注解的实现方式很类似,都是有一个对应的解析器,解析完返回一个对象,放在方法的参数上。对参数绑定注解不熟悉的看推荐阅读
Java识堂
2019/05/22
4.2K0
【C++】函数参数扩展 ( 默认参数 | 默认参数定义规则 | 默认参数定义在参数列表末尾 )
" 默认参数 " 概念 : C++ 语言 中的 函数 , 可以在 声明 函数时 , 为 函数参数 定义一个默认值 ;
韩曙亮
2023/10/15
8640
【C++】函数参数扩展 ( 默认参数 | 默认参数定义规则 | 默认参数定义在参数列表末尾 )
参数绑定---bind函数
为了用check_size来代替lambda,如何解决一元谓词接受一个参数的问题呢?
大忽悠爱学习
2021/11/15
1.2K0
mybatis @Select注解中当参数为空则不添加该参数的判断
这样整个语句是写死的,必须有2个参数,在这种模式下,如何能实现根据room和mydate是否为空来动态的拼写sql语句 比如当mydate=""
一个会写诗的程序员
2018/08/17
2.7K0
点击加载更多

相似问题

当请求包含在正文中时,缺少请求参数

44

方法上的swagger参数具有来自正文的参数,但没有模型绑定

13

当参数为null时没有结果

21

为函数参数创建静态参数而不是临时参数

11

如何定义参数类型而不是参数类型?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档