对于控制器,流明返回总是200

时间:2018-06-03 08:02:50

标签: php lumen

我正在尝试做一个基于Lumen的小休息api。这个样本的一切都还可以:

路由/ web.php

$router->post('foo/', function () {
    return response('[]', 400)
        ->header('Content-Type', 'application/json');
});

邮递员收到此回复:

400

400 - 请求不好。没关系。但是如果我尝试用控制器php文件做同样的事情:

路由/ web.php

$router->post('accounts/', 'AccountController@register');

应用/ HTTP /控制器/ 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);
    }
}

enter image description here

状态代码是:200?但为什么? 标题来自身体反应...... 你能建议解决这个案子吗?

1 个答案:

答案 0 :(得分:1)

定义函数的返回类型,如string,告诉php将所有内容(除非strict_types声明)转换为string。我假设在Response课程的某个地方有一个__toString方法可以输出您在图片中看到的数据。所以,只需删除返回类型声明。或者将其更改为ResponseResponse类负责处理数据并根据需要输出数据,而不是控制器:

public function register(Request $request) 
{
    return response()->json(['message' => 'failed'], 400);
}