目的:REST動詞名を定義し、それらをREST経路にリンクしたいと思います。私はOwinStartup.csに持ってC#Web Api Routing
GET/=> Get()
GET /1 => Get(int id)
POST/=> Post()
PUT/=> Put()
DELETE /1 => Delete(int id)
GET /custom => [HttpGet][ActionName("custom")] GetCustom()
:
httpConfiguration.Routes.MapHttpRoute (
name: "ControllerWithId",
routeTemplate: "rest/{controller}/{id}",
constraints: new {
id = @"^\d+$"
},
defaults: new {
action = "Index",
id = RouteParameter.Optional
});
httpConfiguration.Routes.MapHttpRoute (
name: "ControllerWithAction",
routeTemplate: "rest/{controller}/{action}/{id}",
defaults: new {
action = "Index",
id = RouteParameter.Optional
});
私はApiController持っている:
public class MyController : ApiController {
public async Task<IEnumerable<object>> Get() {}
public async Task<object> Get(int id) {}
public async Task Post([FromBody] data) {}
public async Task Put(int id, [FromBody] data) {}
public async Task Delete(int id) {}
[HttpGet][ActionName("custom")]
public async Task Custom() {}
}
彼らはすべてのリターンを次に、私が定義されたアクション名にカスタムルールをマップしたいです404カスタムを除いて。各RESTメソッドにActionNameを追加する必要があります。最も簡潔なソリューションは何ですか?
?そして、 'Task' *の代わりに' IHttpActionResult'の実装を返すべきです。* –
私はそれを考えましたが、デフォルトの命名規則を使用したいと思っていました。 – Exegesis
@Exegesis以下の投稿があなたのために働いた場合、他の人がそれを好むように答えとして受け入れるべきです –