以下のページに説明あり
ルーティングの書き方は以下の2種類がある。
1メソッド毎にアトリビュートで指定するか、
public class BooksController : ApiController
{
[Route("api/books")]
public IEnumerable<Book> GetBooks() { ... }
[Route("api/books/{id:int}")]
public Book GetBook(int id) { ... }
[Route("api/books")]
[HttpPost]
public HttpResponseMessage CreateBook(Book book) { ... }
}
クラス宣言のアトリビュートでルートを指定し、
各メソッドには相対パス、もしくはパラメーターを指定する方法
RoutePrefixをつけた場合、各メソッドにもRouteアトリビュートをつけないと、
クライアント側からメソッドを発見できないので注意
[RoutePrefix("api/books")]
public class BooksController : ApiController
{
// GET api/books
[Route("")]
public IEnumerable<Book> Get() { ... }
// GET api/books/5
[Route("{id:int}")]
public Book Get(int id) { ... }
// POST api/books
[Route("")]
public HttpResponseMessage Post(Book book) { ... }
}
かなりはまったのでメモ