【问题标题】:Web Api 2 : "Sample not available"Web Api 2:“示例不可用”
【发布时间】:2014-12-14 14:22:36
【问题描述】:

我正在尝试为我的 Web Api 自动生成帮助文档。

但是我看到在一种特定方法上无法生成示例请求,如图所示:

以下是参数请求参数:

为什么无法生成示例请求格式?

【问题讨论】:

  • 到目前为止您尝试过什么?或者您是否按照任何教程来实现这一点,如果是,然后发布链接?
  • @ArindamNayak 我没有遵循任何教程,因为我使用了 Web Api 2 几个月以来它成功生成了示例数据,这就是为什么我想知道为什么它不会用于这个特定的示例。
  • 这可能会有所帮助 -stackoverflow.com/questions/14843243/…
  • @ArindamNayak 我尝试生成 XML 文件,但仍然得到相同的结果,虽然很奇怪。

标签: asp.net web asp.net-web-api asp.net-web-api2


【解决方案1】:

我发现返回 IHttpActionResult 的操作缺少样本。为了获得为这些方法生成的样本,我必须使用ResponseTypeAttribute 来装饰动作,例如:

[ResponseType(typeof(Model))]
public async Task<IHttpActionResult> Get(int key)
{
    var entity = await dbContext.Models.FindAsync(key);

    if (entity == null)
    {
        return NotFound();
    }

    return Ok(entity);
}

【讨论】:

  • 这肯定是最简单的解决方法。
  • 同样重要的是要记住您的结果类应该是公开的。
【解决方案2】:

确保您创建的任何对象都有一个空的构造函数。 Web API 帮助页面不能“自动”创建没有空构造函数的对象。如果创建一个空的构造函数不是一个选项,你可以使用 config.SetSampleObjects '手动'创建它们

【讨论】:

    【解决方案3】:

    对于任何想知道@chris 和@wade-wright 之间哪个答案是正确的人。

    答案是两者兼而有之。两者都是必需的。因此,例如,如果您正在创建一个虚拟机来将 API 返回的内容整合到必要的数据中,您可能会考虑执行以下操作:

    [ResponseType(typeof(YourVM))]
    

    在您的控制器操作之上

    和你的虚拟机中的一个空构造函数:

     public class YourVM
        {
            public YourVM() { }
        }
    

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多