mamluk / kipchak
一个用于一致地构建和管理API的API开发工具包(ADK)
Requires
- php: >=8.2
- bryanjhv/slim-session: ^4.1
- cuyz/valinor: ^1.7
- doctrine/orm: ^2.17
- firebase/php-jwt: ^6.9
- guzzlehttp/guzzle: ^7.8
- illuminate/http: ^9.52
- mamluk/couchdb: 0.6
- monolog/monolog: ^3.5
- php-di/php-di: ^6.4
- slim/psr7: ^1.6
- slim/slim: ^4.12
- symfony/cache: ^6.3
- zircote/swagger-php: ^4.7
Requires (Dev)
- phpunit/phpunit: ^9.6
README
Mamluk的Kipchak
Kipchak是什么?
Kipchak是一个用PHP编写的API开发工具包(ADK),用于快速构建API。它基于多年的经验,在生产环境中管理和处理成千上万的并发请求。本工具包旨在让我们的工程师轻松构建和维护此类API。它建立在Slim框架之上,可以描述为Slim的一个包装(和有见地的)实现。它并没有从Slim中移除任何东西,您仍然可以使用Kipchak中的任何东西。
好吧,足够了。我如何看到它的实际应用?
此存储库是核心ADK。要开始使用Kipchak并看到它的实际应用,请访问https://github.com/mam-luk/kipchak-template。
别急,我想了解更多。Kipchak不是什么?
Kipchak不是一个像Symfony或Laravel这样的框架。实际上,它是建立在Slim框架之上的。为什么?因为Slim速度快且高效,与Symfony和Laravel相比,内存、处理和体积的占用要小得多,尽管它们有自己的优点,但它们的内存和处理占用要大得多。然而,Kipchak从Symfony和Laravel中借用库,以启用ADK。
好吧,所以它是Slim。使用它我得到了什么?
您将获得我们在Mamluk(https://mamluk.net)、伊斯兰网络(https://islamic.network)和7x(《https://7x.ax》)构建API所需的所有东西
- 超级简单的配置管理
- 一致的启动、依赖和中间件注入
- 无缝升级(除非Slim升级中的核心路由更改)
- 如果无法无缝升级,则保持一致 - 我们始终需要更新多个API,因此将有一条前进的道路
- 以下组件预安装,可以通过YAML文件启用/禁用
- Symfony缓存,预配置为Memcached和文件系统缓存(Redis即将推出,也许)
- 可配置的HTTP缓存头
- Doctrine DBAL和ORM,用于连接和处理多个RDBMS(是的,我们也考虑了Propel、Atlas和Eloquent,但最终选择了Doctrine。我们将在某个时候分享原因)
- 用于与CouchDB集成的CouchDB客户端(CouchDB是一个可靠、分布式、最终一致的NoSQL数据库)
- 在Memcached或CouchDB中进行会话处理
- 基于JWKS的基于密钥的认证和授权
- 基于密钥的认证
- 一致的错误和异常处理
- 包含在Laravel HTTP客户端中的(如果您经常使用Guzzle,这将是一种清新的体验)
- Monolog进行一致记录
- 关于如何处理路由、控制器、模型和应用程序总体布局的看法
- 从您的代码生成API的OpenAPI规范(使用Swagger PHP)
- 对象映射/数据传输对象(使用Valinor)
- 预配置的测试工具(工作中)
- 带有NGINX Unit或Apache作为应用服务器的基本Dockerfile
在哪里可以找到如何使用Kipchak的文档?
请访问https://github.com/mam-luk/kipchak-template。
很好。为什么这个ADK被称为Kipchak?而马穆鲁克是谁,是什么?
Kipchak是突厥世界中一个家族,它在1250年作为埃及马穆鲁克苏丹国崛起。更多详情请见https://en.wikipedia.org/wiki/Mamluk_Sultanate。由于公司名为Mamluk,因此将我们的主要开发工具称为Kipchak是恰当的。
致谢和感谢
- Slim框架
- Symfony(用于Symfony Cache和Doctrine)
- Laravel用于HTTP客户端
- Monolog
- Team CuyZ为Valinor(对象映射/数据传输对象)
- Robert Allen为Swagger PHP库
- Bryon Horna为Slim Session
有关Kipchak中所有包的完整列表,请参阅https://github.com/mam-luk/kipchak/blob/master/composer.json#L14。