iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
自我挑戰組

.NET Core WebApi網頁應用開發系列 第 11

.Net Core Web Api_筆記11_組合路由

在一個Action中倘若想實現多種結果返回或者多種輸入參數
就勢必要能夠支援多種路由模板
可能搭配不同權限身份會有不同路由網址

一個action配置多組路由模板

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace NetCoreApiTest1.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class AccountController : ControllerBase
    {
        [Route("")]     //api/account
        [Route("/")]    //api/account/
        [Route("Users")]//api/account/users
        public string Users()
        {
            return "users data...";
        }


    }
}

不透過Controller層級的路由模板一律下放給各組action設置路由

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace NetCoreApiTest1.Controllers
{
    //[Route("api/[controller]")]
    [ApiController]
    public class AccountController : ControllerBase
    {
        [Route("Account")]     //api/account
        [Route("Account/")]    //api/account/
        [Route("Account/Users")]//api/account/users
        public string Users()
        {
            return "users data...";
        }

        [Route("Users/{id}")]
        [Route("Users/Get/{id}")]
        public string GetUserById(string id)
        {
            return $"User Id: {id}";
        }

    }
}

Controller層級跟Action層級都有組合路由情況
已下面情況來講就會共有六種路由模板的組合可以訪問

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace NetCoreApiTest1.Controllers
{
    [Route("Account")]
    [Route("api/[controller]")]
    [ApiController]
    public class AccountController : ControllerBase
    {
        [Route("")]     
        [Route("UserList")]    
        [Route("GetUsers")]
        public string Users()
        {
            return "users data...";
        }

    }
}

https://ithelp.ithome.com.tw/upload/images/20210920/20107452e0aodkLpSp.png

本篇已同步發表至個人部落格
https://coolmandiary.blogspot.com/2021/09/net-core-web-api11.html


上一篇
.Net Core Web Api_筆記10_路由約束
下一篇
.Net Core Web Api_筆記12_自定義屬性路由
系列文
.NET Core WebApi網頁應用開發16

尚未有邦友留言

立即登入留言