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

.Net Core OData 8.0如何自定义端点名称?

解决OData端点自定义名称(如改为customer-data)的问题

要将OData端点从Customers改为customer-data,需要同步修改模型构建配置、控制器动作路由两个核心部分,以下是具体操作和修正后的代码:

1. 更新OData模型构建配置

在Startup(或Program.cs)中,直接将EntitySet的名称设为customer-data,同时关闭默认命名约定,避免OData自动修改自定义名称的格式:

builder.Services.AddControllers().AddOData(opt =>
{
    var modelBuilder = new ODataConventionModelBuilder();
    // 关闭默认命名约定,保留自定义端点名称格式
    modelBuilder.EnableLowerCamelCase = false;
    // 将实体集名称改为customer-data
    modelBuilder.EntitySet<TestModel>("customer-data")
           .EntityType
           .Select()
           .Count()
           .Filter()
           .OrderBy();

    opt.AddRouteComponents("api/v1", modelBuilder.GetEdmModel());
});

2. 修改控制器动作的路由配置

将控制器动作上的HttpGet特性路径改为customer-data,同时修正原代码中方法定义的语法错误:

[ApiVersion("1.0")]
[ODataRouteComponent("api/v1")] 
public class CustomersController : ODataController 
{
    [EnableQuery]
    // 匹配自定义端点名称customer-data
    [HttpGet("customer-data")]
    // 修正方法定义的语法问题,补充方法名并规范返回值类型
    public async Task<IActionResult> GetCustomerData()
    {
        // 替换为你的实际数据查询逻辑
        var customerData = await _yourDataService.GetCustomersAsync();
        return Ok(customerData.AsQueryable());
    }
}

额外注意事项

  • 实体集名称和路由路径必须完全一致,包括大小写(OData路由默认区分大小写,若需忽略可配置路由大小写不敏感)。
  • 控制器名称无需强制和端点名称匹配,只要路由特性配置正确即可。
  • 原代码中async IQueryable<Customer>()属于语法错误,需补充方法名并将返回值修正为Task<IActionResult>或Task<IQueryable<Customer>>(根据业务逻辑选择)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:30:09