【问题标题】:Same action but different default params相同的操作但不同的默认参数
【发布时间】:2020-11-22 05:19:48
【问题描述】:

我有一个操作,我希望拥有与禁用和启用 TFA 相同的功能,因为我需要做的就是更改 setup tfa 方法的 bool 标志,如下所示:

[HttpPost("enable-tfa")]
public async Task<IActionResult> Enable()
{
   var providers = await _identityManager.SetTwoFactorEnabled(true);

   if (!providers.Any())
       return Forbid();

   return Ok();
}

我希望能够在两条路线上都使用这种方法:

[HttpPost("enable-tfa")]

[HttpPost("disbale-tfa")]

但是对于他们每个人,我想将truefalse 传递给SetTwoFactorEnabled() 方法。而不是有两个基本上做同样事情的独立动作。我也不想依赖客户端发送truefalse

【问题讨论】:

  • 对于这个小例子,我认为有两个不同的操作没有任何问题。他们不做同样的事情,一个启用 MFA,另一个禁用它。如果需要完成更多工作,您可以创建一个私有方法,该方法接受一个布尔值并在那里完成工作。

标签: c# api routes


【解决方案1】:

您应该将bool 参数添加到操作方法并根据其值编写逻辑,即truefalse

【讨论】:

    【解决方案2】:

    有很多方法可以做到这一点。这是其中之一。我们将有一个名为enable的查询参数

    [HttpPost("enable-tfa")]
    public async Task<IActionResult> EnableTFA([FromQuery] bool enable)
    {
       var providers = await _identityManager.SetTwoFactorEnabled(enable);
    
       if (!providers.Any())
           return Forbid();
    
       return Ok();
    }
    

    那么你可以这样称呼它:http://example.com/api/enable-tfa?enable=true

    【讨论】:

      猜你喜欢
      • 2019-01-30
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      相关资源
      最近更新 更多