webapi 在POST时的坑以及OracleCommand的参数绑定的坑

刚用webapi,

用$.get时,前后台的请求响应成功了,但在用$.post方法时遇到不少问题。

后搜到一英文资料,基本反映了我的问题,现摘译如下:

web api 很好,但post参数问题上,需要用些手段,有三个事你要知道

1、传基本参数进去,必须用【frombody】标注一下

public string  Post(string value)

post函数即使执行,但永远返回null 。(在我这请求时,还必须把Post的action的名称也加上,才执行)

$.post(‘/api/ttt/post‘,{value:‘hshh‘})

2、只能接收一个参数,即不允许多个 [FromBody]

“无法将多个参数(“dwdm”和“state”)绑定到请求的内容”

“Web API reads the response body at most once, so only one parameter of an action can come from the request body. If you need to get multiple values from the request body, define a complex type.
Web API最多读取响应体一次,因此只有动作的一个参数可以获自请求体。如果需要从请求体得到多个值,需要定义复合类型。”

3、传入的对象必须是 =value的格式。

大多数的框架都是要key=value,但它却偏不是。 这就是上面永远返回null的原因。要让它返回值,必须

$.post(‘/api/ttt/post‘ ,‘=‘+value)

$.post(‘/api/ttt/post‘ ,{‘‘:value} )

以上各点是我实战演练过的,看来最新的webapi也没有修改这些问题。不知道项目组当时怎么想的。

总上所述。看来我要用post传参,永远都写一个类包装一下参数吧!


最后OracleCommand的参数绑定时,虽然指定名称,但顺序必须按sql中出现的顺序。坑爹呀,这些项目组咋就不多做些工作解决这些个坑呢, 一群坑爹货!


http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api

我花了些时间看原博文下的留言,太感动人呀! 有献计献策的,也有解释webapi设计目的,简直像到社会主义终极目标一样,是一群苦中求乐,无比融洽的同志们。

最重要的是,他们似乎都是真名,看来中央的政策是要向国际接轨啦,只有我们这种乌合之众才喜欢哗众取宠!


附另外一博文:http://www.cnblogs.com/r01cn/archive/2012/12/11/2812553.html


时间: 2024-10-11 20:19:50

webapi 在POST时的坑以及OracleCommand的参数绑定的坑的相关文章

Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method 'POST' not supported (附带其余好几个坑)

yml: feign: httpclient: enabled: true properties: #feign feign.httpclient.enabled=true <!-- https://mvnrepository.com/artifact/io.github.openfeign/feign-httpclient --> <dependency> <groupId>io.github.openfeign</groupId> <artifac

WebAPI路由、参数绑定

? 一.测试Web API a)测试Web API可以用来检测请求和返回数据是否正常,可以使用Fiddler.Postman等工具.以Fiddler为例,这是一个http协议调试代理工具,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点.调试web应用.修改请求的数据,甚至可以修改服务器返回的数据. b)Fiddler会默认捕获所有进程的通信,可以在All Processes中Hide All然后在Composer-Parsed选项卡选择需要捕

ASP.NET WebAPI 05 参数绑定

ParameterBindingAttribute 在上一篇中重点讲了ModelBinderAttribute的使用场景.这一篇详细的讲一下ModelBinder背后的参数绑定原理. ModelBinderAttribute继承自ParameterBindingAttribute,从命名上就是可以看出ParameterBindingAttribute是对Action参数进行绑定的一种特性.除了ModelBinderAttribute之外,WebAPI还另外定义了ValueProviderAttr

使用ASP.Net WebAPI构建REST服务(四)——参数绑定

默认绑定方式 WebAPI把参数分成了简单类型和复杂类型: 简单类型主要包括CLR的primitive types,(int.double.bool等),系统内置的几个strcut类型(TimeSpan.Guid等)以及string.对于简单类型的参数,默认从URI中获取. 复杂类型的数据也可以直接作为参数传入进来,系统使用media-type formatter进行解析后传给服务函数.对于复杂类型,默认从正文中获取, 例如,对于如下函数 HttpResponseMessage Put(int

golang的slice作为函数参数传值的坑

直接贴代码 func sliceModify(slice []int) { // slice[0] = 88 slice = append(slice, 6) } func main() { slice := []int{1, 2, 3, 4, 5} sliceModify(slice) fmt.Println(slice) } 返回的没变,坑爹的,这个设计太那啥了,可以正确跑出效果的版本如下: func sliceModify(slice *[]int) { *slice = append(*

asp.net webapi 参数绑定总结

首先必须得更正下自己一直以来对于get请求和post请求理解的一个误区:get请求只能通过url传参,post请求只能通过body传参. 其实上面的理解是错误的,翻阅了不少资料及具体实践,正确理解应该是:get和post是http协议(规范)定义的和服务器交互的不同方法,get用于从服务器获取资源(安全和幂等),post用于修改服务器上的资源.传参方式和请求方式没有任何关系,get和post请求既可以接受url传参,也可以接收body传参,取决于服务端的参数绑定机制. OK,回到主题,webap

搭建WordPress网站时如何购买域名及进行域名绑定?

使用WordPress建立网站已经成为主流,WordPress以其自由快捷的优势迅速占领了市场.无论是WordPress自助站还是使用其他方式开发,网站的在线操作,都离不开一个先决条件,那就是域名.网站建成后,需要预先准备符合企业产品服务或品牌的域名,然后在域名注册平台上进行注册和购买.注册域名后,还需要绑定域名.那么搭建WordPress网站时如何购买域名及进行域名绑定? 域名购买过程: 1.域名选择 在选择域名时,尽量选择一个相对较短.容易记住的域名,这样用户就可以直接进入域名访问网站.例如

在python函数中默认参数的一些坑

一.默认参数 python为了简化函数的调用,提供了默认参数机制: 这样在调用pow函数时,就可以省略最后一个参数不写: 在定义有默认参数的函数时,需要注意以下: 必选参数必须在前面,默认参数在后: 设置何种参数为默认参数?一般来说,将参数值变化小的设置为默认参数. python标准库实践 python内建函数: 函数签名可以看出,使用print('hello python')这样的简单调用的打印语句,实际上传入了许多默认值,默认参数使得函数的调用变得非常简单. 二.出错了的默认参数 引用一个官

webapi简介及参数绑定

介绍:WebAPI用来开发系统间接口的技术,基于HTTP协议,返回默认是json格式.比wcf简单 更通用,更轻量级,更省流量(json格式):WebAPI尽可能复用MVC路由.ModelBinder.Filter等知识,但只是模仿webapi默认路由机制是通过http请求类型匹配Action(REST风格),而MVC的默认路由机制是通过url匹配Action.可以修改webapi默认路由机制,通过url匹配action Restfull风格:就是基于谓词语义进行通讯协议的设计(利用get.po