JayData.OData v.3操作POST参数接收为空
JayData. OData v.3 Action POST parameters received as null
My OData POST Action将参数接收为null,因为它将参数作为主体的一部分从JayData客户端获取,并期望它们作为URI的一部分。
我已经创建了一个基于WCF Data Services 5.6.0和Llblgen Pro 4.0的OData服务(只是目前最好的.Net ORM)。它有一个POST操作:
[WebInvoke(Method = "POST")]
public void DeletePeople(string guidsToDelete) {...}
OData v.3标准不支持将参数作为主体的一部分传递给POST操作,但希望它们位于URI的queryString部分。也就是说,在System.Data.Services.Client中,必须将它们设置为UriOperationParameter,而不是BodyOperationParameter。
我可以在JayData的ServiceOperation定义中配置发送参数的位置吗?或者我必须假设它现在不支持带参数的POST吗?
// This works, of course :-)
// JayData client. EntityContext definitions. Changed to GET instead of POST
'DeletePeople': { type: $data.ServiceOperation, method: 'GET', params: [{ name: 'guidsToDelete', type: 'Edm.String' }] }
// Updated server operation (not action any more):
[WebGet]
public void DeletePeople(string guidsToDelete)
TIA,
Raist
JayData期望立即通过WebGet
属性发布服务操作。你对OData标准是正确的,它确实期望URL参数中POST操作的params,但这很奇怪,因为经典的WCF和WebAPI都在主体中使用params。。。这是一个标准,所以必须遵守。如果您不能使用WebGet属性,请随意提出支持POST调用方法的功能:
- JayData积压
- JayData Github问题列表
我认为您将操作与服务操作混淆了。
操作可能会产生副作用,服务操作不得产生副作用。服务操作在OData v3.0中被标记为遗留功能,因为函数可以实现相同的结果。请注意,函数不使用POST——它们必须使用GET方法,因此在查询字符串中传递任何参数。
您最好参考协议规范文档,该文档是完整的规范(在线内容不完整)。
根据OData v3.0规范,使用POST方法在请求主体(而不是请求URI)中传递与操作相关联的任何参数。以下是规范文档中的操作示例:
HTTP请求:
POST /Customers('ALFKI')/SampleEntities.CreateOrder HTTP/1.1 Host: host
Content-Type: application/json;odata=verbose DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
If-Match: ...ETag...
Content-Length: ####
{
"quantity": 2,
"discountCode": "BLACKFRIDAY"
}
HTTP响应:
HTTP/1.1 204 OK
Date: Fri, 11 Oct 2008 04:23:49 GMT

- 使用AJAX POST从javascript到带有Strong参数的Rails4控制器
- ajax post在webapi中传递null参数
- 如何在 jquery post request 中发送api_key和api_secret参数
- 如何在ajax文件上传中添加额外的POST参数
- 发送具有复杂、多个参数的POST请求
- 参数使用AJAX的PHP POST不起作用
- Angular 2:如何在 GET 和 POST 请求中设置 double、float、int 和布尔类型参数
- 使用 PHP 生成的按钮生成 POST 请求,这些按钮调用带有参数的 javascript 函数
- 通过发送POST参数在ExtJS 4中显示PDF
- 如何:redactor.js imageUpload Post Extra参数
- Angular 2:HTTP Post Request,带有URL参数和正文类型参数
- 当按下浏览器后退按钮时,如何用相同的post参数激发ajax请求
- 使用表单和POST方法通过Javascript获取URL参数
- 如何通过发送GET和POST的javascript重新加载页面,并附加附加参数
- javascript$.post将参数传递到外部PHP文件
- qoxdoo:POST方法,不在URL中显示参数
- 在转发到代理目标并将响应发送回客户端之前,编辑POST参数
- 在node.js中的post方法中接收多个参数
- JavaScript 窗口重定向安全地传递参数 (POST)
- 你如何拦截xhr POST参数/POST正文