簡體   English   中英

如何在asp.net核心中為“ Web”和“ API”創建路由

[英]How can I create routes for “web” and “api” in asp.net core

我想創建用於渲染視圖的路由(Web路由)和用於管理目的的路由(API路由)。 所以我創建了這樣的目錄結構:

 controllers //root controller folder
    ProductController
    Api //subfolder of controllers folder
       Productcontroller

我有同名的課程,這弄亂了我的路線。 “ api路由”與“網絡路由”重疊。

這就是我定義API路線的方式

namespace Loja.Controllers.Api

[Produces("application/json")]
[Route("api/Produtos")]
public class ProdutosController : Controller
{
     // GET: api/<controller>
     [HttpGet]
     public IEnumerable<string> Get()
     {
        return new string[] { "value1", "value2" };
     }
}

這就是我定義網絡路線的方式:

namespace Loja.Controllers
{
    public class ProdutosController : Controller
    {
        [Route("/produtos/{slug}")]
        public IActionResult Get(string slug) 

當我嘗試生成到我的網絡路線的鏈接時,我被定向到api路線。 為什么?

<a asp-controller="Produtos" asp-action="Get"  asp-route-slug="@produto.Slug">

單擊鏈接后,我將被定向到

http://localhost:5000/api/produtos?slug=assadeira-grande-40-x-27-cm-109dcc

一種解決方案是使用區域並創建如下所示的超鏈接:

<a asp-area="Public" asp-controller="Home" asp-action="About">Test</a>

在此處輸入圖片說明

或者您可以手動創建a href;

<a href="/Produtos/Get/@produto.Slug">Link</a>

如下所示,在Web控制器中更改[ Route(“ / produtos / {slug}”)]]

namespace Loja.Controllers
{
public class ProdutosController : Controller
{
    [Route("/produtos/Get/{slug}")]
    public IActionResult Get(string slug)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM