matt
matt

Reputation: 347

REST API Status Change

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:

  1. Cancelled
  2. SignedOff
  3. Hold

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

  1. POST: Applications/{application_id}/Cancel
  2. POST: Applications/{application_id}/SignOff
  3. POST: Applications/{application_id}/Hold

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

Answers (3)

叶知泉
叶知泉

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

kampsj
kampsj

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

Satish
Satish

Reputation: 711

POST: Applications/{application_id}?cancel=true

POST is used only for CREATE. I think put will be better option.

Upvotes: 0

Related Questions