菲尔康 PHP - RESTful API

Phalcon PHP - RESTful API

我正在使用 Phalcon PHP(微型) 构建 RESTful API。这个框架对我来说是新的,我没有经验。

我想找到一些 资源,它提供了 最佳实践和实例 如何创建这样一个 API 正确的方式.

端点越来越多,感觉走错了方向

http://docs.phalconphp.com/en/latest/reference/tutorial-rest.html 我看过本教程,但它太简单了,没有涵盖我所有的问题。我的 API 会大很多。

老实说,这取决于您的 REST API 的严格程度。如果您计划在 API 文档中发布您的端点,那么这是一个很好的教程: http://www.restapitutorial.com/

但是,严格来说这不是 REST。 (但它仍然是最常见的 API 类型 - 例如 Google Drive 遵循这种方法)。

应该注意的是,如果您在这种方法中拥有大量资源,那么您将拥有大量端点。你无法摆脱它。

如果您想限制发布的端点数量,那么您需要研究 HATEOAS(超媒体作为应用程序状态引擎)。这实际上是构建适当的 REST 所需要的 API.

用简单的英语解释...

通常,您需要做的就是拥有 1 个根端点。然后,在该初始资源的 JSON 有效负载中,将 link 包含到 API 的其他资源中。这些 link 应该是您可以使用可用数据过渡到的下一个状态。

这样,API 就像网页一样 'explored'。 IE。您会转到网站主页,然后单击 link 转到下一页。同样,您将转到根 API url 并选择跟随它返回的 link。

还有一个名为 HAL 的约定,用于构建您的 JSON 响应:http://stateless.co/hal_specification.html

加油, 奥利

没有正确的方法,但这是我遇到的两种模式。它们都基于您的操作将以请求方法命名的概念:getActionpostActionputAction, patchAction, deleteAction.

模式一create a separate module为RESTfulAPI。 模式二(下)是让基础调用和 RESTful 调用访问相同的 module/controller.

// base 
$router->add('/:module/:controller/:action/:params', [
    'namespace' => 'App\ModuleName\Controllers',
    'module' => 1,
    'controller' => 2,
    'action' => 3,
    'params' => 4
]);

// restful (set action by request method)
$request = new \Phalcon\Http\Request();
$action = $request->getMethod();
$router->add('/:module/:controller/:params', [
    'namespace' => 'App\ModuleName\Controllers',
    'module' => 1,
    'controller' => 2,
    'params' => 3,
    'action' => $action
]);

福利!这里a bunch of other examples供大家参考。