如何列出所有可通过API查询的参数?

How to list all parameters available to query via API?

作为 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。正如那里的第二个答案似乎暗示的那样,也许这会有所作为。

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

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

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

至于那些貌似没有效果的参数,看来问题中的API没有验证查询参数,也就是说,你可以在查询中放入任意参数,服务器会简单地忽略参数它没有专门编程使用。

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

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

你最好的选择是通过增加 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>