开放数据协议(OData)是用于构建REST API的标准化协议。 OData v4为REST API指定了许多最佳实践,包括简洁的,面向超媒体的JSON格式。
控制器“X”中操作“X”上的路径模板“X”不是有效的 OData 路径模板。找不到段“X”的资源
我一直在谷歌搜索并使用Chat GPT,但不知道如何摆脱上述警告。这是我的代码: var builder = new ODataConventionModelBuilder(); builder.EntitySet 我一直在谷歌搜索并使用 Chat GPT,但无法弄清楚如何摆脱上述警告。这是我的代码: var builder = new ODataConventionModelBuilder(); builder.EntitySet<MessageViewModel>("Message"); // Define the bound action // var getTagMessagesAction = builder.EntityType<MessageViewModel>().Collection.Action("GetTagMessages"); // Optionally define parameters for the action // getTagMessagesAction.Parameter<List<int>>("tagIds"); [Authorize] [Route("odata")] public class MessageController : ODataController { [HttpPut] [Route("GetTagMessages")] public async Task<IActionResult> GetTagMessages([FromBody] List<int> tagIds) { var messages = await _db.MessageTags.Where(x => tagIds.Any(t => t == x.TagId)) .AsNoTracking().ToListAsync(); var mapped = _mapper.Map<List<Message>, List<MessageViewModel>>(messages); return Ok(mapped); } } 我用 https://localhost:5001/odata/GetTagMessages 调用它并在主体中传递一个整数列表。 无需在 EDM 模型构建器中配置操作即可成功调用,但在运行解决方案时收到警告: 警告:Microsoft.AspNetCore.OData.Routing.Conventions.AttributeRoutingConvention[0] 控制器“Message”中操作“GetTagMessages”上的路径模板“odata/GetTagMessages”不是有效的 OData 路径模板。找不到段“GetTagMessages”的资源。 当我像在 EDM 模型生成器中那样配置操作时,通过删除注释代码,我得到 405 Method Not Allowed。我尝试更改为 POST 调用,但仍然遇到相同的错误。 如果我从控制器中删除 [Route("odata")],并将端点上的路线更改为 [Route("~/GetTagMessages")],警告就会消失,但我会收到 405 错误。 我不确定我做错了什么,任何帮助将不胜感激。我正在尝试在没有警告的情况下获得干净的构建,以便一切都正确配置。 根据您的模型架构和控制器/操作设置,预计会出现警告消息。因为,您的模型中没有名为“GetTagMessages”的元素。 如果您在 Edm 模型构建器中配置操作,则预期会出现“405”,因为 OData 路由为“GetTagMessage”控制器方法构建了“常规”端点。 我创建了一个示例供您参考,并使 Edm 操作在没有警告的情况下运行。请参阅提交的详细信息https://github.com/xuzhg/WebApiSample/commit/87cfed8981156ab2edde5618cb9f28eb4e6fc057 请让我知道您的详细要求。您可以在 github 上提交问题或在这里留下评论。 谢谢。
在我的 Net 6 Web-API 项目中,我使用 OData 和 Swagger(它是在创建项目时自动添加的)。 它开箱即用,但 Swagger 生成的某些 URL 存在问题。 他...
Power Query 在 OData Feed 中找不到字段
OData Feed 存在问题(PBI 和 Excel 中相同)。 Web 服务有该列名称,但无法加载它。它返回错误“详细信息:”OData:属性“XXXX”不存在...
设置 RequireAuthenticatedUser() 时如何允许匿名访问 OData $metadata?
我有一个 ASP.NET Core 2.1 站点,WebApiConfig 文件中有以下内容: services.AddMvc(配置=> { // 对所有控制器强制授权 ...
使用 OData V4 模型更新 SAPUI5 中的 NavigationProperty(带有 ASP.NET 后端)
我正在使用 SAPUI5 和 OData V4 模型,并以 ASP.NET 作为后端。 我有一个有状态的预订。我需要一个用户可以更改预订状态的功能。所有状态...
JavaScript 和 SAPUI5 新手;努力寻找语法解释。 需要调用本地系统中的OData服务。 SAP项目模板已经放置了看似正确的数据源部分...
修改 WebAPI OData QueryOptions.Filter 的最佳方法
我正在使用 http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/working-with-entity-relations 上的 OData 示例项目。在获取中,我希望能够更改
我正在尝试通过 OData 过滤我的数据,其中 FileRef 字段包含“/根路径/文件夹/子文件夹”,我尝试使用 substringof,如下所示: $filter=substringof("站点/我的
PowerBI Azure-Devops:查询未显示链接(如 Msft 示例查询中所示)
当我尝试使用 Microsoft 学习示例来检索 DevOps 工作项和相关项目时,仅显示父级。没有显示有关链接工作项的属性。 使用的代码是准确的
如果列表项可能包含多个值,如何在所有/任何方法中使用 Odata contains 方法?
我有一个商品数组,每个商品都有一个关税 ID 字段。 单独的关税 ID 列表: [123,345,567,789] 我需要通过包含这些 id 之一的一部分(而不是相等)来过滤项目。 我...
如何在SAPUI5中使用OData V4获取submitBatch的错误消息
在 SAPUI5 中使用 OData V4 服务的 SubmitBatch 创建新实体时,可以使用绑定上下文的 getMessages() 读取消息。然而,这不会返回任何技术消息。 对于
当我尝试更新对象上的属性 (AvaliableQuantity),然后通过 ODATA 更新它(使用 oData v4 客户端代码生成器)时。 问题是当我发送请求时(Fiddler ...
OData 在 .NET 8 中应用 ODataQueryOptions<T> 时?
帮助我了解Odata何时将查询参数应用于IQueryable? 任务如下:需要将查询执行的结果拿到数据库中,然后再发送给客户端...
如何在 Azure 搜索中筛选 ComplexTypeCollection 字段以查找包含特定文本的记录?
我正在使用 Azure 搜索,并且有一个带有名为 ComplexField 的 ComplexTypeCollection 类型字段的索引。 ComplexField 中的每个项目都有一个名为 TextProperty 的文本属性。 我想知道如何
每次使用 Fabric 中的不同 URL 迭代连接到 OData API
我正在尝试从 Fabric 连接到 OData API,我想调用动态传递到 OData 的不同 URL,结果我们收到了表。其中我们想选择几个...
使用 OData 查询访问 Azure DevOps Board 自定义字段
我在我们的一个 Azure DevOps 项目中创建了一个自定义字段。 字段参考名称:Custom.TestingType。 现在我想使用 Odata 查询访问该字段, https://analytics.dev.azure.com/
我尝试调试 OData 服务的 ABAP 堆栈,我发现这个调用需要更多时间,被称为“加载 MPC 类”,与所有 DPC 和 DPC_EXT 类相同,...
Azure Blob Starage - Rest API - 400 请求输入之一无效
我正在尝试使用批处理请求从 Azure Blob 存储中删除 blob。 目前,我正在使用邮递员来验证我的请求,然后再在我的应用程序中使用它。 我无法设法获得不同的...
我无法理解这个问题。我在忽略什么? 这是一个最小示例:https://plnkr.co/edit/VjqGeG9JpHblyLBb?preview 我无法理解这个问题。我忽略了什么? 这是一个最小示例:https://plnkr.co/edit/VjqGeG9JpHblyLBb?preview <tnt:InfoLabel text="{ path: 'LastName', formatter: '.formatter.typeText' }" colorScheme="{ path: 'LastName', formatter: '.formatter.typeColor' }" /> // formatter.js sap.ui.define([], function () { "use strict"; return { typeText: function(sLastName) { // Called with 'sLastName' value }, typeColor: function(sLastName) { // Not called } }; }); 我正在使用 UI5 1.79 和 sap.ui.model.odata.v4.ODataModel。 将 targetType: 'any' 添加到存在问题的属性绑定信息中。 <tnt:InfoLabel text="{ path: 'LastName', formatter: '.getMyText' }" colorScheme="{ path: 'LastName', formatter: '.getMyColorScheme', targetType: 'any' }" /> 使用 v4.ODataModel,属性绑定中的 数据类型 会根据实体属性的 EDM 类型自动确定。 IE。在上面的情况下:即使没有将某个 type 显式分配给 text 属性,v4.ODataPropertyBinding 也会自动选择 String 类型(因为 LastName 在 $metadata 中有 Type="Edm.String")并分配到type: <tnt:InfoLabel text="{ path: 'LastName', formatter: '.getMyText', type: 'sap.ui.model.odata.type.String' <-- automatically added by v4.ODataPropertyBinding }" 这对于 text 属性来说很好,因为它实际上等待 string 值,但对其他属性(例如等待 int 值的 colorScheme)执行相同操作,会导致 FormatException。* 为了防止自动类型确定,必须添加targetType: 'any'。 * 使用 commit:4611772(从 1.80 开始可用),我们可以在控制台中看到相应的错误消息: “Element sap.tnt.InfoLabel#...”的属性“colorScheme”中的FormatException:不是有效的int值。 提示:复合绑定和绑定表达式中引用的单个属性会自动转换为绑定控件属性的类型,除非指定了不同的“targetType”。 targetType:'any' 可能会避免转换并导致预期的行为。 意外定义Expression Binding时,上述错误也适用。尽管表达式绑定语法有效,但请参阅 “属性中的 FormatException ...”错误
我正在尝试使用 $expand 内的过滤器在多个级别的实体上获取嵌套的 json 结构。 Odata(OData v4.0) 查询如下所示: https://{{context-path}}/Workers?$select=Wo...