调用GitHub仓库搜索API发起GET请求时如何指定多个编程语言
GitHub仓库搜索API多语言筛选实现方法
GitHub的搜索查询语法不支持language:[scala, java]这类数组值传参格式,要实现多语言筛选,需要按照接口支持的布尔运算规则,将每个语言条件作为独立字段拼接组合。
核心语法规则
- 单个语言筛选是独立的
language:语言名字段,不能把多个语言值直接塞在同一个language字段后传参 - 要实现“匹配任意一种指定语言”的效果,用大写的
OR逻辑运算符连接各个独立的language条件即可 - URL传参时,查询语句中的空格可以统一用
+或%20转义,保证接口能正确解析查询内容 - 之前尝试的数组写法无法生效,本质是接口的
language字段仅支持单值匹配,不支持单字段传入数组类型的多值参数
正确请求示例
替换错误写法后,满足需求的完整请求地址为:
https://api.github.com/search/repositories?q=stars:%3E=1000+language:scala+OR+language:java&sort=stars&order=desc&per_page=10
这个请求实际拆解的查询逻辑是:筛选星标数大于等于1000、代码语言为Scala或Java的仓库,结果按照星标数降序排列,单页返回10条,完全匹配多语言筛选的预期效果。
常用调整技巧
- 如果需要增加更多筛选语言,直接按照
+OR+language:新增语言名的格式往后拼接查询条件即可,比如要同时纳入Kotlin语言的仓库,只需将q参数调整为stars:%3E=1000+language:scala+OR+language:java+OR+language:kotlin - 如果需要排除特定语言的仓库,把连接词换成大写的
NOT即可,比如排除C++语言的仓库就写成NOT+language:c++ - 注意
OR、NOT这类逻辑运算符必须大写,小写写法无法被API正确识别
内容的提问来源于stack exchange,提问作者mikayelgrigoryan
相关产品推荐
相关产品推荐

