Маршрут Laravel как обратный вызов API: как избежать того, чтобы & quot; содержимое ответа должно быть строкой или объектом & quot; ошибка?

В моем приложении Laravel 5.2 я использую CloudConvert для преобразования моих файлов. Я реализовал асинхронное преобразование, которое требует публичного URL обратного вызова для моего сайта. Как это:

public function upload(Request $request) {
// Store uploaded file...
CloudConvert::file(/* path to the file */)
->callback(action('UploadController@saveFileFromProcess'))
->convert('pdf');
}

И обратный звонок:

public function saveFileFromProcess() {
try {
CloudConvert::useProcess($request->input('url'))
->save(/* path to file storage */);
} catch (\Exception $e) {
Log::error($e->getMessage());
return false;
}

return true;
}

Теперь конвертация работает просто отлично. Но я вижу в журналах, что Laravel выдает ошибку после того, как преобразование выполнено:

Содержимое Ответа должно быть строкой или объектом, реализующим
__toString (), дано логическое значение.

Я понимаю, что это потому, что маршрут вызывается и возвращается true или же falseвместо, например, предоставление представления.

Что я тогда должен вернуть, чтобы избежать ошибки? Достаточно ли строки? Есть ли что-то конкретное, что я могу вернуть для такого звонка?

А что, если я все еще хочу остановить сценарий, например, когда конкретный Request вход отсутствует?

1

Решение

Вы можете вернуть массив с ответом, например return ['status' => true];, который автоматически будет преобразован в JSON, и вы можете использовать его, если вы получите доступ к этому маршруту с помощью AJAX.

3

Другие решения

Других решений пока нет …