カペルソフト / npmsearch-api
使用npmsearch.com API搜索NPM包
Requires
- php: ^7.0
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- larapack/dd: ^1.0
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2024-09-15 05:23:34 UTC
README
这是为PHP编程环境实现的npmsearch.com API。有关npmsearch.com及其API的更多信息,请访问他们的GitHub仓库。
安装
您可以通过composer安装此包
composer require kapersoft/npmsearch-api
使用方法
首先,您需要初始化NpmSearch对象。
// Initiate NpmSearch $npmSearch = new Kapersoft\NpmSearch\NpmSearch();
如果您想使用自己的NpmSearch实现。您可以在Kapersoft\NpmSearch\NpmSearch
的构造函数中覆盖API的URL。您还可以将您的自己的Guzzle HTTP客户端传递给构造函数。
// Create Guzzle HTTP Client $guzzleClient = new \GuzzleHttp\Client(); // Initiate NpmSearch with custom URL and Guzzle HTTP Client $npmSearch = new Kapersoft\NpmSearch\NpmSearch('https://my-own-npmsearch-api/query', $guzzleClient);
搜索包
您可以使用search
方法来搜索包
// Search for kapersoft $npmSearch->search('kapersoft');
结果将被转换为类似以下的数组
array:4 [ "results" => array:1 [ 0 => array:8 [ "maintainers" => array:1 [ 0 => "kapersoft" ] "score" => array:1 [ 0 => 0 ] "author" => array:1 [ 0 => "kapersoft" ] "name" => array:1 [ 0 => "npo" ] "description" => array:1 [ 0 => "CLI utility to watch NPO streams in QuickTime Player" ] "version" => array:1 [ 0 => "1.2.0" ] "rating" => array:1 [ 0 => 0 ] "modified" => array:1 [ 0 => "2018-02-11T22:22:18.543Z" ] ] ] "total" => 1 "size" => 10 "from" => "0" ]
指定字段
默认情况下,结果将包括所有字段,除了readme
。您可以在NpmSearch
对象的$fields
属性中指定字段。
例如
// Search for jquery with field 'name' returned in the result $npmsSearch->fields = ['name']; $npmSearch->search('jquery');
将返回此结果
array:4 [ "results" => array:10 [ 0 => array:1 [ "name" => array:1 [ 0 => "makeup-jquery" ] ] 1 => array:1 [ "name" => array:1 [ 0 => "egis-jquery-qrcode" ] ] 2 => array:1 [ "name" => array:1 [ 0 => "eslint-plugin-jquery" ] ] 3 => array:1 [ "name" => array:1 [ 0 => "kd-shim-jquery-mousewheel" ] ] 4 => array:1 [ "name" => array:1 [ 0 => "jquery-joint-colorbox" ] ] 5 => array:1 [ "name" => array:1 [ 0 => "apta-jquery" ] ] 6 => array:1 [ "name" => array:1 [ 0 => "jquery-shim" ] ] 7 => array:1 [ "name" => array:1 [ 0 => "eslint-plugin-various" ] ] 8 => array:1 [ "name" => array:1 [ 0 => "makeup-ebay" ] ] 9 => array:1 [ "name" => array:1 [ 0 => "jquery-cycle-2" ] ] ] "total" => 33208 "size" => 10 "from" => "0" ]
分页
默认情况下,将返回前10个结果。如果您想查询更多包,可以指定$start
和$rows
参数
// Search for jquery packages 100 to 105 $npmSearch->search('jquery', 100, 5);
扩展搜索方法
在上述默认的search
方法旁边还有扩展搜索方法。例如,您可以按作者搜索包
// Search for packages by author 'npm' $npmSearch->searchByAuthor('npm');
当然,这些方法也支持$start
和$rows
参数
// Search for packages by author 'npm' from 15 to 25 $npmSearch->searchByAuthor('npm', 15, 10);
高级搜索选项
在后台,npmsearch.com是一个指向ElasticSearch服务器的代理。因此,您可以在search
方法中使用ElasticSearch查询字符串语法
// Search for packages using a regular expression $npmSearch->search('name:/joh?n(ath[oa]n)/');
可用的搜索方法
以下是所有搜索方法的完整列表
search($q, $start = 0, $rows = 10)
searchByAuthor($author, $start = 0, $rows = 10)
searchByCreated($created, $start = 0, $rows = 10)
searchByDependencies($dependencies, $start = 0, $rows = 10)
searchByDescription($Description, $start = 0, $rows = 10)
searchByDevDependencies($devDependencies, $start = 0, $rows = 10)
searchByHomepage($homepage, $start = 0, $rows = 10)
searchByKeywords($keywords, $start = 0, $rows = 10)
searchByMaintainers($maintainers, $start = 0, $rows = 10)
searchByModified($modified, $start = 0, $rows = 10)
searchByName($name, $start = 0, $rows = 10)
searchByRating($rating, $start = 0, $rows = 10)
- 根据bin/ratings.js计算的评分searchByReadme($readme, $start = 0, $rows = 10)
searchByRepository($repository, $start = 0, $rows = 10)
searchByScripts($scripts, $start = 0, $rows = 10)
searchByTimes($times, $start = 0, $rows = 10)
searchByVersion($version, $start = 0, $rows = 10)
测试
在/tests
文件夹中定义了一个测试
NpmSearchTest.php
使用模拟的Guzzle对象测试了Kapersoft\NpmSearch\NpmSearch-class
;
您可以在终端中运行测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG
贡献
有关详细信息,请参阅CONTRIBUTING
安全
如果您发现任何与安全相关的问题,请通过电子邮件 kapersoft@gmail.com 联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。