agrandesr / agrouter
A.G.R 是一个用于在 PHP 中快速高效地创建 API 的 composer 库。它并不想成为一个与 symfony 和 laravel 比肩的强大框架,而更倾向于轻量级,让使用它的人能够检查和理解。理念是从单个 json 文件开始工作整个路径系统。
Requires
- php: ^8.0
This package is auto-updated.
Last update: 2024-09-11 13:50:29 UTC
README
A.G.R 是一个专为在 PHP 中快速高效创建 API 设计的 composer 库。它并不想成为一个与 symfony 和 laravel 比肩的强大框架,而更倾向于轻量级,让使用它的人能够检查和理解。理念是从单个 json 文件开始工作整个路径系统。
先决条件 📋
您需要在您的计算机上安装 composer。
安装 🔧
您需要将包要求到您的项目中。
composer require agrandesr/agrouter
接下来,您可以在代码中使用它。我们鼓励在根文件 index.php 中使用。在 auoload require 之下写入很重要。
<?php require './vendor/autoload.php'; use AgrandesR\Router; $router = new Router(); $router->run();
最后,您需要创建一个 routes.json 文件,以开始创建您的 API。
有一个简单的示例来测试!
{ "routes": { "hi": { "POST": { "render":{ "type":"json", "content":"{\"test\":\"test with string\"}" } }, "GET": { "render":{ "type":"json", "content":{ "test":"test with object" } } } } } }
如何开始 🚀
A.G.R 的理念是使开发 RESTFULL API 和它们的文档更加容易。您已经在上文中看到了第一步,即定义 API 的 routes.json 文件。
我们的概念是首先创建默认答案的 json,然后替换为最终代码。在两种情况下,您必须始终修改的是 routes.PATH.METHOD.render 中的 render 对象。
JSON 响应
在第一种情况下,当您需要创建简单的 json 响应时,非常简单。您需要将 type 指示为 json,并在内容中插入 json。
您可以将 json 插入内容作为字符串
{ "render":{ "type":"json", "content":"{\"test\":\"test with string\"}" }
或者您可以将 json 插入内容作为对象
{ "render":{ "type":"json", "content":{ "test":"test with object" } }
类响应
这可能是您真正想要的重要渲染。它很简单。您需要将 type 指示为 class,并将下一个对象添加到值 content。
{ "path":"App\\internal", "name":"Test", "function":"json" }
对象值如下
- path:您想要调用的类的命名空间
- name:类名。
- function:您想要调用的函数。
示例
渲染对象
{ "render":{ "type":"class", "content":{ "path":"App\\internal", "name":"Test", "function":"json" } }
php 类(在 App\internal 命名空间中)
<?php namespace App\internal; class Test { public function json() { header('Content-Type: application/json'); echo json_encode(["test"=>"This is only a test"]); } }
必需参数
最令人烦恼的事情之一是必须验证参数。使用 Router,您可以快速将其作为方法选项添加 req_parameters!
{ "routes": { "hi": { "GET": { "req_parameters":[ "id", "product", { "name":"email", "regex":"/\w{1,}\@\w{1,}\.{2,5}/" } ] "render":{ "type":"json", "content":{ "test":"test with object" } } } } } }
例如,必需参数可以是参数名称的字符串或一个对象,其中您可以指定名称和验证参数值的正则表达式。
额外
版本控制:📌
我们使用 SemVer 进行版本控制。有关所有可用版本,请参阅此存储库中的 标签。
作者 ✒️
提及所有从项目开始就帮助构建该项目的人
- A.Grandes.R - 主要工作者 - AGrandesR
您还可以查看所有 [贡献者] 的列表(https://github.com/your/project/contributors),他们参与了此项目。
许可证 📄
本项目采用MIT许可协议 - 请阅读LICENSE.md文件以获取更多详细信息。
感谢:🎁
- Villanuevand 提供的令人难以置信的文档模板 😊