gpt4 book ai didi

laravel - 如何从 Laravel Controller 返回 AJAX 错误?

转载 作者:行者123 更新时间:2023-12-01 16:59:09 25 4
gpt4 key购买 nike

我正在使用 Laravel 5 构建 REST API。

在 Laravel 5 中,您可以子类化 App\Http\Requests\Request 来定义在处理特定路由之前必须满足的验证规则。例如:

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class BookStoreRequest extends Request {

public function authorize() {
return true;
}

public function rules() {
return [
'title' => 'required',
'author_id' => 'required'
];
}
}

如果客户端通过 AJAX 请求加载相应的路由,并且 BookStoreRequest 发现该请求不满足规则,它会自动以 JSON 对象的形式返回错误。例如:

{
"title": [
"The title field is required."
]
}

但是,Request::rules() 方法只能验证输入,即使输入有效,在请求已被接受并移交给其他人之后,也可能会出现其他类型的错误。 Controller 。例如,假设 Controller 由于某种原因需要将新书信息写入文件,但该文件无法打开:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use App\Http\Requests\BookCreateRequest;

class BookController extends Controller {

public function store( BookStoreRequest $request ) {

$file = fopen( '/path/to/some/file.txt', 'a' );

// test to make sure we got a good file handle
if ( false === $file ) {
// HOW CAN I RETURN AN ERROR FROM HERE?
}

fwrite( $file, 'book info goes here' );
fclose( $file );

// inform the browser of success
return response()->json( true );

}

}

显然,我可以die(),但这太难看了。我希望以与验证错误相同的格式返回错误消息。像这样:

{
"myErrorKey": [
"A filesystem error occurred on the server. Please contact your administrator."
]
}

我可以构建自己的 JSON 对象并返回该对象 - 但 Laravel 本身就支持这一点。

最好/最干净的方法是什么?或者是否有更好的方法从 Laravel REST API 返回运行时(而不是验证时)错误?

最佳答案

您可以在 json 响应中设置状态代码,如下所示:

return Response::json(['error' => 'Error msg'], 404); // Status code here

或者仅使用辅助函数:

return response()->json(['error' => 'Error msg'], 404); // Status code here

关于laravel - 如何从 Laravel Controller 返回 AJAX 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329498/

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