C# Web API 帮助文档 IHttpActionResult

18
我有一个C# Web API,我正在尝试让自动生成的帮助文档与IHttpActionResult一起使用。我简化了下面的示例,使其更易于阅读。
对于对象而言,以下是一个简单的示例。BusinessObject只是一个包装器。CollectionBase是CollectionBase:ObservableCollection<T>,ILoadable where T:BusinessObject。它是一个旧的自动生成的代码库,但现在被重复使用。
    public class Value : BusinessObject
    {
        public int Id { get; set; }
    }
    public class Values : CollectionBase<Value>
    {
        public override Value LoadObject(System.Data.IDataRecord record)
        {
            return new Value();
        }
    }

对于API方面的事情。以下内容有效。
public class Values : ApiController
{
    public IEnumerable<Value> GetThis()
    {
        Values values = new Values();
        return values;
    }
}

enter image description here

问题出现在我尝试执行时。
    public IHttpActionResult GetThis()
    {
        Values values = new Values();
        return Ok(values);
    }

它没有意识到应该使用不同的返回类型。'资源描述'最终成为没有示例输出的IHttpActionResult。现在我可以添加
config.SetActualResponseType(typeof(IEnumerable<Value>), "Values", "GetThis");

它将显示一个示例输出,但“资源描述”仍将是IHttpActionResult。这是我遇到的主要问题。我想使用IHttpActionResult,因为它非常容易使用,并且可以轻松返回错误代码。我只想能够自动构建文档。

更新:在进一步研究后,我找到了这篇文章。 Web API帮助页面上的资源描述显示为“无”。

基本上,您需要向方法添加响应类型属性。

[ResponseType(typeof(IEnumerable<Value>))]
public IHttpActionResult GetThis()
{
    Values values = new Values();
    return Ok(values);
}

虽然这个技术上是可行的,我也已经修改了现有的代码来使用它。但如果有一种自动地解决它的方法会更好。不确定是否可能。


如果你找到了答案,那么你应该回答自己的问题(是的,那就是正确的答案;P)。 - julealgon
是的,我正在考虑这个问题。有点希望有人能提出“嘿,只需更改配置以查看OK(type)返回的内容”,这样就不必每次都包含属性,就可以为每种方法执行此操作。我会再等一段时间来看看是否有更好的答案。 - Kalel Wade
1个回答

33

这对我当前的工作来说是有效的。每次都要包含有点繁琐,但它可以让我在必要时返回错误代码并保留帮助文档的功能。

[ResponseType(typeof(IEnumerable<Value>))]
public IHttpActionResult GetThis()
{
    Values values = new Values();
    return Ok(values);
}

Web API帮助页面上的资源描述显示为“无”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接