下面是我自己的解决方案:
//路由配置:
//GET | /photos | index | display a list of all photos
config.Routes.MapHttpRoute(
name: "DefaultIndex",
routeTemplate: "api/{controller}",
defaults: new {action = "Index"},
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);
//POST | /photos/ | create | create a new photo
config.Routes.MapHttpRoute(
name: "DefaultCreate",
routeTemplate: "api/{controller}",
defaults: new { action = "Create" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) }
);
//GET | /photos/new | new | return an HTML form for creating a new photo |
config.Routes.MapHttpRoute(
name: "DefaultNew",
routeTemplate: "api/{controller}/new",
defaults: new { action = "New" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);
//GET | /photos/:id | show | display a specific photo
config.Routes.MapHttpRoute(
name: "DefaultShow",
routeTemplate: "api/{controller}/{id}",
defaults: new { action = "Show" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);
//PUT | /photos/:id | update | update a specific photo
config.Routes.MapHttpRoute(
name: "DefaultUpdate",
routeTemplate: "api/{controller}/{id}",
defaults: new { action = "Update" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Put) }
);
//DELETE | /photos/:id | destroy | delete a specific photo
config.Routes.MapHttpRoute(
name: "DefaultDestroy",
routeTemplate: "api/{controller}/{id}",
defaults: new { action = "Destroy" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Delete) }
);
config.Routes.MapHttpRoute(
name: "DefaultEdit",
routeTemplate: "api/{controller}/{id}/edit",
defaults: new { action = "Edit" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);
//ApiController 动作
// GET api/photo
[ActionName("Index")]
public string Get()
{
return "Index Action called";
}
// GET api/photos/5
[ActionName("Show")]
public string Get(int id)
{
return "Show action called"
}
// GET api/photos/5/edit
[HttpGet]
public string Edit(int id)
{
return "Edit action called";
}
// POST api/photos
[ActionName("Create")]
public void Post([FromBody]string value)
{
}
// GET api/photos/new
[HttpGet]
public string New()
{
return "New called";
}
// PUT api/photos/5
[ActionName("Update")]
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/photos/5
[ActionName("Destroy")]
public void Delete(int id)
{
}