有关MetaCPAN API(应用程序接口)的介绍,该API不需要事先了解MetaCPAN或ElasticSearch,请参阅“滥用MetaCPAN以获取乐趣和利润”的幻灯片或观看实际对话此API允许您从自己的应用程序以编程方式访问MetaCPAN。
还有示例库你可以和一起玩,赶紧起来跑。请发送元平移示例存储库的拉取请求,而不是编辑此wiki页面。如果你想编辑wiki,请这样做,但发送代码拉请求可能是最有帮助的方法。
可以使用MetaCPAN浏览器
要了解有关ElasticSearch查询DSL(领域特定语言)的更多信息,请查看Clinton Gormley的专用条款-ES Query DSL解释幻灯片。
ElasticSearch的参考页。您也可以查看有关Elasticsearch的入门教程参考页.
目前,使用API的唯一规则是“礼貌”。我们对搜索请求执行了5000个大小的上限。如果需要获取超过5000个项目,应该考虑使用滚动API。在本页中搜索“滚动”以获得使用的示例搜索::Elasticsearch或查看Elasticsearch滚动文档如果你以其他方式连接。
如果您获取的项目少于5000个,您当然可以滚动。如果您需要一个大数据集,那么可能需要这样做,但仍然需要运行许多请求来获取所有必需的数据。
请注意,当您滚动时,您的文档将返回未排序状态,如ElasticSearch扫描文档.
礼貌的一部分是让我们知道你是谁以及如何联系你。这不是强制性的,但请考虑将你的应用程序添加到API-消费者第页。
可通过访问相应的_映射
端点。
字段记录在API代码库中:https://github.com/metapan/metacpan-api/tree/master/lib/metacpan/Document查看播客,了解各个字段代表什么。一定要看一下https://github.com/metapan/metacpan-api/blob/master/lib/metacpan/Document/File.pm特别是因为/module的结果实际上是文件
类型。
在没有任何约束的情况下执行搜索是获取示例数据的简单方法
只需添加回调
使用回调的名称查询参数,您将得到一个JSONP响应。
您应该能够运行大多数POST查询,但目前公开的GET URL很少。然而,这些方便的端点可以帮助您开始。您应该注意到,它们的行为与POST查询不同,因为它们将向您返回模块或dist的最新版本,并删除包装结果的大量详细ElasticSearch数据。
这个/分配
端点接受分布
(例如。/分销/驼鹿),它返回有关不特定于版本的分发信息(如RT错误计数)。
这个/下载url
端点是专门为cpanm公司
客户端。它采用带有可选版本(或版本范围)和可选开发
标记(用于开发版本)并返回下载url
以及其他一些有用的信息。
显然,任何人都可以使用此端点,但我们只会在考虑如何更改此端点之后再考虑cpanm公司
可能会受到影响。
/release/{author}/{release}
这个/释放
端点接受分布
(例如。/释放/驼鹿
),它返回发行版的最新版本。或提供由其作者
和名称释放
(例如。/发布/DOY/Moose-2.0001
).
作者
指的是作者的贫困。它必须大写(例如。/作者/DOY
).
返回相应的文件
的最新版本模块
考虑到Moose-2.0001是最新版本/模块/驼鹿
与相同/文件/DOY/Moose-2.001/lib/Moose.pm
.
/pod/{author}/{release}/{path}
返回给定模块的POD。您可以通过传递内容类型
查询参数(例如。/吊舱/驼鹿?content-type=文本/普通
或通过添加接受
HTTP请求的标头。有效的内容类型为:
- text/html(默认)
- 文本/纯文本
- 文本/x-pod
- 文本/x标记
返回给定的最新授权版本的完整源代码模块
.
OALDERS最新版本名称:
https://fastapi.metacpan.org/v1/release/_search?q=author:OALDERS%20AND%20status:latest&fields=name,状态和大小=100
5000名CPAN作者:
https://fastapi.metacpan.org/v1/author/_search?q=*&尺寸=5000
所有提供Twitter ID的CPAN作者:
https://fastapi.metacpan.org/v1/author/_search?q=profile.name:twitter
所有更新了MetaCPAN配置文件的CPAN作者:
https://fastapi.metacpan.org/v1/author/_search?q=更新:*&sort=更新:desc
SZABGAB给出++的前100个分布:
https://fastapi.metacpan.org/v1/收藏夹/搜索?q=用户:sWuxlxYeQBKoCQe1f-FQ_Q&size=100&fields=分布
最近的100个版本(类似于https://metapan.org/recent)
https://fastapi.metacpan.org/v1/release/_search?q=status:latest&fields=name,status,date&sort=日期:desc&size=100
DOY的dist收到的++个“e”的数量:
https://fastapi.metacpan.org/v1/favorite/_search?q=author:DOY&size=0
拥有++'ed DOY dists和++'ed dists的用户列表:
https://fastapi.metacpan.org/v1/favorite/_search?q=author:DOY&fields=user,分发
最后50个dists获得++:
https://fastapi.metacpan.org/v1/favorite/_search?size=50&fields=author,user,release,date&sort=日期:desc
Test Simple分发版的Changes文件:
https://fastapi.metacpan.org/v1/changes/Test-Simple网站
也许开始使用MetaCPAN的最简单方法是MetaCPAN::客户端.
你可以开始获取作者数据的示例脚本.
使用Search::Elasticsearch查询API
位于fastapi.metacpan.org的API服务器是弹性搜索实例。它添加了对方便的GET URL的支持,处理身份验证并进行一些访问控制。因此,您可以使用强大的API搜索::Elasticsearch查询MetaCPAN。
注释:该cxn_pool=>'静态::NoPing'
之所以重要,是因为Elasticsearch前面有HTTP代理。
你可以开始获取作者数据的示例脚本.
当您在自己的工作中使用它们时,请随时在此处添加查询,以便其他人可以向您学习。
此查询返回列出MooseX::NonMoose作为附属国。
卷曲-XPOSThttps://fastapi.metacpan.org/v1/release/_search-天'{
“大小”:5000,
“字段”:[“分发”],
“过滤器”:{
“和”:[
{“term”:{“dependency.module”:“MooseX::NonMoose”}},
{“术语”:{“成熟度”:“发布”}},
{“术语”:{“状态”:“最新”}}
]
}
}'
请注意,还可以通过将JSON查询适当编码为来源
参数。例如,上面的查询会变成:
卷曲'https://fastapi.metacpan.org/v1/release/_search?source=%7B%22query%22%3A%7B%22match_all%22%3A%7B%7D%2C%22size%22%3A5000%2C%22%fields%22%3A/5B%22distribution%22%5D%2C%22filter%22%3A/7B%22和%22%3A%5 B%7B%22%22term%22%3A%3A%7B%22 release.dependency.module%22%3A%22MooseX%3ANonMoose%22%7 D%7D%2C%7B%22term%22%3A%7B%22发布。到期日%22%3A%22发布%22%7D%7D%2%7B%22term%22%AA%7B%22释放。状态%22%3A%22最新%22%7D%7D%5D%7D%7D'
卷曲-XPOSThttps://fastapi.metacpan.org/v1/release/_search?尺寸=100-d'{
“查询”:{
“范围”:{
“日期”:{
“gte”:“2010-06-05T00:00:00”,
“lte”:“2011-06-05T00:00:00”
}
}
},
“字段”:[“license”,“name”,“distribution”,“date”,“version_numified”]
}'
卷曲-XPOSThttps://fastapi.metacpan.org/v1/release/_search-d日'{
“查询”:{
“match_all”:{}
},
“aggs”:{
“许可证”:{
“条款”:{
“field”:“license”
}
}
},
“大小”:0
}'
卷曲-XPOSThttps://fastapi.metacpan.org/v1/file/_search-d日'{
“query”:{“filtered”:{“query”:{“match_all”:{}},“filter”:{“term”:{“level”:0}}}
},
“aggs”:{
“许可证”:{
“条款”:{
“大小”:100,
“字段”:“名称”
} } },
“大小”:0
}'
卷曲-XPOSThttps://fastapi.metacpan.org/v1/file/_search-d日'{
“查询”:{“已筛选”:{
“查询”:{“match_all”:{}},
“筛选器”:{“和”:[
{“term”:{“module.name”:“DBI::Profile”}},
{“术语”:{“模块版本”:“2.014123”}}
]}
}},
“字段”:[“释放”]
}'
请注意,“大小”应该是您正在寻找的发行版的数量。
lynx--转储--post_datahttps://fastapi.metacpan.org/v1/release/_search<<终止
{
“查询”:{“术语”:{-“分发”:[
“Mojolicious”,
“MetaCPAN-API”,
“DBIx-Class”
] } },
“过滤器”:{“术语”:{-“状态”:“最新”}},
“字段”:[“分发”,“版本”],
“大小”:3
}
终止
卷曲-XPOSThttps://fastapi.metacpan.org/v1/file/_search-d日'{
“查询”:{
“match_all”:{}
},
“大小”:1000,
“字段”:[“名称”,“状态”,“目录”,“路径”,“分发”],
“过滤器”:{
“和”:[
{“term”:{“directory”:false}},{“tem”:}“path”:“}}
]
}
}'
列出有bugtracker电子邮件地址但没有url的版本
卷曲-XPOSThttps://fastapi.metacpan.org/v1/release/_search-d日'{
“查询”:{
“match_all”:{}
},
“大小”:10,
“字段”:[“名称”,“resources.bugtracker.mailto”],
“过滤器”:{
“和”:[
{“术语”:{“成熟度”:“发布”}},
{“术语”:{“状态”:“最新”}},
{“exists”:{“field”:“resources.bugtracker.mailto”}},
{“缺少”:{“字段”:“resources.bugtracker.web”}}
]
}
}'
卷曲-XPOSThttps://fastapi.metacpan.org/v1/file/_search-d日'{
“查询”:{“已筛选”:{
“查询”:{
“query_string”:{
“query”:“轴值”,
“字段”:[“pod.analysed”,“module.name”]}
},
“过滤器”:{“和”:[
{“术语”:{“分发”:“PDL”}},
{“术语”:{“状态”:“最新”}}
]}
}},
“字段”:[“documentation”,“abstract”,“module.name”],
“大小”:20
}'