Uploaded image for project: 'Teiid'
  1. Teiid
  2. TEIID-5803

Seems to be not possible to POST a new entity via a navigation property to a collection

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 13.0
    • Component/s: OData
    • Labels:
      None

      Description

      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-v4.01-csprd04-part1-protocol.html#sec_CreateanEntity

      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)/UserDefinedProducts_fKUserDefinedProductToAccount

      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

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                shawkins Steven Hawkins
                Reporter:
                cjohn001 Christoph John
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: