URI | Verb | Description |
/api/tasks | GET | Gets the full list of all tasks; optionally specify a filter |
/api/tasks/123 | GET | Gets the details for a single task |
/api/tasks/123/status | GET | Gets just the status information for the specified task |
/api/tasks/123/status/456 | PUT | Updates just the status of the specified task |
/api/tasks/123/users | DELETE | Deletes all users from the specified task |
/api/tasks | POST | Creates a new task |
route map
config.Routes.MapHttpRoute( name: "TaskStatusApiRoute", routeTemplate: "api/tasks/{taskId}/status/{statusId}", defaults: new {controller = "TaskStatus", statusId = RouteParameter.Optional});
controller:
public class TaskStatusController : ApiController { private readonly ISession _session; private readonly IStatusMapper _statusMapper; private readonly IHttpStatusFetcher _statusFetcher; private readonly IHttpTaskFetcher _taskFetcher; public TaskStatusController( IHttpTaskFetcher taskFetcher, ISession session, IStatusMapper statusMapper, IHttpStatusFetcher statusFetcher) { _taskFetcher = taskFetcher; _session = session; _statusMapper = statusMapper; _statusFetcher = statusFetcher; }
public Status Get(long taskId) { var task = _taskFetcher.GetTask(taskId); return _statusMapper.CreateStatus(task.Status); }
public void Put(long taskId, long statusId) { var task = _taskFetcher.GetTask(taskId); var status = _statusFetcher.GetStatus(statusId); task.Status = status; _session.Save(task); } }