问题标签 [asp.net-web-api-helppages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4026 浏览

asp.net-web-api - 在 Web API 2 中使用属性路由时限制自动帮助页面内容

我目前正在使用 Web API 2 的属性路由(http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api实现一个 Web API -2 )。我还使用帮助页面模块从 XML 注释自动生成文档(http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages)。

对于这个 API,我提供了对可选返回格式扩展的支持,因此每个 API 方法都定义了一对路由,如下所示:

这允许用户点击其中任何一个并获得结果:

我的问题是,当帮助页面使用 MapHttpAttributeRoutes() 生成文档时,它会为每种方法选择两条路线。所以现在我看到了以下帮助:

但我只想看到:

我更愿意在每个方法上隐藏非扩展路由,以便每个方法只显示一个帮助页面条目。

有没有其他人尝试过类似的东西?有没有我想念的解决方法?

0 投票
2 回答
6009 浏览

c# - WebAPI 帮助页面 - 返回或参数模型/类属性的文档

我正在使用带有 Web API 2 (5.0) 的 Web API 帮助页面——这两个都是最新的 Nuget 包。我希望帮助文档显示对作为参数或在 HttpResponseMessage 正文中返回的类的属性的注释。

例如,我有一个这样的控制器方法:

我希望我拥有的 XML 评论MyClassType1显示MyClassType2在上述发布操作的帮助页面上。

我看过的所有地方,到目前为止似乎还不支持。但是,我想知道是否有人能够通过扩展 ApiExplorer、添加到 XmlDocumentationProvider 等来使其工作?

我知道注释和属性包含在生成的 XML 文件中,所以我可以尝试手动解析(所有参数和返回类型都在MyAssemblyName.Models命名空间中,所以我的想法是我可以查找具有一个以该命名空间开头的成员名称。但是,我知道内置的 Web API 帮助页面有一些缓存功能,所以我更喜欢以某种方式将其与现有功能结合起来(只需添加它)。

通过将 Parameters.cshtml 模板更新为此,我设法显示了参数的类型(仅向下一层):

上述GetFriendlyTypeName()方法的实现如下所示:如何使用反射获得泛型类型的正确文本定义?

但是,这并没有让我得到这些类的注释,并且它对嵌套类型没有帮助(例如,如果我的模型上有一个复杂类型的属性,它将不会显示该复杂类型属性的属性)。无论如何,如果没有 XML 注释,这些类型就不够用了。

此外,这仅适用于参数,但不适用于 HttpResponseMessage 正文中包含的返回类型。ResponseTypeAttribute通过实现如下所示,我能够使响应示例正常工作:自动生成返回类型为 HttpResponseMessage 的帮助页面,但同样没有为我提供带有 XML 注释的属性。我可以使用反射来获取类型,类似于我再次获取参数类型的方式,但我真的希望 XML 注释与类型一起,包括嵌套的复杂类型。

我还发现将模型/类文档(具有类型和 XML 注释的属性)与服务调用分开记录是可以接受的,并且让服务调用只显示它们返回的类型的名称(然后至少用户可以找到该类型的文档)。

有没有人能够实现类似于我试图为参数或返回类型做的事情,最好是两者?或者有什么想法可以为我指明正确的方向?

0 投票
3 回答
2422 浏览

c# - 将 WebApi.HelpPage 添加到 webApi 项目后的 StructureMap 异常

我按照此处的说明将 webApi.HelpPage 区域和视图添加到使用 structureMap 的现有项目中 - 但在访问 /Help url 时:

所以我在结构映射配置上遗漏了一些东西:

任何人都可以将 structureMap 新手指向正确的方向吗?

0 投票
2 回答
3681 浏览

asp.net-web-api - Web API 帮助页面 - 按路由前缀排序控制器

由于 Web API 中不容易支持区域(也因为我需要比项目范围的路由规则更大的灵活性),我使用[RoutePrefix]控制器上的属性将我的 Web API 控制器分组到命名空间中,例如:

(这些在单独的文件中并包含其中的操作,为简单起见,我只是将其与实际名称一起删除。)

我正在使用 Web API 帮助页面生成帮助文档,效果很好。但是,我想按我的“命名空间”对文档进行分组和排序(按路由前缀分组,然后在每个中按字母顺序排序)。

我决定从订购开始,然后在订购开始工作后弄清楚分组。为了使订购起作用,我尝试从以下内容更改我的Index.cshtml[in the HelpPagearea created by the Web API Help Page Nuget package]:

对此:

但是,我得到一个空引用异常:在上面的 LINQ 表达式中,g.Key.GetCustomAttributes<RoutePrefixAttribute>().FirstOrDefault()我的所有控制器都为空。这对我来说没有任何意义,因为路由本身工作正常(包括前缀)。有什么建议么?

0 投票
1 回答
2374 浏览

asp.net-web-api - Web API 帮助页面发出“已添加具有相同密钥的项目”

我刚刚将我的 Web API 帮助页面升级到了 2.1 版。当我尝试打开帮助页面时,出现以下错误:

我已经将问题追溯到这两个控制器操作:

如果我删除 [FromUri],帮助页面将正确显示。如果我使用 [FromUri],它会以某种方式认为这两个端点是相同的。

有解决方法吗?

0 投票
1 回答
2733 浏览

asp.net-web-api - 扩展 webapi 2.1 的帮助页面以包含其他数据

我在 microsoft高级帮助页面自定义中发现了 Yao 的一篇过时的帖子

我已尝试实施这些步骤,但是我无法在帮助文档中显示我的自定义评论。

在我的

XmlDocumentationProvider.cs

我有修改

我已经更新了

HelpPageModel.cs

包括

我更新的最后一件事是 GenerateApiModel

每次我运行应用程序 responseDocProvider 都是空的。有什么突出的地方看起来我做错了吗?

非常感谢您对问题的帮助

0 投票
1 回答
242 浏览

c# - 扩展 ApiController 后 WebApi2 帮助页面停止生成文档

我已扩展 ApiController 以包含一些常见的属性/方法,并且此扩展控制器保存在单独的类库/程序集中。

在我的 Api 项目中,所有控制器都继承自这个扩展控制器。

很简单...

但是,扩展基类现在可以防止帮助页面生成器实际从这些控制器生成文档。如果我将控制器切换回直接从 ApiController 继承,它们在文档中可见。

有没有办法允许/更改生成器查找的程序集名称?我有一个偷偷摸摸的怀疑,它正在将一个基类直接与“ApiController”进行比较,因此跳过了我的所有内容。

0 投票
2 回答
888 浏览

c# - 单元测试以确保只有选定的 HTTP 动词适用于 WebAPI

使用 WebAPI。

我们创建的一项测试是确保对于特定控制器,仅在允许的情况下使用 GET 动词。

使用 MVC HelpPages 编写了一个测试

现在这个测试虽然可能不是确保对于我们的控制器,只有 GET HTTP VERB 方法适用的最佳方法,但它可以工作。

我们现在已经升级到 MVC5,这个测试现在失败了。由于 HttpSelfHostServer 不再可用

查看 Microsoft 的 msdn 库,不建议您使用 HttpSelfHostServer,而是鼓励您使用 Owin。

我从一个新的 Owin 课程开始

但是当涉及到测试时,这是我所能得到的

我不知道如何从配置中访问服务,然后能够调用 GetApiExplorer 方法,因为 Intellisense 建议的服务器变量上没有公共方法。

我一直在看一些展示如何使用 Owin 的网站,但它们并没有帮助我解决这个问题: http ://www.asp.net/web-api/overview/hosting-aspnet-web-api/use- owin-to-self-host-web-api

还有这个存在的问题 Can't get ASP.NET Web API 2 Help pages working when using Owin 但这并没有帮助我解决问题。

我需要做什么,才能编写单元测试以确保控制器/方法只允许特定的 HTTP VERBS,或者如何配置 Owin 以使用 API HelpPages

0 投票
1 回答
1236 浏览

asp.net-web-api - WebAPI 帮助页面不显示 OData 控制器的所有端点

我使用 OData 为我的 ASP.NET MVC Web API 添加了帮助页面组件。为了使其正常工作,我必须明确指定 [ApiExplorerSetting(IgnoreAPI = false)]。

但是,它仅显示默认的 GET 端点,例如:api/Customers。

但我的 API 也支持 GET by ID 和一些导航属性,例如:api/Customers(id) 和 api/Customers(id)/ContactPerson

有没有办法让帮助页面自动生成这些端点?

谢谢 !

0 投票
2 回答
804 浏览

c# - C# Webapi HelpPage 请求模型自定义

我已经使用 HelpPage 创建了我的 WebAPI 控制器的文档。我的网络 api 中有以下模型。

HelpPage 在帮助页面上呈现 InfoModel,如下所示:

使用模型验证中的 [Required] 属性,我想突出显示具有 [Required] 属性的属性。如何将 HelpPage MVC 插件自定义为粗体“ id ”和“ title ”,以便用户知道这些属性是必需的:

{

身份证”:1,

" title ": "示例字符串 2",

"status": "示例字符串 3",

"created_at": "示例字符串 4"

}

我了解 Jquery/CSS,但是对于那个 HelpPage MVC 应该渲染 HTML 内容并带有一些标记 [Required] 属性,以便 JS/CSS 可以在客户端以不同的方式设置它们。我期待在负责为 InfoModel 生成 HTML 的Areas.HelpPage.ObjectGenerator类中进行一些修改。