如何使用变量发送补丁 api 请求
How to send a patch api request using a variable
我正在尝试使用 API 更新 Zoom 会议应用程序中的用户类型。我根据他们的文档使用 PATCH,当我在 URL 中对 userId 进行硬编码时这会起作用,但我需要使用数组变量来代替,因为需要同时更新多个用户。
此代码适用于手动输入的用户 ID。
userId和bearer code就是为了这个问题而编造的
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->PATCH('https://api.zoom.us/v2/users/jkdflg4589jlmfdhw7', [
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer my token goes here',
],
'body' => json_encode([
'type' => '1',
])
]);
$body = $response->getBody() ;
$string = $body->getContents();
$json = json_decode($string);
这样代码就可以工作并将我的用户类型更改为 1。
下面的代码是行不通的。
在 Zoom API 参考中有一个测试部分,可以在名为“设置”的选项卡中添加用户 ID,该选项卡位于“路径参数”字段下。
https://marketplace.zoom.us/docs/api-reference/zoom-api/users/userupdate
因此我可以在那里添加 userId,当我 运行 它时,它实际上将 URL 中的 {userId} 替换为 url 补丁命令中的实际 userId。
由此而来 ->
补丁https://api.zoom.us/v2/users/{userId}
经过各种改造、脚本、
变量替换为 运行.
补丁https://api.zoom.us/v2/users/jkdflg4589jlmfdhw7
但是,当我在我的代码中尝试它时它不起作用,我不知道在哪里添加路径参数。我更习惯 PHP 但我会尽我所能让它发挥作用。此外,我希望 userId 成为一个可能包含 1 个或多个 userIds(数组)的变量。
我的代码不起作用:
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->PATCH('https://api.zoom.us/v2/users/{userId}', [
'params' => [
'userId' => 'jkdflg4589jlmfdhw7',
],
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer my token goes here',
],
'body' => json_encode([
'type' => '1',
])
]);
$body = $response->getBody() ;
$string = $body->getContents();
$json = json_decode($string);
我的代码因错误而失败:
Fatal error: Uncaught GuzzleHttp\Exception\ClientException: Client error: `PATCH https://api.zoom.us/v2/users/%7BuserId%7D` resulted in a `404 Not Found` response: {"code":1001,"message":"User not exist: {userId}"}
in /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace:
#0 /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 /home/.../publ in /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113
如果我理解正确,那么这是 PHP 中您尝试执行的基本字符串连接
$userId = 'jkdflg4589jlmfdhw7';
$response = $client->PATCH('https://api.zoom.us/v2/users/' . $userId, [
// other options
]);
However, when I try it in my code it doesn't work, I don't know where to add the path params.
您在第一个参数中添加 URL 路径,因为路径是 URL 的一部分。但是,您可以通过 Guzzle 选项设置查询参数(例如 GET 请求)和表单数据(例如 POST 表单请求),但不能设置路径。
Also I would like userId to be a variable that may contain 1 or more userIds (array).
仅使用简单的 implode
将数组转换为逗号分隔列表应该可行,但您链接到的 API 点似乎不支持多个用户 ID。
$userId = ['jkdflg4589jlmfdhw7', 'asdfa123sdfasdf'];
$response = $client->PATCH('https://api.zoom.us/v2/users/' . implode(',', $userId), [
// other options
]);
我正在尝试使用 API 更新 Zoom 会议应用程序中的用户类型。我根据他们的文档使用 PATCH,当我在 URL 中对 userId 进行硬编码时这会起作用,但我需要使用数组变量来代替,因为需要同时更新多个用户。
此代码适用于手动输入的用户 ID。 userId和bearer code就是为了这个问题而编造的
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->PATCH('https://api.zoom.us/v2/users/jkdflg4589jlmfdhw7', [
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer my token goes here',
],
'body' => json_encode([
'type' => '1',
])
]);
$body = $response->getBody() ;
$string = $body->getContents();
$json = json_decode($string);
这样代码就可以工作并将我的用户类型更改为 1。
下面的代码是行不通的。 在 Zoom API 参考中有一个测试部分,可以在名为“设置”的选项卡中添加用户 ID,该选项卡位于“路径参数”字段下。
https://marketplace.zoom.us/docs/api-reference/zoom-api/users/userupdate
因此我可以在那里添加 userId,当我 运行 它时,它实际上将 URL 中的 {userId} 替换为 url 补丁命令中的实际 userId。
由此而来 ->
补丁https://api.zoom.us/v2/users/{userId}
经过各种改造、脚本、 变量替换为 运行.
补丁https://api.zoom.us/v2/users/jkdflg4589jlmfdhw7
但是,当我在我的代码中尝试它时它不起作用,我不知道在哪里添加路径参数。我更习惯 PHP 但我会尽我所能让它发挥作用。此外,我希望 userId 成为一个可能包含 1 个或多个 userIds(数组)的变量。
我的代码不起作用:
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->PATCH('https://api.zoom.us/v2/users/{userId}', [
'params' => [
'userId' => 'jkdflg4589jlmfdhw7',
],
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer my token goes here',
],
'body' => json_encode([
'type' => '1',
])
]);
$body = $response->getBody() ;
$string = $body->getContents();
$json = json_decode($string);
我的代码因错误而失败:
Fatal error: Uncaught GuzzleHttp\Exception\ClientException: Client error: `PATCH https://api.zoom.us/v2/users/%7BuserId%7D` resulted in a `404 Not Found` response: {"code":1001,"message":"User not exist: {userId}"}
in /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace:
#0 /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 /home/.../publ in /home/.../Zoom_API_V2/guzzle_response/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113
如果我理解正确,那么这是 PHP 中您尝试执行的基本字符串连接
$userId = 'jkdflg4589jlmfdhw7';
$response = $client->PATCH('https://api.zoom.us/v2/users/' . $userId, [
// other options
]);
However, when I try it in my code it doesn't work, I don't know where to add the path params.
您在第一个参数中添加 URL 路径,因为路径是 URL 的一部分。但是,您可以通过 Guzzle 选项设置查询参数(例如 GET 请求)和表单数据(例如 POST 表单请求),但不能设置路径。
Also I would like userId to be a variable that may contain 1 or more userIds (array).
仅使用简单的 implode
将数组转换为逗号分隔列表应该可行,但您链接到的 API 点似乎不支持多个用户 ID。
$userId = ['jkdflg4589jlmfdhw7', 'asdfa123sdfasdf'];
$response = $client->PATCH('https://api.zoom.us/v2/users/' . implode(',', $userId), [
// other options
]);