ASP.NET Web APIを使ってHTTPサービスAPIを公開するコントローラを作成します。
ASP.NET Web APIを使うとRESTfulなAPIを簡単に作成できます。
TodosControllerの作成
ControllersフォルダにTodosControllerクラスを作成します。
Todoアプリのビューが利用するAPIを実装します。
ApiControllerのポイントは、以下のとおり。
- メソッド名をGet()、Post()、Put()、Delete()にするとAPIとして公開してくれる
- Route属性を使って独自のルートも簡単に設定できる
- 引数や戻り値は自動的にC#オブジェクト<=>JSONの変換をしてくれる
public class TodosController : ApiController
{
// GET api/todos
public IEnumerable<Todo> Get()
{
using (var context = new TodoContext())
{
return context.Todos.ToArray();
}
}
// POST api/todos
public int Post(Todo todo)
{
using (var context = new TodoContext())
{
context.Todos.Add(todo);
context.SaveChanges();
return todo.Id;
}
}
// PUT api/todos
public void Put(Todo todo)
{
using (var context = new TodoContext())
{
context.Entry(todo).State = EntityState.Modified;
context.SaveChanges();
}
}
// DELETE api/todos/archive
[HttpDelete, Route("api/todos/archive")]
public void Archive()
{
using (var context = new TodoContext())
{
var query = context.Todos.Where(t => t.IsDone);
var todos = query.ToArray();
foreach (var todo in todos)
{
context.Todos.Remove(todo);
}
context.SaveChanges();
}
}
}