2016-11-29 10 views
5

Asp.netコアのAPIのルートについて多くのトピックを読みましたが、動作させることはできません。ASP.netコアAPIのルート

まず、これは私のコントローラです:

Public class BXLogsController : Controller 
{ 
    //[HttpGet("api/[controller]/ID/{id}", Name = "GetL")] 
    public IActionResult GetById(string id) 
    { 
     if (id.Trim() == "") 
      return BadRequest(); 
     else 
     { 
      Logs l = AccessBase.AccBase.GetLog(id); 
      return Json(l); 
     } 
    } 

    //[HttpGet("api/[controller]/API/{apiname}", Name = "GetLAPI")] 
    public IActionResult GetByAPI(string apiname) 
    { 
     if (apiname.Trim() == "") 
      return BadRequest(); 
     else 
     { 
      List<Logs> lstLogs = AccessBase.AccBase.GetLogsApi(apiname); 
      return Json(lstLogs); 
     } 
    } 
} 

私はパスでHttpGetAttributeを使用しようとしました(コメントを参照してください)しかし、それは動作しません。

だから私はMapRouteアプローチを使用したいが、それも動作しません。

app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "LogsId", 
       template: "api/[controller]/ID/{id}", 
       defaults: new { controller = "BXLogs", action = "GetById" }); 

      routes.MapRoute(
       name: "LogsAPI", 
       template: "api/[controller]/API/{apiname}", 
       defaults: new { controller = "BXLogs", action = "GetByAPI" }); 
     }); 

私は何かを忘れているに違いありませんが、私は何も見ません。

誰でも手伝ってもらえますか?

+0

をルーティング属性をよく読んで。 –

答えて

8

これを試してください。コントローラに共通のルートプレフィックスを付けることができます。

[Route("api/[controller]")] 
public class BXLogsController : Controller { 
    //GET api/BXlogs/id/blah 
    [HttpGet("ID/{id}", Name = "GetL")] 
    public IActionResult GetById(string id) { ... } 

    //GET api/BXlogs/api/blahapi 
    [HttpGet("API/{apiname}", Name = "GetLAPI")] 
    public IActionResult GetByAPI(string apiname) { ... } 
} 

には重複ルートがありませんことを確認してくださいここでRouting to Controller Actions

+1

またはこのチュートリアル:[https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api](https://docs.microsoft.com/en-us/aspnet/core)/tutorials/first-web-api) – paulroho

関連する問題