Guzzle возвращает ошибку 500

Так что я новичок в том, чтобы жрать и создавать API, я использовал Laravel Passport, и на одном GET-вызове все в порядке. Я написал вызов POST и получил в ответ ошибку 500

Почтовая функция

  public function newsSingle() {
            $request = (new GuzzleHttp\Client)->post('http://138.68.180.100/news/article/single', [
                'headers' => [
                    'Authorization' => 'Bearer '.session()->get('token.access_token'),
                    'post_id' => $_POST['post_id']
                ]
            ]);
            $news = json_decode((string)$request->getBody());
            return view('pages.newsingle', compact('news'));
}

Что действительно добавляет элемент сообщения POST Data post_id "3"

на другом конце у меня есть

Маршрут:

Route::post('news/article/single', 'ApiController@singlePost')->middleware('auth:api');

Функция контроллера:

public function singlePost(Request $request) {
        $article = Articles::where('id', $request['post_id'])->get();
        return $article;
    } 

моя ошибка:

Server error: `POST http://ipaddress/news/article/single` resulted in a `500 Internal Server Error` response: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="robots" content="noindex,nofollow (truncated...)

person GrahamMorbyDev    schedule 19.12.2017    source источник
comment
Затем вы должны проверить сообщение об ошибке в журналах сайта. Внутренняя ошибка сервера означает, что программист что-то напортачил, о чем я вам не скажу, но запомню это в лог-файле, чтобы он знал подробности и как это исправить.   -  person Amarnasan    schedule 19.12.2017
comment
Убедитесь, что для отладки установлено значение true в вашем .env, чтобы вы могли увидеть свою ошибку.   -  person Thomas Edwards    schedule 19.12.2017
comment
Поэтому я включил отладку в обоих приложениях и до сих пор не вижу ошибки laravel, и попытка найти журналы ошибок в Nginx болезненна.   -  person GrahamMorbyDev    schedule 19.12.2017
comment
Это может быть множество вещей, начиная от простой опечатки в коде и заканчивая несоответствием в вашей структуре базы данных. Если это отдельные приложения, убедитесь, что отладка включена на стороне API, а также на вашем собственном, ошибка будет регистрироваться там, где возникает ошибка 500, а не там, где вы пытаетесь использовать API.   -  person j5Dev    schedule 19.12.2017
comment
Итак, у меня есть конец API, а другой - отладка, и я ничего не получаю. Маршрут и контроллер работают на конце API, я просто получаю эту ошибку при вызове. Может ли это быть как-то связано с CORS ??   -  person GrahamMorbyDev    schedule 19.12.2017


Ответы (1)


Мы обнаружили аналогичную проблему с Guzzle для вызовов внешнего API, когда код ответа 500 и получил Server error:, и было выдано исключение. Существует обходной путь, позволяющий обойти механизм, перехватив исключение из-за того, что BadResponseException возвращается в качестве ответа. ниже приведен код для выполнения этого. :)

catch (\GuzzleHttp\Exception\BadResponseException $e) {
    return $e->getResponse()->getBody()->getContents();
}
person ferdousulhaque    schedule 09.07.2019