mamluk/kipchak-template

该软件包最新版本(dev-master)没有提供许可证信息。

dev-master 2024-07-17 20:13 UTC

This package is auto-updated.

Last update: 2024-09-17 20:45:26 UTC


README

基帕克启动模板

这是一个基于基帕克(《https://github.com/mam-luk/kipchak》)API 开发工具包(ADK)的启动项目 - 该工具包是在 Slim 框架(《https://slim.php.ac.cn/》)的基础上增加的一组组件,用于快速构建 API。了解更多关于基帕克的信息,《https://github.com/mam-luk/kipchak》。

该模板演示了基帕克的所有功能,这些功能主要通过配置文件夹中的 YAML 文件进行配置,并为使用 Slim 的观点式方法提供了一个基础。它不对 Slim 中的任何内容进行限制,您仍然可以将其用作纯 Slim 应用程序。

安装和开始使用

从您想要安装新基帕克 API 的目录中运行此命令。

composer create-project mamluk/kipchak-template [api-name] -s dev

[api-name] 替换为您新应用程序所需的目录名称。

面向哲学工程师的一些哲学观点

基帕克模板的结构基于对 API 应该如何开发的某些假设。这些假设是基于对某些常见概念(如实体、模型等)的理解。我们的定义在此处列出。我们将按照请求在基帕克中流动的顺序来处理这些问题。

  • 路由 - 这是进入您的 API 的第一个端口。在 routes 目录中指定,这些应该进行版本控制,通常调用控制器,有时也会调用一些中间件。它们确定了 API 端点的 URL 和 HTTP 动词。

  • 中间件 - 中间件是一般可重用的功能,您希望在到达控制器之前或响应之前调用。全局中间件可以在 middlewares 目录中进行配置。

  • 控制器 - 这是您决定如何处理 HTTP 请求的地方。这些也应该与路由一起进行版本控制,以便可以一致地管理 API 合同的破坏性更改。控制器通常会接收一个 HTTP 请求,将其传递给数据传输对象(DTO)以确保它满足请求的要求,然后将 DTO 传递给模型,模型可能会在将响应返回给客户端之前执行一些业务逻辑和实体。控制器还将包含 PHP 属性,这些属性构成了您的 OpenAPI 规范的一部分。

  • 模型 - 这是您编写业务逻辑的地方 - 在数据库或第三方 API 与您的 API 之间发生的事情。

  • 实体 - 这些是代码中数据库模式的表现。如果您使用 Doctrine 进行 RBDMS,您将在这里指定 Doctrine 实体。如果您正在使用 Couchbase,您将有一个对象表示,该对象将存储在 CouchDB 文档中。

  • 数据传输对象(DTO) - 这些实际上是代表 API 与 HTTP 客户端或任何其他外部 API 之间传输的数据。这些必须进行版本控制,并且是确保任何随请求一起到来的数据与您期望的数据相匹配的第一步。它们也必须进行版本控制,因为它们最终形成了 API 合同。

  • 依赖关系 - 依赖关系是您可能希望在API中使用的常用库或类。您将它们作为依赖关系注入到服务容器中,以便在请求/响应生命周期中只创建一次,从而节省内存、CPU和宝贵的时间。解释服务/IO/依赖关系容器的内容不属于本文档的范围,但如果您不知道这是什么,可以参考这篇文章

理解Kipchak的引导过程

土地布局

Kipchak提供了数据库和缓存客户端

  • Memcached(基于Symfony Cache)
  • Apache CouchDB(3.2+)
  • MySQL或MySQL的替代品(Percona、MariaDB等)(基于Doctrine)

理解配置

Kipchak提供的依赖项

Kipchak提供的中间件

注入自己的依赖项

编写自己的中间件

您的API是bff吗?管理状态

待办事项

  • OAuth验证
  • 基于密钥的认证
  • OAuth缓存JWKS
  • 全局启用JWKS和密钥(在Kipchak中设置)
  • CouchDB客户端
  • Memcached客户端
  • MySQL客户端
  • 使用CouchDB进行会话管理
  • 使用Memcached进行会话管理
  • HTTP客户端
  • 添加测试
  • 添加文档
  • 添加sample helm / k8s manifest
  • 重命名配置文件
  • 使用缓存池和数据库连接进行会话管理
  • 分离CDB客户端和CDB会话处理程序

CouchDB

当CouchDB容器启动时,您可能会在日志中看到一些错误。这是因为Couchbase期望创建一个_users数据库来管理用户。让我们创建这个数据库,以便Couchbase准备好使用。请在您的终端上运行以下命令

curl -X PUT http://api:api@localhost:5984/_users
curl -X PUT http://api:api@localhost:5984/api

您也可以为管理API创建的数据创建新的数据库。让我们创建一个名为'api'的数据库

curl -X PUT http://api:api@localhost:5984/api

会话处理

如果您正在使用Kipchak构建前端后端(BfF),则需要启用会话处理。Kipchak支持使用CouchDB或Memcached进行会话。这可以在config/kipchak.sessions.php中进行配置。

使用CouchDB

如果您正在配置config文件夹中的kipchak.sessions.php配置文件以使用CouchDB进行会话管理,则还应创建数据库来管理这些会话。请确保数据库名称在https://github.com/mam-luk/kipchak-template/blob/master/config/kipchak.sessions.php#L13上的名称一致。

如果设置为API会话,请在终端上运行以下命令以创建数据库

curl -X PUT http://api:api@localhost:5984/api_sessions

OpenAPI

vendor/bin/openapi api -o openapi.yaml