concrete5 website API



我在concrete5 filemanager中组织了一些分层数据。我想知道是否有可能通过其他应用程序(以API的方式)从外部访问concrete5网站的filemanager。

这个网站让我对这个问题的答案充满希望。遗憾的是,没有后续教程。

http://c5hub.com/learning/building-rest-api-using-concrete5-part-1/

我的第二个问题非常相关:是否有可能通过编写器视图做同样的事情来访问页面信息?

谢谢

好的,那么我将给出一些我认为你需要的基本例子。如果你需要它做一些更具体的事情,请随时给出任何反馈。

重要的事情先做。创建一个包(只是因为它看起来不错,并将所有内容很好地捆绑在一起)。
在包控制器中创建一个名为"on_start()"的公共函数。

现在决定URL结构。
我会做一个url前缀,我们叫它api,只是为了清楚地表明你正在访问API。

on_start()函数中,您将添加API url,如下所示:

public function on_start() {
    Route::register('/api/foo', 'ConcretePackage*package-name**ClassName*::*function-1*');
    Route::register('/api/bar', 'ConcretePackage*package-name**ClassName*::*function-2*');
}

以上假设在包中有另一个名为ClassName的类,其函数为function-1()function-2()

所以当你访问//domain.abc/api/foo时,ClassName中的function-1()将被调用。
如果没有启用漂亮的url,它将是//domain.abc/index.php/api/foo


但是我希望能够将参数作为URL的一部分传递

别担心!您只需在路径的某个位置添加{paramName}。这样的

Route::register('/api/foo/{paramName}', 'ConcretePackage*package-name**ClassName*::*function-1*');

然后在函数中添加相同的参数,因此它将成为function-1($paramName)请记住保持名称相同!
参数也可以放在url的中间,如/api/{paramName}/foo

目前似乎没有办法在Concrete5中直接传递可选参数。因此,我建议您注册几个版本,带或不带可选参数。然而,这在GitHub上有一个开放的问题:这里
作为可选参数的多个url的替代方法,您可以通过请求

中的GETPOST变量获得这些参数。

但是我想用GET, POST, DELETE等做那些性感的REST事情。

我以前没有这样做过,所以这就是我想象中的方式

对于一个URL, GETPOST的作用应该不同,从调用相同的函数开始。这个函数将检查$_SERVER['REQUEST_METHOD']并重定向到准确的real函数。

function-2()为例。

function function-2() {
  switch ($_SERVER['REQUEST_METHOD']) {
    case 'PUT':
      $this->function-2_put();  
    break;
    case 'POST':
      $this->function-2_post();  
    break;
    case 'GET':
      $this->function-2_get();  
    break;
    case 'HEAD':
      $this->function-2_head();  
    break;
    case 'DELETE':
      $this->function-2_delete();  
    break;
    case 'OPTIONS':
      $this->function-2_options();    
    break;
    default:
      $this->function-2_error();  
    break;
  }
}

当然,你只需要添加适用于特定情况的情况,并且你可以默认为任何你想要的函数。

我希望这给你一些洞察力,你可以使用。如果您需要更具体的案例,请告诉我。

相关内容

  • 没有找到相关文章

最新更新