1

私はasp.netコアセンタールーティングに関連する問題があります。私は属性ルーティングを使うことができると知っていますが、asp.net web apiのようなセンタールーティングに関するものは何も見つかりませんでした。以下のような
何か:asp.netコアウェブAPIセンタールーティング

routes.MapHttpRoute(
name: "API Default", 
routeTemplate: "api/{controller}/{id}", 
defaults: new { id = RouteParameter.Optional } 

)。

asp.netコアで上記の機能を達成する方法を教えてください。組み込み関数がない場合、カスタムルーティングサービスでこれを達成できますか?
よろしくお願いします。
エドワード

答えて

1

ウェブAPIのセンタールーティングがサポートされていますが、ウェブAPIの属性ルートを無効にする必要があります。
ルート:

app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 
     routes.MapRoute(
      name: "api", 
      template: "api/{controller=Values}/{action=GetAll}/{id?}"); 
    }); 

ウェブAPIコントローラ:これはhttp://localhost:44888/api/values/getbyid/123

によって要求される可能性が

//[Route("api/[controller]")] 
    //[Authorize] 
    public class ValuesController : Controller 
    { 
     private ApplicationDbContext _db; 
     public ValuesController(ApplicationDbContext db) 
     { 
      _db = db; 
     } 
     // GET: api/values 
     //[HttpGet] 
     public IEnumerable<string> GetAll() 
     { 
      var result = from user in _db.UserInfos 
         select user.UserName; 
      return result.ToList(); 
      //return new string[] { "value1", "value2" }; 
     } 
     // GET api/values/5 
     //[HttpGet("{id}")]   
     public string GetById(int id) 
     { 
      var result = from user in _db.UserInfos 
         select user.UserName; 
      return result.FirstOrDefault(); 
      //return User.Identity.IsAuthenticated.ToString(); //"value"; 
     } 
} 

1

MVCミドルウェアのオプションとしてルートを設定できます。スタートアップクラスのconfigureメソッドへのルートを追加します。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    app.UseMvc(routes => 
    { 
     routes.MapRoute("blog", "api/{*article}", 
     defaults: new { controller = "Blog", action = "Article" }); 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 
    }); 

} 

注意:ASP.NETでは、コントローラはMVCとAPIの両方で同じです。その統一モデル。

関連する問題