vogon101 / dynamic-endpoints
制作优秀的PHP API的超级简单框架
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-26 00:35:11 UTC
README
一个用于创建优秀API的超级简单PHP库。它允许您拥有如api.foo.com/my/endpoint/2这样的url
想法
在PHP中编写HTTP API时,拥有一个像这样的url(如:api.foo.com/books/2)要比这个(如:api.foo.com/books.php?id=2)要好得多。这很简单,使用自定义的Apache 404页面,然后解析URL,但这可能很麻烦。所以我为它创建了一个小库。
用法
有关工作示例,请参阅测试目录。###.htaccess 在根目录下,您必须有一个.htaccess
文件,该文件定义了主页面,可能是用作404错误文档的index.php
。它可能看起来像这样
ErrorDocument 404 /dynamic-endpoints/test/index.php
PHP
首先,导入源代码
require_once(__DIR__ . "/../src/DynamicEndpoint.php");
或者使用composer,只需要require你的autoload.php
composer require vogon101/dynamic-endpoints
接下来,创建一个API对象。$base
是你希望所有API都从这个路径出发的地方。例如对于类似这样的东西:http://foo.com/my-thing/api/,那么$base
将是/my-thing/api
。基础可以是空的,对于根url上的内容。
$base = "/dynamic-endpoints/test"; $API = new BluePost\API($base);
现在,你必须注册端点。这些定义了可以通过API访问的URL。键是端点字符串,值是当访问端点时要运行的文件。它们可以包含命名变量和通配符
//Register the endpoints //Variables are defined with %varName //A .. is a wildcard $API->register(Array( "/api/movie/../%name/%prop/.." => __DIR__ . "/movie.php", "/api/movie/" => __DIR__ . "/movie2.php", "/api/book/%id" => __DIR__ . "/book.php", "/api/book/name/%name" => __DIR__ . "/book2.php" ));
所以/api/book/%id
将匹配这个/api/book/2
,它将传递$id
值为2。然而,因为/api/book/name/%name
与%id
非常相似,如果用户导航到/api/book/name/
,那么算法将匹配它到%id
端点,并以$id = "name"
加载它。
现在我们只需运行API。如果端点匹配,这将包含指定的文件。变量将根据文件的作用域设置。如果没有找到端点,将返回一个包含"Error"键的数组。
//Look for an endpoint, will run the file if one is found $result = $API->runEndpoint(); if (array_key_exists("error", $result)) var_dump ($result);
许可证
软件可在Creative Commons Attribution 4.0 International许可下使用。可以在以下位置找到:http://creativecommons.org/licenses/by/4.0/