Skip to Content
0

entity can post but put (405)

Mar 28 at 08:52 PM

268

avatar image
Former Member

Hello,

I have a simple demo situation with:

  • Hana trial db
  • a table with 3 keys and other fields
  • odata service created by wizard tool in online editor tool

my files are:

xsodata:

service{
    "DB"."CA01" as "Ca01";
   ...
}

xsaccess:

{
    "exposed": true,
    "authentication": [{
        "method": "Form"
    }],

    "mime_mapping": [{
        "extension": "jpg",
        "mimetype": "image/jpeg"
    }],
    "force_ssl": false,
    "enable_etags": true,
    "prevent_xsrf": true,
    "anonymous_connection": null,
    "cors": [{
        "enabled": false
    }],
    "cache_control": "no-cache, no-store",
    "default_file": "index.html"
}

I use an odata model with sapui5 for action on the package.

When I read (GET) it's ok, when I create (POST) it's ok (the data are written succesfully), when I update (PUT) I have the answer:

{ "error": { "code": "", "message": { "lang": "en-US", "value": "The URI is not valid for PUT operation. The URI must point to a single resource for PUT operations."}}}

with a status code:

405 Method Not Allowed

With create or update I'm using the same js obj:

var saveObj = {
    KEY1: 1,
    KEY2: 1,
    KEY3: 1,
    VALUE1: 'something',
    ...
}

the odata create call is:

odataServ.create('Ca01', saveObj, null, function (odata, resp) {
    console.log(odata);
    console.log(resp);
   });

the odata update call is:

odataServ.update('Ca01', saveObj, null, function (odata, resp) {
    console.log(odata);
    console.log(resp);
   });

As you can see the only difference is the method.

obviusly I try to update after the create is done, the row appear in the table, the keys are populated, the sapui5 app is reloaded and other basic test.


If somebody can help me I will really appreciade

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

2 Answers

Jamie Cawley
Mar 29 at 03:30 PM
0

The error is saying that you can not call method put to Ca01 which represents multiple entities. You must set the path to a specific entity.

odataServ.update('Ca01(THE ID)', saveObj,null,function(odata, resp){
    console.log(odata);
    console.log(resp);});

Regards,

Jamie

Share
10 |10000 characters needed characters left characters exceeded
avatar image
Former Member Mar 29 at 07:57 PM
0

Hello,

Your answer is right, if I read the __metadata url is written in this way. My mistake.

The answer from the server is:

500 Internal Server Error
{ "error": { "code": "", "message": { "lang": "en-US", "value": "Service exception: [7] feature not supported"}}}

That is a better answer but not the solution :(

How can I activate this feature in hana xsodata service?

Anyway, thank you for your answer!

Show 1 Share
10 |10000 characters needed characters left characters exceeded

I do not understand what you are asking. You have to supply a path with the id to update a value, otherwise the system would never know what you are calling put against.

Regards,

Jamie

0