【问题标题】:How to "Include" in a JSON API Post in PHP?如何在 PHP 中的 JSON API 帖子中“包含”?
【发布时间】:2018-11-10 01:07:24
【问题描述】:

我正在使用Planning Center API,它的构建符合 JSON API 1.0 规范。

我们需要将人员数据发布到规划中心。 API 似乎将一个人从他们的电话号码和电子邮件中分离出来。我是新手,所以我不确定您是否可以将它们全部发布在同一个 cURL 请求中,或者我是否需要 3 个请求。我的理解(可能被误导)是我可以在 POST 请求中“包含”电子邮件和电话号码。

这就是我所拥有的:

$person = '{
          "data": {
            "type": "Person",
            "attributes": {
              "first_name": "Test",
              "last_name": "User"
            },
            "relationships": {
              "primary_campus": {
                "data": { "type": "PrimaryCampus", "id": "123" }
              }
            }
          },
          "include":{
          "data": {
            "type": "emails",
            "attributes": {"address": "test@test.com"}
            }
          }
        }';

$channel = curl_init();
curl_setopt( $channel, CURLOPT_URL, "https://api.planningcenteronline.com/people/v2/people" );
//curl_setopt( $channel, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $channel, CURLOPT_USERPWD, $application_ID.":".$application_secret );
curl_setopt( $channel, CURLOPT_POST, true);
curl_setopt( $channel, CURLOPT_POSTFIELDS, $person);
curl_exec($channel);
echo $channel;

这似乎只创建了人的名字和姓氏(以及相关的校园)。未创建电子邮件。

这里是documentation for the email. 这是documentation for the person

任何想法我在这里缺少什么?

【问题讨论】:

  • 从文档中并不清楚,但developer.planning.center/docs/#/introduction/json-api 暗示“包含”的想法是在从 API 获取数据时使用的东西,而不是向它发送数据。也许您应该向维护人员寻求澄清。此外,如果一个人可以与许多电子邮件相关联,那么如果“包含”东西确实适用于发送,那么我猜它会期望一个列表(即数组)而不仅仅是一个对象。但是,如果您提供错误的格式,这应该会导致验证错误。
  • 您是否尝试过将项目作为数组传递到 data 元素下?
  • 我刚刚尝试将电子邮件地址作为数组传递并收到无效 JSON 的错误。我也尝试在数据块下传递它,但也得到了一个无效的 json 错误。从您的 cmets 看来,我似乎离我不远了,但是文档有点含糊。我想我应该联系他们。

标签: php json-api php-curl


【解决方案1】:

JSON API Specification v1.0 不支持批量创建。如果此特定 API 未实现不属于 JSON API 规范的其他功能,则您无法仅在一个请求中创建具有关联电子邮件的人员。

旁注:即将推出的 v1.1 版本可能会通过一项称为操作的功能来支持这一点。您可以在this pending pull request找到更多详细信息。

简而言之:就我得到他们的具体实现而言,您必须创建一个具有第一个请求的人,然后创建一个与另一个请求相关联的电子邮件地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多