Reputation: 347
I am designing a REST API.
I have a single resource that I want to be able to change the status of for different conditions e.g. the URI is:
Applications/{application_id}/
The possible status changes are to set the application to:
Each status change will require different information e.g. a reason for cancelled, a date for signedoff.
What would be a good looking URI to handle this? I had thought of
but it doesnt seem right to me.
EDIT:
I should have mentioned that I was already planning POST: Applications/{application_id} to update an existing application with a full set of application data.
Upvotes: 1
Views: 2996
Reputation: 1
For restful API, each endpoint is representing a resource as a noun. you are going to put an operation to the resource, and the operation can be divided into operations/hold, operations/cancel etc.
POST: Applications/{application_id}/operations/hold
POST: Applications/{application_id}/operations/cancel
POST: Applications/{application_id}/operations/signOff
Upvotes: 0
Reputation: 3149
I would stick with one url for all statuses and have your Status object encapsulate all the different properties. These keeps your url from having words that look like actions and to be more restful.
POST: Applications/{application_id}/status
public class Status
{
public string StatusType {get;set;}
public string CancelReason {get;set;}
public string SignOffDate {get;set;}
...
}
Upvotes: 2
Reputation: 711
POST: Applications/{application_id}?cancel=true
POST is used only for CREATE. I think put will be better option.
Upvotes: 0