首页 / 帖子
请问drupal可以对外提供数据访问的接口吗?

比如,我现在已经做好了一个平台,搜索页面是用search api + solr + facet +IK做的,现在就是想把这个封装成一个接口,供外部访问,请问可以实现吗?要怎么做呢?谢谢!

7个答案
AnnyO
发布于:2014-06-13 11:36

Drupal有一个模块叫Services, https://drupal.org/project/services 能提供XML和JSON的接口。

还有另外一个模块,Services Views: https://drupal.org/project/services_views
通过Views实现services,更加灵活。


要单纯的把搜索结果提供API,个人觉得得写代码,或者直接把Solr的接口暴漏给第三方就可以了。

AnnyO
发布于:2014-06-13 11:44

当然可以,就像赵高欣的回答中提到的,Services相关的模块,对外提供数据。

另外还有,如果你的需求比较特殊,services等模块无法满足你的需求,还可以自己写个模块来实现,基本思路就是用hook_menu来定义接口地址,处理方法的返回值,用json等封装结果返回,这样实现起来相比services模块来说比较麻烦,适用于services不能满足需求的时候(没遇到过)。

Amanda Song
发布于:2014-06-13 11:50

drupal7用service模块,drupal8自带rest功能

赵高欣
发布于:2014-06-13 11:56

赞成赵高欣和幽灵说的。Services还能集成Session、OAuth等多种认证机制,自己写模块的话要考虑好权限问题,要求比较高。

Amanda Song
发布于:2014-06-13 12:24

高欣说的不错,补充一个Views datasource模块,http://www.drupalproject.org/project/views_datasource


闻涛
发布于:2014-06-16 11:54

也可以参考下services_search模块,它就是根据services提供的钩子方法,定义了drupal核心搜索功能的接口,代码比较简单清晰,我目前也正在研究自定义接口。

Amanda Song
发布于:2017-06-06 10:14

drupal6呢?自写模块能详细说明下吗?