【问题标题】:How to list all parameters available to query via API?如何列出所有可通过 API 查询的参数?
【发布时间】:2021-10-05 15:32:28
【问题描述】:

作为 API 的终端用户,我如何列出所有可用于传递查询的参数?在我的例子中(关于帝国时代 2 比赛的统计数据),描述 API 的 website 有一个列表,其中有一些,但似乎还有更多可用的。

为了提供更多上下文,我提取了以下信息:

GET("https://aoe2.net/api/matches?game=aoe2de&count=1000&since=1632744000&map_type=12")

但由于某种原因,最后一个条件,map_type=12 什么都不做(输出与没有它时相同)。我在寻找可用的参数列表,所以我可以提取我想要的。

PD:this post 密切相关,但不关注 API。正如第二个答案似乎暗示的那样,也许这会有所不同。

【问题讨论】:

    标签: query-string


    【解决方案1】:

    不可能找出查询的所有可用(未记录的)查询参数,除非 API 明确提供这种方法,或者您可以找出 API 服务器如何处理查询。

    例如,如果 API 服务器代码是开源的,您可以从代码中了解查询是如何处理的。前提是你也找到了代码。

    post you linked 中的答案同样适用于 API 站点以及为 Web 浏览器提供内容的站点(Web 服务器可以两者兼有)。 在底层,API 服务器和提供 Web 内容 (html) 的服务器在处理查询方面不一定有任何区别。

    对于看似没有效果的参数,似乎有问题的API没有验证查询参数,即您可以在查询中放置任意参数,服务器将简单地忽略未专门编程的参数使用。

    【讨论】:

      【解决方案2】:

      他们网站上的文档是我们所有人都必须通过https://aoe2.net/#api

      您不能只是将自己的参数添加到 URL 并期望它返回一个值,因为他们必须对其进行编码才能以这种方式工作。

      最好的办法是通过增加 count 参数来尽可能多地提取数据,然后遍历 JSON 响应并从中提取 map_type。

      JavaScript 示例:

      <script>
      json=[{"match_id":"1953364","lobby_id":null,"game_type":0},
      {"match_id":"1961217","lobby_id":null,"game_type":0},
      {"match_id":"1962068","lobby_id":null,"game_type":1},
      {"match_id":"1962821","lobby_id":null,"game_type":0},
      {"match_id":"1963814","lobby_id":null,"game_type":0},
      {"match_id":"1963807","lobby_id":null,"game_type":0},
      {"match_id":"1963908","lobby_id":null,"game_type":0},
      {"match_id":"1963716","lobby_id":null,"game_type":0},
      {"match_id":"1964491","lobby_id":null,"game_type":0},
      {"match_id":"1964535","lobby_id":null,"game_type":12},];
      
      for(var i = 0; i < json.length; i++) {
          var obj = json[i];
      
          if(obj.game_type==12){
              //do something with game_type 12 json object
              console.log(obj);
          }
      }
      
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-23
        • 2015-11-02
        • 1970-01-01
        • 2019-01-26
        • 1970-01-01
        相关资源
        最近更新 更多