LoginSignup
2
2

More than 3 years have passed since last update.

スクラッチからのHello, ASP.NET & AngularJS コントローラ編

Last updated at Posted at 2014-02-15

ASP.NET Web APIを使ってHTTPサービスAPIを公開するコントローラを作成します。
ASP.NET Web APIを使うとRESTfulなAPIを簡単に作成できます。

TodosControllerの作成

ControllersフォルダにTodosControllerクラスを作成します。

ApiControllerの作成

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();
        }
    }
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2