我的OData POST操作接收參數爲空,因爲它將它們從JayData客戶端作爲身體的一部分獲取,並期待它們作爲URI的一部分。JayData。 OData v.3操作收到的POST參數爲空
我已經創建了基於WCF Data Services 5.6.0和Llblgen Pro 4.0(現在簡單地是the best .Net ORM)的OData服務。它有一個POST操作:
[WebInvoke(Method = "POST")]
public void DeletePeople(string guidsToDelete) {...}
的OData的3.0版標準不支持參數傳遞到後的操作作爲身體的一部分,但expect them to be in the queryString part of the URI。也就是說,在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
同意,從標準怪異的請求,如POST應該有,不僅是語義使用,也是功能性的(發送長參數值作爲身體的一部分) – raist
注意:標準DOES支持POST操作(請參閱mixja答案和m y對它發表評論)。正如Robesz所說,事實是JayData現在不支持POST操作(v.1.3.1),只是GET服務操作。 – raist