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);
}
}