picamator/neo-ws-client

NASA 开放 API 客户端:近地天体 Web 服务

1.1.0 2016-11-29 17:33 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:19:55 UTC


README

PHP 7 ready Latest Stable Version License SensioLabsInsight

主分支

Build Status Coverage Status

开发分支

Build Status Coverage Status

NeoWsClient - NASA 开放 API 客户端 "近地天体 Web 服务" 或简称 NeoWs。所有 NeoWs 数据均来自 NASA JPL 小行星团队

NeoWsClient 支持 NeoWs v1 版本,带有以下资源:

  • feed
  • neo
  • stats

要求

安装

更新你的 composer.json 文件

{
    "require": {
        "picamator/neo-ws-client": "~1.0"
    }
}

示例

要运行示例,请在 config 目录下创建 parameters.yml 文件,使用 parameters.yml.dist 作为模板。DEMO_KEY 是一个有效的 API 令牌。它每小时、每天都有请求限制。更多信息请参阅 NASA 官方文档

示例列表

任意精度数学

NeoWsClient 仅将日期格式化为 DateTime 对象,其他则保持原始 API 的格式。NeoWs 使用字符串表示长精度浮点数,例如 .6304873017364636。在它们上执行 floatval 会移除最后两位数字。因此,NeoWsClient 不将字符串转换为 intfloat。要对 string floats 进行任何数学运算,请使用 BCMath。BCMath 负责任意精度数学。

技术规范

本节描述扩展和配置点。

依赖注入

NeoWsClient 使用 Symfony DI。配置在 services.yml 中。

数据映射

NeoWsClient 与数据映射一起工作,基于 API 响应创建对象。要进行定制或从 API 响应构建对象,需要创建映射存储库对象。映射存储库对象是简单的数据存储,其实现为 Mapper\Api\RespositoryInterface

该模式包含

错误

存在三种不同的错误类型

  • 响应 HTTP 状态码:401、403、404
  • 响应 HTTP 状态码 200,但内容为空
  • 异常

响应 HTTP 状态码:401、403、404

如果获取到 HTTP 状态码:401、403、404 或任何失败的响应,应用将返回空响应。空响应意味着有效的 Response 对象,其中

  • code:是 HTTP 状态码
  • data:响应字符串正文中的 stdClass
  • rateLimit:如果 API 响应头中存在,则包含数据的有效速率限制对象

响应 HTTP 状态码 200,但内容为空

如果 API 在多个同时请求的情况下返回空内容(HTTP 状态码 200),NeoWsClient 管理器将抛出 ManagerException 异常。因为 HTTP 状态码 200 表示成功,但内容错误,因此 NeoWsClient 无法通过 HTTP 状态码区分有效/无效数据。

该异常应该被捕获,而无需执行重试、等待 3 秒后重试等逻辑。相反,最好在 API 上使用缓存。

异常

NeoWsClient 抛出的完整异常列表在 Exception 文件夹中。如果抛出异常,则意味着应用无法继续请求,它不包含任何业务逻辑。

文档

开发

要配置开发环境,请

  1. 遵循 Docker 安装步骤
  2. 在 Docker 容器中运行 composer install

贡献

如果您认为这个项目值得使用,请给它加星。关注变更以查看所有活动。如果您看到改进的空间,请随时创建问题或发送拉取请求。这里有关于如何开始的指南

请注意,该项目以 贡献者行为准则 发布。通过参与此项目和其社区,您同意遵守这些条款。

许可证

NeoWsClient 采用 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。