首页 > 解决方案 > Drupal 商务请求是什么样的?

问题描述

假设我在 Drupal 上有商务网站。有 Drupal Commerce 模块。我想使用 api 从我的商店中检索完整的订单。可能吗?我找不到任何有关此请求的信息(什么是响应格式等)。另外我不需要php示例,也许有Rest API?

标签: drupaldrupal-7drupal-modules

解决方案


我认为有几种方法可以做到这一点,从简单到(有点)复杂。

  • 由于您只提到检索数据,简单的方法是创建一个列出所有订单的新视图,您可以配置此视图以将输出呈现为 XML 或 JSON。使用的模块可以是 Views 数据导出,也可以是 Views 数据源。

  • 第二种解决方案是创建一个自定义模块,该模块使用 hook_menu 创建您的自定义端点 URL,该 URL 调用一个回调函数,您可以在其中定义所需的输出

function YOURMODULE_menu() {
  $items = array();
  $items['api/order'] = array(
    'title' => 'API Orders',
    'page callback' => 'YOURMODULE_api_orders_callback',
    'access arguments' => array('access content')
  );
  $items['api/order/%'] = array(
    'title' => 'API Orders',
    'page callback' => 'YOURMODULE_api_orders_callback',
    'page arguments' => array(2),
    'access arguments' => array('access content')
  );
  return $items;
}

function YOURMODULE_api_orders_callback($order_id = NULL) {
  $order_ids = array();
  if(!is_null($order)) {
    array_push($order_ids, $order_id);
  }

  // Load all orders or only 1 order 
  // We can use commerce_order_load_multiple()  
  // or use EntityFieldQuery() if need a complex logic filtering orders
  $orders = commerce_order_load_multiple($order_ids);
  drupal_json_output($orders);
}

推荐阅读