首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >concrete5网站API

concrete5网站API
EN

Stack Overflow用户
提问于 2015-10-26 00:08:04
回答 1查看 451关注 0票数 0

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

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

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

我的第二个问题非常相关:是否可以通过composer视图访问页面信息?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 10:20:52

好的,我会给出一些我认为你需要的基本例子。如果你需要它来做一些更具体的事情,可以自由地给出任何反馈。

首先要做的是。创建一个包(仅仅因为它看起来很好,并且将所有的东西很好地捆绑在一起。

在包控制器中,创建一个名为`on_start()的公共函数。

现在决定一个URL结构。

我会做一个url前缀,让我们称之为api,只是为了让它清楚地表明您正在访问API。

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

代码语言:javascript
复制
public function on_start() {
    Route::register('/api/foo', 'Concrete\Package\*package-name*\*ClassName*::*function-1*');
    Route::register('/api/bar', 'Concrete\Package\*package-name*\*ClassName*::*function-2*');
}

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

因此,无论何时访问//domain.abc/api/fooClassName中的function-1()都会被调用。

如果未启用漂亮的URL,则为//domain.abc/index.php/api/foo

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

别担心!您只需在路径中的某个地方添加{paramName}即可。像这样

代码语言:javascript
复制
Route::register('/api/foo/{paramName}', 'Concrete\Package\*package-name*\*ClassName*::*function-1*');

然后在函数中添加相同的参数,使其成为function-1($paramName)记住保持名字不变!

参数也可以位于url的中间,如/api/{paramName}/foo__。

目前,似乎没有一种方法可以直接在Concrete5中传递可选参数。因此,我建议您注册几个版本,有和没有可选参数。然而,在GitHub上还有一个悬而未决的问题:这里 作为可选参数的多个URL的替代方案,您可以通过请求中的GETPOST变量获取这些URL。

但是我想和GETPOSTDELETE等做些性感的休息。

我以前没有这样做过,所以这就是我想要做的事情

对于应该以不同的方式执行()的URL (即GETPOST ),从调用相同的函数开始。然后,该函数将检查$_SERVER['REQUEST_METHOD']并重定向到精确的实函数。

例如,让我们看看function-2()

代码语言:javascript
复制
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;
  }
}

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

我希望这给了你一些洞察力,你可以与之合作。如果你需要更多的具体案件,请告诉我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33336561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档