vogon101/dynamic-endpoints

此包最新版本(1.0.2)没有提供许可证信息。

制作优秀的PHP API的超级简单框架

1.0.2 2016-04-15 19:49 UTC

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/