Reputation: 1969
Lets say I have rest endpoint for my Driver resource. I have PUT method like this
myapi/drivers/{id}
{body of put method}
I need to add functionality which will allow to 'enable' and 'disable' driver
Is it good idea to create new endpoint for that like this?
PUT myapi/drivers/{id}/enable/false
or it is better to use existing endpoint ? One problem with using existing endpoint is that driver has lot's of fields(almost 30) and sending all those fields just for updating only 'enabled' or 'disable' driver is something overkill.
What do you think?
Upvotes: 52
Views: 38410
Reputation: 3797
This is exactly what the HTTP method PATCH
is made for. It is used in cases where the resource has many fields but you only want to update a few.
Just like with PUT
, you send a request to myapi/drivers/{id}
. However, unlike with PUT
, you only send the fields you want to change in the request body.
Creating endpoints like myapi/drivers/{id}/enable
is not very RESTful, as "enable" can't really be called a resource on its own.
For an example implementation of a Spring PATCH
endpoint, please see this link.
Upvotes: 58
Reputation: 45
Use PATCH Http metod to update one field
PATCH myapi/drivers/{id}/enable
Upvotes: 1