如何列出所有可通过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>
作为 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>