删除ProducesResponseType属性webapi aspnetcore 2.1

时间:2018-06-11 05:14:45

标签: asp.net-core-webapi

我目前正在执行以下操作并添加ProducesResponseType属性以生成更好的api文档

    [HttpGet(Name=nameof(MyNewMethodAsync)
    [ProducesResponseType(typeof(MyClassResponse), (int)HttpStatusCode.OK)]
    [ProducesResponseType(typeof(MyClassResponse), (int)HttpStatusCode.BadRequest)]
    [ProducesResponseType(typeof(MyClassResponse), (int)HttpStatusCode.NotFound)]
    [SwaggerOperation(nameof(MyNewMethodAsync))]
    public async Task<ActionResult<MyClassResponse>> MyNewMethodAsync([FromQuery] MyClassRequest request)
    {}

我们是说上面的内容可以简化,不需要ProducesResponseType,相当于以下内容:

    [HttpGet(Name=nameof(MyNewMethodAsync)      
    [SwaggerOperation(nameof(MyNewMethodAsync))]
    public async Task<ActionResult<MyClassResponse>> MyNewMethodAsync([FromQuery] MyClassRequest request)
    {}

如果我想为每个HttpStatusCode提供更好的描述

,那该怎么办?

非常感谢

1 个答案:

答案 0 :(得分:4)

简单地说,如果根据方法定义无法确定所有可能的响应状态代码,则ProducesResponseType属性是必需的。例如,200是显而易见的,但如果您确实需要返回201,则需要指定。同样适用于404,等等。我当然不确定400,因为2.1现在自动检查ModelState.IsValid,所以这现在可能是默认的响应类型,但如果没有,那么你也需要一个属性。 2.1这里唯一购买的东西,不再需要实际指定返回类型本身,只需要状态代码。