【问题标题】:Correct way to pass a path as an argument for a GET request将路径作为 GET 请求的参数传递的正确方法
【发布时间】:2016-01-14 06:48:32
【问题描述】:

我有一个如下所示的 API 端点:

[HttpGet]
public ActionResult MyApiMethod(string path)
{
    // do stuff with path

    return Ok();
}

显然,我不能只传递路径,否则我的调用将 404。我认为 base64 编码是正确的,但显然 base64 编码会导致诸如“+”、“/”和“=”之类的符号。 ..这也会导致命中端点的随机错误。我应该如何将路径作为参数传递给 API GET 请求?

【问题讨论】:

    标签: c# api parameter-passing


    【解决方案1】:

    path='api/yourcontroller name/your action name'

    这是将路径传递给 api 控制器的方法

    【讨论】:

      【解决方案2】:

      使用string path 作为GET API 的参数是个坏主意。首先,使用此 API 的开发人员应该详细了解您的实现,例如“我需要对路径进行 url 编码吗?”或“路径是否以 / 开头?”或“如果我将主机名放在路径中怎么办?”。其次,您需要关心安全问题。

      我想使用列出所有支持的操作的enum

      public enum ApiAction
      {
          This,
          That
      }
      
      public ActionResult MyApiMethod(ApiAction apiAction)
      {
           //get the path from enum via a method or something
           var path = GetPath(apiAction);
      
           //do something to path
      }
      

      【讨论】:

      • 枚举是不可能的,api 将返回来自路径的文件的流数据。路径是动态的,所以没有枚举
      • @user3689167 所以你的意思是开发人员可以将任何path 传递给api?
      猜你喜欢
      • 2014-07-26
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多