Skip to main content
14-Alexandrite
February 1, 2022
Solved

Odata Custom Rest Endpoint status code 201

  • February 1, 2022
  • 1 reply
  • 3023 views

Hi,

 

we have implemented a custom Odata Rest Endpoint. I want to return http status code 201 Created when an object is created and the status code 200 when an object is updated via post request. I couldn't achieve it by setting the boolean variable setCreated on the ActionResult that is returned. Does anybody have an idea?

 

Thanks in advance.

Best answer by xolomon

Hi fivig,

thanks for your reply. I think it only works if you return the object as an entity. In our case I don't want to return a Windchill object but a custom response which contains string attributes. When you return a custom response in a way like below it doesn't work. 

ComplexValue complexValue = new ComplexValue();
complexValue.getValue()
.add(new Property("String", statusAttribute, ValueType.PRIMITIVE, statusAttributeValue));
EntityAttribute entityAttribute = new EntityAttribute(null, "Response",
PropertyValueType.COMPLEX, complexValue);
result.setReturnedObject(entityAttribute);

 

Cheers,

xolomon

 

1 reply

5-Regular Member
February 2, 2022

Hi xolomon,

Looks strange, in WRS 2.1 should works fine. What is your version of WRS?

if actionResult.isCreated() then ActionProviderProcessor , return org.apache.olingo.commons.api.http.HttpStatusCodeHttpStatusCode.CREATED.getStatusCode()

xolomon14-AlexandriteAuthorAnswer
14-Alexandrite
February 3, 2022

Hi fivig,

thanks for your reply. I think it only works if you return the object as an entity. In our case I don't want to return a Windchill object but a custom response which contains string attributes. When you return a custom response in a way like below it doesn't work. 

ComplexValue complexValue = new ComplexValue();
complexValue.getValue()
.add(new Property("String", statusAttribute, ValueType.PRIMITIVE, statusAttributeValue));
EntityAttribute entityAttribute = new EntityAttribute(null, "Response",
PropertyValueType.COMPLEX, complexValue);
result.setReturnedObject(entityAttribute);

 

Cheers,

xolomon