jpierront/api-batch-bundle

v1.0.0 2015-09-16 20:23 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:10:41 UTC


README

关于

JPierrontApiBatchBundle 允许你通过单个 HTTP 请求发送多个 JSON API 调用。

安装

在 composer.json 中要求 jpierront/api-batch-bundle 包,并更新你的依赖项。

$ composer require jpierront/api-batch-bundle

将 JPierrontApiBatchBundle 添加到应用程序的内核

public function registerBundles()
{
    $bundles = array(
        ...
        new JPierront\ApiBatchBundle\JPierrontApiBatchBundle(),
        ...
    );
    ...
}

配置

为批量操作创建路由

YAML

# app/config/routing.yml
batch:
    path:   /api/batch
    defaults:  { _controller: JPierrontApiBatchBundle:ApiBatch:apiBatch }

注解

# app/config/routing.yml
batch:
    resource: AppBundle\Controller\ApiBatchController
    
// AppBundle\Controller\ApiBatchController.php
class ApiBatchController extends BaseApiBatchController
{
    /**
     * @Route(path="batch", name="batch")
     */
    public function getAction(Request $request)
    {
        return parent::getAction($request);
    }
}

用法

请求

使用 POST 方法在请求体中调用新的批量 API

[
    {
        "method": "GET",
        "url": "/sub-api-1",
        "parameters": "queryParameter1=value1&queryParameter2=value2"
    },
    {
        "method": "POST",
        "url": "/sub-api-2",
        "parameters": "postParameter1=value1&postParameter2=value2"
    }
]

方法

  • 接受任何 HTTP 方法(GET、POST、PUT、PATCH、...)
  • 必须等于 API 期望的方法

url

  • 子 API 的相对 URL
  • 不包含主机名
  • 不包含查询参数

参数

  • 您获取或 POST 的参数格式化成查询字符串

响应

批量 API 将返回一个 JSON 响应

[
    {
        "code": 200,
        "headers": {
            "content-type": "application\/json",
        },
        "body": "Your json response of sub api 1"
    },
    {
        "code": 200,
        "headers": {
            "content-type": "application\/json",
        },
        "body": "Your json response of sub api 2"
    }
]

code

  • 是子 API 调用的 HTTP 状态码

headers

  • 是子 API 调用的头部信息

body

  • 是子 API 调用的正文内容

许可证

在 MIT 许可证下发布,见 LICENSE。