gpt4 book ai didi

laravel - 使用 Guzzle 将 API Response 中的错误传递给 Laravel View

转载 作者:行者123 更新时间:2023-12-05 01:46:30 25 4
gpt4 key购买 nike

这是我的代码:

public function store(Request $request)
{
try {

$request->merge(['subject' => 'Subject']);

$client = new Client(['base_uri' => 'http://crm.vulcan/api/v1/']);

$res = $client->request('POST','contactForm',[
'headers' => [
'Accept' => 'application/json'
]
]);

} catch (RequestException $e) {
return Redirect::route('contact.form')->withErrors($e->getResponse());
}
}

它不起作用,因为我不知道 $e->getResponse() 应该如何工作。

如果我执行 dd($e->getResponse()) 然后我得到这个:

Response {#330 ▼
-reasonPhrase: "Unprocessable Entity"
-statusCode: 422
-headers: array:7 [▶]
-headerLines: array:7 [▶]
-protocol: "1.1"
-stream: Stream {#328 ▶}
}

reasonPhrasestatusCode 正是我所期待的,所以没有问题。

但是,我真正想要的只是来自 API 的 JSON 对象,它说明哪些字段未验证。我知道这个对象在那里,因为当我通过 Postman 发送 POST 时我可以看到它。而且,奇怪的是,如果我对完全相同的 $e->getResponse 进行返回,那么我也可以看到该对象:

{
"name": [
"The name field is required."
],
"nickname": [
"The nickname field is required."
],
"email": [
"The email field is required."
],
"subject": [
"A subject must be provided"
],
"body-text": [
"The body-text field is required."
]
}

这正是我需要传递给 withErrors() 的内容,然后我就完成了,但我就是不知道该怎么做。

我觉得我对流有误解,但我已经阅读了有关 PSR7 和流的内容,恐怕我不明白其中的任何含义或它与这个特定问题的相关性。

编辑

经过更多调整后,我将 catch 更新为以下内容:

        $errors = json_decode($e->getResponse()->getBody()->getContents());

return Redirect::route('contact.form')->withErrors($errors);

这似乎有效,因为我以 Laravel 可用于表单的格式获取错误的 JSON 对象。

最佳答案

这应该可以在不抛出异常的情况下处理 HTTP 代码:

public function store(Request $request)
{
$request->merge(['subject' => 'Subject']);

$client = new Guzzle([
'base_uri' => 'http://crm.vulcan/api/v1/'
]);

$res = $client->request('POST','contactForm',[
'http_errors'=>false,
'headers' => [
'Accept' => 'application/json'
]
]);

if ($res->getStatusCode() == 422) {
//then there should be some validation JSON here;
$errors = json_decode($res->getBody()->getContents());
}

return Redirect::route('contact.form')->withErrors($errors);
}

关于laravel - 使用 Guzzle 将 API Response 中的错误传递给 Laravel View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35555449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com