我正在Drupal 7上使用“服务”模块。我想实现一项服务,该服务允许我通过AJAX提交搜索词并接收一个数组,其中包含与标题松散匹配的前5个节点(node id
和title
)。连接到http://example.com/api/时,我收到此消息
服务端点“搜索”已成功设置。
但是当尝试导航到类似http://example.com/api/search/Test之类的内容时,我得到了404。
我正在Drupal 7上使用“服务”模块。我想实现一项服务,该服务允许我通过AJAX提交搜索词并接收一个数组,其中包含与标题松散匹配的前5个节点(node id
和title
)。连接到http://example.com/api/时,我收到此消息
服务端点“搜索”已成功设置。
但是当尝试导航到类似http://example.com/api/search/Test之类的内容时,我得到了404。
Answers:
稍后再试,当从其他教程中读取内容时,我会充分利用资源,在drupal中无法使用肥皂。我尝试但没有成功,您可以复制和分页此代码,并仅修改自定义模块名称和挂钩。
/**
* Implements hook_ctools_plugin_api().
*/
function core_custom_webservice_ctools_plugin_api($owner, $api) {
if ($owner == 'services' && $api == 'services') {
return array(
'version' => 3,
'file' => 'core_custom_webservice.services.inc'
);
}
}
function core_custom_webservice_services_resources() {
$resources = array(
'webservice_resources' => array(
'operations' => array(
'retrieve' => array(
'help' => t('Response of webservice'),
'file' => array('type' => 'inc', 'module' => 'core_custom_webservice', 'name' => 'core_custom_webservice.resource',),
'callback' => '_core_custom_webservice_get_response',
'access callback' => '_core_custom_webservice_access',
'access arguments' => array('view'),
'access arguments append' => TRUE,
'args' => array(
array(
'name' => 'parameters',
'type' => 'string',
'description' => 'The parameters that define requested data',
'source' => array('path' => '0'), // first argument in the url
'optional' => FALSE,
),
),
),
),
),
);
return $resources;
}
/* * *************************************************************************************************
* Access callback
* For now only view/retrieve is implemented and if the user is logged in, he gets access
*/
function _core_custom_webservice_access($op) {
global $user;
$access = TRUE;
switch ($op) {
case 'view':
if ($user->uid) {
$access = TRUE;
}
break;
}
return $access;
}
function _core_custom_webservice_get_response($arg) {
$response = 'something';
return 'print '.$response;
}
在您的服务路径中再试一次,并使用 http://path.come/?q = webservice_server_rest / webservice_resources / string.json成功
尝试使用此模块https://www.drupal.org/project/services_views。它当前具有两个功能:-创建基于视图的资源,在视图中创建服务显示-通过视图资源调用执行系统的任何视图
基本上找不到404错误
确保您的服务终点是
http://example.com/api/search/ {search-term}
要发送的响应正文是正确的格式
3.将内容标头设置为application / json并命名为Content-Type
嗨,您要做的第一件事是
步骤1:创建自定义模块并实施 hook_services_resources()
例:
function mymodule_services_resources() {
return array(
'search' => array(
'create' => array(
'help' => 'Search for a content',
'file' => array('file' => 'inc', 'module' => 'your module name'),
'callback' => '_function_to_call_when_this_service_is_called',
'access callback' => 'user_access',
'access arguments' => array('access content'),
'access arguments append' => FALSE,
'args' => array(
array(
'name' => 'data',
'type' => 'struct',
'description' => 'The id of the data to get',
'source' => 'data',
'optional' => FALSE,
),
),
),
),
);
}
步骤2:前往
结构->服务
并启用您的模块
步骤3:将数据发送到客户端$ data-发送到客户端的数据应该是数组
$url = $base_url.'/api/search';
$response = drupal_http_request($url, array(
'headers' => array('Content-Type' => 'application/json', 'Accept' => 'application/json'),
'method' => 'POST',
'data' => json_encode($data),
'max_redirects' => 0,
)
);
打印响应以检查其是否正常。
检查清单:
我也遇到了这个错误,然后我意识到我需要在URL中同时包含服务端点的路径和View的路径。
最初,我尝试使用http://my.local/events,但是我需要使用http://my.local/events/events(我将服务端点路径命名为与View相同)。