.net core WebApi 带属性路由([HttpGet("{id}", Name = "Get")])

本文深入探讨了WebApi中属性路由的使用方法,包括在HttpGet、HttpPut等标签中添加属性来定义路由规则,通过实例讲解了不同路由场景下如何进行匹配及调用相应的控制器方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. WebApi 带属性路由介绍 参见:WebApi路由机制详解
    内容详实,举例简单易懂。

  2. 但是该文中没有对带属性路由的另一种方式做详细介绍,即在HttpGet、HttpPut、HttpPost、HttpDelete 这些标签中添加属性。以下以[HttpGet("{id}", Name = “Get”)] 为例

  3. 在Controller中定义属性路由
    [


```csharp
Route("api/[controller]")]
public class UserManageController : Controller
    {
        // GET: api/UserManager
        [HttpGet]
        public IActionResult GetUserInfoAll()
        {
            return new string[] { "value1", "value2" };
        }

        // GET: api/UserManager/5
        [HttpGet("{id}", Name = "GetTest")]
        [ActionName("Get1")]
        public string Get()
        {
            return "value";
        }
   }

(1)使用 http://localhost:5000/api/userManage 请求,返回

value1, 
value2

属性路由中没有定义action,同时存在多条Get方法,但是第二条Get方法中带有了特定路由属性,因此匹配时自动排除,默认匹配到GetUserInfoAll方法。

(2)使用 http://localhost:5000/api/userManage/GetUseInfoAll 请求,返回

value

由于属性路由中没有定义action,使用URl访问时,此时“GetUseInfoAll ”匹配的是“{id}”,即路由规则为"api/[controller]/{id}" 如果将id强制定义为整数则不会返回值,无法访问。
(3)[HttpGet("{id}", Name = “Get”)] 中的Name值,目前测试可以用于寻址,其它作用不明
string uri = Url.Link(“GetTest2”, id = 1);
返回http://localhost:5000/Get1/1

  1. 总结:[HttpGet("{id}", Name = “Get”)] 等同于于Route中带属性,其中的属性值可以相互参考
### 如何创建一个新的 ASP.NET Core Web API 项目 要创建一个新的 ASP.NET Core Web API 项目,可以按照以下方法实现。以下是详细的说明: #### 使用命令行工具 (dotnet CLI) 通过 .NET SDK 提供的 `dotnet` 命令行接口,可以直接创建新的 ASP.NET Core Web API 项目。 运行以下命令来初始化一个新项目: ```bash dotnet new webapi -n ProCodeGuide.Polly.Customer ``` 这会生成一个名为 `ProCodeGuide.Polly.Customer` 的目录,并在其中创建必要的文件结构[^2]。 进入该项目目录并启动开发服务器以验证其功能: ```bash cd ProCodeGuide.Polly.Customer dotnet run ``` 此时,默认会在浏览器中打开地址 `https://localhost:<port>/weatherforecast` 并显示默认天气预报数据作为测试端点[^1]。 --- #### 使用 Visual Studio 创建项目 如果更倾向于图形化界面,则可以通过安装好的 Microsoft Visual Studio 来完成此过程。 1. 打开 **Visual Studio** 软件。 2. 在欢迎界面上选择 “Create a new project” 或者点击菜单栏中的 File -> New Project。 3. 搜索模板列表中的选项卡找到 **ASP.NET Core Web Application**,然后单击 Next。 4. 输入项目的名称(例如:`ProCodeGuide.Polly.Customer`),设置保存位置后按 Create 继续。 5. 在下一页配置对话框里选择目标框架版本以及应用程序类型为 **Web API** 后确认提交即可。 完成后同样能够利用内置调试器执行程序查看效果。 --- #### 自定义路由规则 对于需要自定义 URL 结构的情况,在控制器类上应用特性标记 `[Route]` 是一种常见做法。比如下面的例子展示了如何针对特定资源路径设计专属的方法访问入口[^3]: ```csharp using System; using Microsoft.AspNetCore.Mvc; namespace ProCodeGuide.Polly.Customer.Controllers { [Route("api/[controller]")] [ApiController] public class OwnerController : ControllerBase { /// <summary> /// 获取指定 ID 对应的所有者信息. /// </summary> /// <param name="id">唯一标识符</param> /// <returns>返回对应的结果对象或者错误提示.</returns> [HttpGet("{id}")] public IActionResult GetOwnerById(Guid id) { var owner = Database.Find(id); // 这是一个假设函数调用 if(owner != null){ return Ok(owner); } return NotFound(); } } } ``` 上述代码片段设置了 `/api/owner/{id}` 形式的请求匹配逻辑,允许客户端传入参数查询具体记录实例。 --- #### 配置 HTTPS 和其他最佳实践建议 为了提高安全性与性能表现,遵循官方推荐的最佳实践非常重要。其中包括但不限于启用强制性的 SSL/TLS 加密连接支持、合理规划依赖注入机制等内容。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值