我正在尝试做一个基于Lumen的小型rest api。此示例一切正常:
routes/web.php
$router->post('foo/', function () {
return response('[]', 400)
->header('Content-Type', 'application/json');
});
postman 收到此回复:
400 - 错误的请求。没关系。但如果我尝试对 Controller php 文件执行相同的操作:
routes/web.php
$router->post('accounts/', 'AccountController@register');
app/Http/Controllers/AccountController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class AccountController extends Controller {
public function __construct() {}
public function register(Request $request): string {
return response()->json(['message' => 'failed'], 400);
}
}
状态代码是:200?但为什么? 标题来自正文响应...... 您能提供解决此案的建议吗?
最佳答案
定义函数的返回类型,例如string
,您告诉php将所有内容(除非strict_types
声明)转换为string
。我假设在 Response 类中的某个地方有一个 __toString 方法,它输出您在图片中看到的数据。因此,只需删除返回类型声明即可。或者将其更改为响应
。处理数据并根据需要输出是 Response 类的责任,而不是您的 Controller :
public function register(Request $request)
{
return response()->json(['message' => 'failed'], 400);
}
关于php - 对于 Controller 来说,Lumen 始终返回 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50664415/