当控制器使用错误的返回类型时,是否有办法引发警告

时间:2019-01-24 15:06:17

标签: asp.net-web-api asp.net-core swagger

我正在使用"Hello There! This is a really long string that I want split".chunked(10) 构建Web Api。我正在使用connectionString = new connectionString("mongodb://address1:27017,address2:27018,address3:27019/?replicaSet=rs0"); MongoClientSettings settings = MongoClientSettings.builder().applyConnectionString(connectionString) .build(); settings = settings.builder().credential(credential).build(); asyncMongoClientInstance = MongoClients.create(settings); 测试端点。我的模型在不断发展,当我重构某种方法以返回与以前不同的类型时,很容易错过在MongoClientSettings settings = MongoClientSettings.builder().applyConnectionString(connectionString).credential(credential).build(); 中更改控制器中的这种类型。

一个简化的示例:

Asp.Net Core 2.2

这将很好地工作,除了它将在swagger中显示错误的返回类型(即使它实际上返回了ActionResult<T>也会显示返回类型,如果 [ProducesResponseType(200)] [HttpGet] public ActionResult<string> Get() { int myNumber = 1; return Ok(myNumber); } 则显示返回类型)。有没有办法针对这种情况发出警告?

编辑1:提供更详细的示例:

swagger

如果我在string中关注,将会得到:

enter image description here

我不希望它引发错误,但是警告会很好。

P.S。可能会有警告的想法来自软件包int,该软件包在以下情况下会产生警告:

    public class MyClass
    {
        public Guid ProductId { get; set; }
        public string ProductName { get; set; }
    }

    public class MyOtherClass
    {
        public string UserId { get; set; }
        public string Username { get; set; }
        public DateTime CreationDate { get; set; }
    }

    [ProducesResponseType(200)]
    [HttpGet]
    public ActionResult<MyClass> Get()
    {
        var myOtherClass = new MyOtherClass();
        return Ok(myOtherClass);
    }

建造时我得到以下信息:swagger

1 个答案:

答案 0 :(得分:0)

Swagger将返回结果报告为string,因为这就是您要执行的操作。 int实际上被强制为string。您基本上只是幸运(不幸?),这在框架中是可行的。如果您返回的内容无法自动强制为返回类型,则它将引发异常。

因此,这里并没有真正的警告。如果有的话,我只会在大多数情况下避免返回字符串,或者至少开始使用更严格的类型(例如bool)来开发您的方法。例如,您可以像这样对它进行存根:

public ActionResult<bool> MyAwesomeAction()
{
    return Ok(true);
}

然后,构建您的方法,当您准备进行实际收益时,将true更改为实际收益。然后,这将导致语法错误,因为您的返回类型不能解释为bool,并提示您也更改通用参数。