Web API 2 で asp.net MVC 5 を使用しています。新しい属性ルーティングをテストしていますが、これは十分に単純に思えます。msdn の紹介リンクをたどりましたが、まだ非常に簡単な設定ができません。
API 構成ファイル:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
API コントローラーで:
public class RecruitingController : ApiController
{
...snip...
[Route("Recruiting/countries/all/")]
[ResponseType(typeof(List<Country>))]
public async Task<IHttpActionResult> GetCountries()
{
var countries = ctx.Countries.ToList();
if (countries.Count == 0)
{
return NotFound();
}
return Ok(countries);
}
}
私の見解では、ajax経由でルーティングを呼び出しています。クロム開発者ツールでは、このルートに到達しようとしています:
http://localhost:43736/api/Recruiting/countries/all/
そして私は404応答を得ています。
ここで構文を台無しにしていますか? 次のような ajax 呼び出しがあります。
$.getJSON(apiBaseUrl + "/countries/all/", function (data) {
$.each(data, function () {
var dropdownCountry = new DropdownCountry();
$.each(this, function (k, v) {
if (k === "Name") {
dropdownCountry.name = v;
}
if (k === "Key") {
dropdownCountry.key = v;
}
});
self.orgCountryDdl.push(dropdownCountry);
});
alert(DropdownCountry());
});
apiBaseUrl は 'api/recruiting' です