]
Ramesh Reddy commented on TEIID-5803:
-------------------------------------
I updated the Olingo master with Steve's PR now.
Seems to be not possible to POST a new entity via a navigation
property to a collection
---------------------------------------------------------------------------------------
Key: TEIID-5803
URL:
https://issues.jboss.org/browse/TEIID-5803
Project: Teiid
Issue Type: Bug
Components: OData
Reporter: Christoph John
Assignee: Steven Hawkins
Priority: Major
Hello Steven,
I am currently trying to post/create an entity in a collection via a relative binding
path. Unfortunately, I always get an error saying
{"error":{"code":null,"message":"HTTP method
'POST' not allowed for this resource."}}
I have bound the root view to .../Account(1) from which I have a navigation property to
the relevant collection. Currently I have trouble to post to collections via a navigation
path.
As far as I understood from
http://docs.oasis-open.org/odata/odata/v4.01/csprd04/part1-protocol/odata...
chapter 11.4.2 this should work according to my tries below.
Might you tell me if my path via the navigation property should work for post requests or
what I am doing wrong?
Directly writing to the collection is fine, i.e. something like the following:
curl --user sap:sap -i -X POST -H 'Content-Type:
application/json;charset=UTF-8;IEEE754Compatible=true' -d
'{"fkProfile":"1","idCode":null,"lc":"de","product_name":"A
Product","brands":"A
brand","energy_100g":2259,"carbohydrates_100g":60.08,"sugars_100g":10.1,"proteins_100g":24.03,"fat_100g":15.89,"saturated_fat_100g":10.0,"salt_100g":1.0}'
http://localhost:18080/odata4/svc/my_nutri_diary/UserDefinedProducts
and a GET request via a navigation property path (given below) also works, but a path via
a navigation property does not work when using the path in a POST request. I.e. when
going via the navigation property. Example:
curl --user sap:sap -i -X POST -H 'Content-Type:
application/json;charset=UTF-8;IEEE754Compatible=true' -d
'{"fkProfile":"1","idCode":null,"lc":"de","product_name":"A
Product","brands":"A
brand","energy_100g":2259,"carbohydrates_100g":60.08,"sugars_100g":10.1,"proteins_100g":24.03,"fat_100g":15.89,"saturated_fat_100g":10.0,"salt_100g":1.0}'
http://localhost:18080/odata4/svc/my_nutri_diary/Account\(1\)/UserDefined...
Here you find the backend metadata. They show that
UserDefinedProducts_fKUserDefinedProductToAccount is simply a navigaton path from
Account(xxx) to the UserDefinedProducts collection.
https://ecubed-solutions.ddnss.de/odata4/svc/my_nutri_diary/$metadata
user: sap
password: sap
Thanks a lot for your help!
Note: I am currently trying to add data via a navigation property path because my
frontend library sapui5 only caches and syncs data queried via a single context binding.
Hence, to be consistent via all views in my app which bind to the odata model, I need to
use only one absolute binding and have to query/update other contexts via relative binding
paths from this single absolute path, to allow for all frontend views to maintain data
consistency