カペルソフト/npmsearch-api

使用npmsearch.com API搜索NPM包

1.1.0 2018-03-18 20:18 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:23:34 UTC


README

Latest Version on Packagist Build Status StyleCI Quality Score Total Downloads

这是为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)。有关更多信息,请参阅许可证文件