当前位置: 首页 > 知识库问答 >
问题:

如何将api参数标记为Swagger UI for Web API 2的可选项?

孟跃
2023-03-14

我正在使用 Swagger for WebApi 5.5.3 nuget 包作为 API 文档。在招摇的 UI 中,它显示可选参数的必需选项。

我在Visual studio中尝试了XML注释选项。以下是我要记录的 API 方法:

    /// <summary>
    /// Gets the history.
    /// </summary>
    /// <param name="currentPageIndex">Index of the current page.</param>
    /// <param name="pageSize">Size of the page.</param>
    /// <param name="lastSyncDate">The last synchronize date.</param>
    /// <returns></returns>
    [HttpGet]
    [Route("GetHistory/{currentPageIndex}/{pageSize}")]
    public IHttpActionResult GetHistory(int currentPageIndex, int pageSize, DateTime? lastSyncDate)
    {
        var response = _myRepo.GetData();
        if (response == null)
            return BadRequest(Messages.InvalidPageIndex);

        return Ok(response);
    }

它将lastSyncDate显示为查询参数,但是当我将其标记为可为空的参数时,它是必需的。

我还尝试使当前PageIndex在xml和路由中为空,但仍然根据需要显示所有属性。请帮忙。

共有1个答案

罗烨霖
2023-03-14

下面给出了此问题的解决方案

创建模型类

    using System;
    using System.ComponentModel.DataAnnotations;

    public class SearchHistory
    {
      [Required]
      public int CurrentPageIndex { get; set; }
      [Required]
      public int PageSize { get; set; }
      public DateTime? LastSyncDate { get; set; }
    }

使用新创建的模型更改输入参数

 [HttpGet]
 public IHttpActionResult GetHistory(SearchHistory modle)
{
    var response = _myRepo.GetData();
    if (response == null)
        return BadRequest(Messages.InvalidPageIndex);

    return Ok(response);
}

希望这能解决你的问题。

 类似资料:
  • 所以基本上我还是个新手,我在javascript中做了一个函数,把一个按钮变成一个选项标记,这样我就可以在0-4之间进行选择。现在我想改变选项,这样我就可以从一个数组中选择,但我不知道怎么做。我尝试将代码中的5改成数组的名称,但没有选项。

  • 我使用Restler框架来编写我的API,它使用swagger来记录东西。当我定义我的方法时,我对结果文档有两个问题。一个是参数的描述没有显示在swagger中,另一个是它说它们都是必需的。我如何在文档中将它们标记为可选的?我正在做类似下面的事情,其中类别和图片是可选参数。

  • 是否可以以某种方式标记属性,以便在发送请求时可以理解在SwaggerUI中应设置哪个字段。 例如,我们有一个支付路由,它具有payment_type属性,可以保存paypal、credit_card、crypto等值。基于该字段,我们需要填充不同的属性,如下所示。 是否有可能以某种方式标记它们,以便将它们分组,例如对于加密加密货币,应该设置wallet_address,而对于银行转帐,应设置快速,

  • 问题内容: 最近,我与队友讨论了 在方法中使用可选参数的问题。 假设方法是 接受一个和 可选参数 ,它返回该目录中列出的书籍,如果还传递了类别,则仅返回该类别中的书籍。 冲突点是,验证是否为空检查。我认为不应对此进行空检查,因为它是可选参数。函数的调用者可以通过或,并且函数应在实现中处理两种情况。 我的意见是,对于可选参数,只会使方法的约定更加明确。只需查看方法签名即可知道此参数是可选的,不需要读

  • 最近,我和我的队友讨论了在方法中使用作为可选参数。 假设方法是 我的观点是,对于可选参数,只会使方法的契约更加清晰。只要看一下方法签名就可以知道这个参数是可选的,不需要读取JavaDocs。但当他不想使用该可选参数时,不应强制他传递。 我的队友有不同的看法。他希望对其进行空检查,从而强制调用方始终传递。他的观点是为什么我们要通过一个空的可选选项。此外,看起来比更易读。 这个方法在我们的一个库包中,

  • 我已经通读了文档,但这似乎对我不起作用。我跟踪了这个医生。但我不确定这是否与我要做的事情有关,我认为这个文档是用于传递这样的查询- 这是我的目标:api.site.com/test/(optional_field) 因此,如果有人转到“测试”endpoint,它会将可选字段默认为一个参数,但如果他们在那里添加一些内容,它会将其作为输入。 也就是说,这是我的代码: 我想做的是,如果他们只是在没有可选