You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Web API 如何构建URL?附控制器代码示例

嘿,我来帮你拆解ASP.NET Core Web API里URL的构建逻辑,结合你贴的代码来看就一目了然了:

ASP.NET Core Web API URL构建详解(基于你的代码)

一、控制器级别的路由前缀

首先看控制器头上的这个特性:

[Route("api/[controller]")]
public class MarketReportInstancesTableController : BaseController

这里的[Route]是给整个控制器设置路由前缀,其中[controller]是ASP.NET Core内置的路由令牌,会自动替换成控制器类名去掉Controller后缀的部分。你的控制器类名是MarketReportInstancesTableController,所以这个前缀会被解析成:api/MarketReportInstancesTable。

所有这个控制器下的接口URL,都会基于这个前缀来拼接。

二、动作方法的路由配置

再看你的PageData方法:

[HttpGet(Name = "PageData")]
public IActionResult PageData([FromQuery] IDataTablesRequest request)
  1. HTTP动词与路由匹配:[HttpGet]特性指定这个方法只响应GET请求。因为你没有在HttpGet里额外写路由模板(比如[HttpGet("get-page-data")]),所以这个动作的完整路由就是控制器的前缀本身——也就是说,访问这个接口的URL是:
    GET https://<你的域名>/api/MarketReportInstancesTable
    
  2. 路由名称的作用:Name = "PageData"是给这个路由起了一个唯一名称,主要用来动态生成URL。比如你在代码里可以通过IUrlHelper来生成这个接口的URL:
    var url = Url.Link("PageData", new { draw = 1, start = 0, length = 10 });
    
    这样会生成带查询参数的完整URL,非常适合在返回前端的响应里提供跳转链接。
  3. 查询参数的处理:方法参数上的[FromQuery]表示这个IDataTablesRequest对象的属性会从URL的查询字符串里获取,比如实际请求可能是:
    GET https://<你的域名>/api/MarketReportInstancesTable?draw=1&start=0&length=10
    

三、额外的URL构建场景(拓展)

如果需要更灵活的URL,你可以给动作方法加路由模板:

  • 比如想让URL包含方法名:[HttpGet("page-data")],那么完整URL就是api/MarketReportInstancesTable/page-data
  • 比如需要路由参数:[HttpGet("page-data/{id:int}")],那么URL可以是api/MarketReportInstancesTable/page-data/123(其中123是id参数的值)

内容的提问来源于stack exchange,提问作者Paul Duer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:06:10