picamator / neo-ws-client
NASA 开放 API 客户端:近地天体 Web 服务
Requires
- php: ~5.6|~7.0
- guzzlehttp/guzzle: ~6.2
- psr/http-message: ~1.0
- symfony/config: ~2.8 || ~3.1
- symfony/dependency-injection: ~2.8 || ~3.1
- symfony/proxy-manager-bridge: ~2.8 || ~3.1
- symfony/yaml: ~2.8 || ~3.1
Requires (Dev)
- phpdocumentor/phpdocumentor: ~2.0
- phpunit/phpunit: ~5.5
- satooshi/php-coveralls: ~1.0
This package is not auto-updated.
Last update: 2024-09-28 20:19:55 UTC
README
主分支
开发分支
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 官方文档。
示例列表
- 统计信息:GET /rest/v1/stats
- 近地天体:GET /rest/v1/neo/{asteroid_id}
- 近地天体浏览:GET /rest/v1/neo/browse
- 数据流:GET /rest/v1/feed
- 详细数据流:GET /rest/v1/feed
- 今天的数据流:GET /rest/v1/feed/today
- 详细的今天的数据流:GET /rest/v1/feed/today
- 错误资源 404:GET /rest/v1/wrong-resource
- 错误的 API 令牌 403:GET /rest/v1/wrong-resource
- Symfony 2.8 集成:NeoWsExample
任意精度数学
NeoWsClient 仅将日期格式化为 DateTime 对象,其他则保持原始 API 的格式。NeoWs 使用字符串表示长精度浮点数,例如 .6304873017364636
。在它们上执行 floatval
会移除最后两位数字。因此,NeoWsClient 不将字符串转换为 int
或 float
。要对 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 文件夹中。如果抛出异常,则意味着应用无法继续请求,它不包含任何业务逻辑。
文档
- UML 类图:class.diagram.png
- 生成的文档:phpdoc,请按照 说明 构建
开发
要配置开发环境,请
- 遵循 Docker 安装步骤
- 在 Docker 容器中运行
composer install
贡献
如果您认为这个项目值得使用,请给它加星。关注变更以查看所有活动。如果您看到改进的空间,请随时创建问题或发送拉取请求。这里有关于如何开始的指南。
请注意,该项目以 贡献者行为准则 发布。通过参与此项目和其社区,您同意遵守这些条款。
许可证
NeoWsClient 采用 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。