WebApi ApiExplorer ApiExplorerSettingsAttribute和IgnoreApi for Action Parameters

时间:2013-05-20 19:40:56

标签: asp.net-web-api asp.net-mvc-apiexplorer

您可以使用ApiExplorerSettingsAttribute设置IgnoreApi属性来修饰控制器或操作方法,以便不生成帮助信息。如果您尝试将相同的内容应用于操作方法的属性,则会出现错误:

public HttpResponseMessage Post([ApiExplorerSettings(IgnoreApi = true)]HttpRequestMessage request, ... )
  

错误2属性'ApiExplorerSettings'在此声明类型中无效。它仅对“类,方法”声明有效。

保持控制器操作可测试的一般惯例是接受HttpRequestMessage参数,但这是一个实现细节,而不是API消费者应该知道的内容。

如何在生成帮助页面时阻止ApiExplorer包含此参数?

1 个答案:

答案 0 :(得分:1)

为了清楚起见......通过这个“if you try to apply the same to an action method's attribute”,你的意思是你试图申请参数吗?

- 快速解决方法是对我们在此文件中的现有CancellationToken检查添加额外检查:\Areas\HelpPage\Views\Help\DisplayTemplates\Parameters.cshtml

// Don't show CancellationToken because it's a special parameter
    if (!typeof(CancellationToken).IsAssignableFrom(parameter.ParameterDescriptor.ParameterType))
    {

- 此外,您可以避免将HttpRequestMessage作为操作参数,因为您可以从控制器上的Request属性获取当前请求,但您希望将其作为测试参数...是吗?