rrpadilla/slim3-api-skeleton

此包已被废弃,不再维护。未建议替代包。

考虑内容协商和性能的 Slim 3 API 框架。

dev-master 2018-03-21 06:18 UTC

This package is not auto-updated.

Last update: 2022-02-19 05:59:57 UTC


README

这是一个使用 Slim 3(内容协商、认证、错误处理、缓存和性能)的 API 框架。错误和异常处理已为您配置。请检查 config/dependencies.php 文件。

内容协商

内容协商通过查询参数和 HTTP 标头 "Accept" 处理。

  • 默认查询参数为 "output",可能的值为("json" 或 "xml")。
  • 如果没有提供 "output" 参数,则使用 HTTP 标头 "Accept" 来确定哪个 "Content type"。如果不包含 "application/json""application/xml",则默认输出为 "json"

此项目使用以下包/组件

您可以将在 Packagist 上找到的任何第三方组件集成到项目中。

运行

  1. $ cd my-app
  2. $ php -S 0.0.0.0:8888 -t public public/index.php
  3. 访问 https://:8888

关键目录

  • app/:目录包含您的应用程序的核心代码。所有位于 App 命名空间内的类文件。
  • app/Controllers/:目录包含控制器和动作类。
  • app/Handlers/:目录包含处理程序类(错误、PhpError、NotFound、NotAllowed)。
  • app/Helpers/:目录包含助手类。
  • app/Middleware/:目录包含中间件类。
  • app/Renders/:目录包含特定响应的渲染类(json 和 xml)。
  • bootstrap/:目录包含引导框架和配置自动加载的文件。
  • cache/:目录包含框架生成的用于性能优化的文件,例如路由文件。应由您的 Web 服务器写入。
  • cache/routes/:目录用于存储生成的路由文件。在生产环境中具有更好的性能。应由您的 Web 服务器写入。
  • config/:目录包含您应用程序的所有配置文件(设置、依赖项、中间件)。
  • logs/:目录包含您应用程序的日志文件。应由您的 Web 服务器写入。
  • public/:目录包含index.php文件,它是所有进入您应用程序请求的入口点。
  • routes/:目录包含您应用程序的所有路由定义。默认情况下,包含1个路由文件:routes.php
  • tests/:目录包含您的自动化测试。提供了一个示例PHPUnit。要运行测试: phpunit -- verbose tests/DefaultRoutesTest.php
  • vendor/:目录包含您的Composer依赖。

关键文件

  • public/index.php:应用程序的入口点。
  • bootstrap/app.php:引导框架,配置自动加载、依赖项、路由等。
  • env.php.dist:环境设置。必须将其复制到env.php并修改该文件。
  • config/dependencies.php:Pimple的服务。包括(数据库、异常/错误处理程序、日志记录器等)。
  • config/middleware.php:应用程序中间件。
  • config/settings.php:slim和其他配置。重写Slim默认设置(displayErrorDetails, routerCacheFile)。
  • routes/routes.php:所有应用程序路由都在这里。
  • app/Controllers/ExampleAction.php:示例动作类。
  • app/Helpers/ArrayToXml.php:辅助类,用于将数组转换为XML。由XmlApiView类使用。
  • app/Renders/ApiView.php:基于PSR-7请求的Accept头的输出渲染。
  • app/Renders/JsonApiView.php:json响应的视图包装器(带有错误代码)。返回“meta”和“data”。“meta”包含“error”(true/false)和“status”(HTTP状态代码)。
  • app/Renders/XmlApiView.php:xml响应的视图包装器(带有错误代码)。返回“meta”和“data”。“meta”包含“error”(true/false)和“status”(HTTP状态代码)。