首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OData v4路由前缀?

OData v4路由前缀?
EN

Stack Overflow用户
提问于 2015-04-07 19:10:49
回答 1查看 13K关注 0票数 9

我有一个并列的Web API2.2 APIController和OData v4 ODataController。我的APIController在内部使用路由属性,如下所示(没有预定义的路由默认值):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  [RoutePrefix("api")]
  public class MyController : ApiController
  {
    [HttpGet]
    [Route("My")]
    public IHttpActionResult Get()
    {
      //Code Here
    }

    [HttpGet]
    [Route("My")]
    public IHttpActionResult Get([FromUri] String mykey)
    {
      //Code Here
    }
  }

这样路由到./api/My和./api/My/?mykey=value

我试着把我的ODataController设置成类似的方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  [ODataRoutePrefix("My")]
  public class oMyController : ODataController {

    [HttpGet]
    public IHttpActionResult Get(ODataQueryOptions<FileModel> queryOptions) {
      //Code Here
    }

    [HttpGet]
    [ODataRoute("({mykey})")]
    public IHttpActionResult Get([FromODataUri] String mykey) {
      //Code Here
    }
  }

像这样提前定义odata路由:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
  builder.EntitySet<MyModel>("My");
  config.MapODataServiceRoute(
    routeName: "ODataRoute",
    routePrefix: "odata",
    model: builder.GetEdmModel()
  );

但是尝试访问./odata/My和./odata/ my (值)最终进入我的APIController而不是ODataController。

我如何使用不同的前缀,但是相同的名称,将它们路由到适当的控制器。我不希望每个路由都有一个不同的名称,如果我能防止它的话,前缀应该会处理所有的事情,但出于某种原因,它们不是。

EN

回答 1

Stack Overflow用户

发布于 2015-04-07 19:34:25

您需要指定ODataRoute属性,即使该属性为空:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ODataRoutePrefix("My")]
public class oMyController : ODataController {

  [HttpGet]
  [ODataRoute()] // <---<< This was the key to proper OData routing
  public IHttpActionResult Get(ODataQueryOptions<FileModel> queryOptions) {
    //Code Here
  }

  [HttpGet]
  [ODataRoute("({mykey})")]
  public IHttpActionResult Get([FromODataUri] String mykey) {
    //Code Here
  }

}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29499378

复制
相关文章
OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client
一、概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open protocol to allow the creation and consumption of queryable and interoperable RESTful APIs in a simple and standard way. 这是一个开放的数据查询和服务协议,目前已经有众多厂商和平台支持,已经形成了完整的生态链,这应该是未来数据查询的标准,参见官网说明。 OData的意义还在于,它能够大大简小SOA架
用户1177503
2018/02/27
2.6K0
OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client
[PHP] laravel中的api路由前缀
所有的 Laravel 路由都在 routes 目录中定义,这些文件都由框架自动加载。routes/web.php 文件用于定义 web 界面的路由。这里面的路由会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。 定义在 routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组。
唯一Chat
2021/06/22
3.3K0
[PHP] laravel中的api路由前缀
springboo根据目录结构自动生成路由前缀
配置文件中配置api的根目录 missyou: api-package: com.lin.missyou.api 重写getMappingForMethod方法 import org.springframework.beans.factory.annotation.Value; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.m
听城
2020/05/09
5940
http前缀树路由算法和Go源码分析
下图为 b,abc,abd,bcd,abcd,efg,hii 这7个单词创建的trie树。
后端云
2022/11/25
8480
http前缀树路由算法和Go源码分析
点击加载更多

相似问题

Odata V4路由前缀与批处理同步

10

“Cast”的OData V4 WebAPI路由协议

12

WebApi2.2 OData V4函数路由

31

Odata .Net核心v4 mvc路由不工作

12

OData v4的正确路由是什么?

129
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文