【发布时间】:2020-07-07 23:43:12
【问题描述】:
大家早上好,
作为演示API开发的一部分,我实现了两个API:
- HelloWorld
- 通知
第一个允许请求执行 HelloWorld,第二个允许根据定义的模板发送电子邮件。 在我的演示中,我从 Postman(或从 React 应用程序)对 HelloWorld 进行 API 调用,然后对 Notifier 进行 API 调用以发送消息。
如果我从 Postman 直接调用 Notifier API 来发送电子邮件,我不会遇到任何问题(.env 文件已很好地配置用于在此 API 中发送电子邮件)。 另一方面,如果我将我的 API 从 HelloWorld 调用到 Notifier(HelloWorld 的 .env 文件未配置为发送电子邮件),我会遇到错误:
预期的响应代码为 250,但得到代码“530”,消息为“530 5.7.1 需要认证
另一方面,如果我配置 HelloWorld API 的 .env 文件(它不会在任何时候发送电子邮件),我不会再有任何错误,并且通知程序可以很好地发送我的电子邮件。
这是 HelloWorld 中的 API 调用:
$client = new Client();
$response = $client->post("http://vhost-url.local/api/notifier/sendmail", [
'json' => [
'to' => $to,
'template' => $template,
'parameters' => $parameters
],
]);
这是 Notifier API 中调用的操作:
public function sendmail(Request $request)
{
$params = json_decode($request->getContent(), true);
try{
switch ($params['template']) {
case 'HELLO_WORLD':
Mail::to($params['to'])
->send(new HelloWorld([
'message' => $params['parameters']['message']
]));
break;
default:
throw new \Exception("Ce template n'existe pas");
break;
}
} catch(\Exception $e) {
return response()
->json([
'message' => $e->getMessage(),
], 500);
}
return response()
->json([
'message' => 'Le mail a bien été envoyé'
], 200);
}
我的问题是:在 API 调用期间(在我的情况下使用 Guzzle),是否使用源 API 的环境文件而不是目标 API 的环境文件?如果是这样,如何解决这个问题?
【问题讨论】:
标签: php laravel api environment-variables guzzle