我正在尝试做一个基于Lumen的小休息api。这个样本的一切都还可以:
路由/ web.php
$router->post('foo/', function () {
return response('[]', 400)
->header('Content-Type', 'application/json');
});
邮递员收到此回复:
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);
}
}
状态代码是:200?但为什么? 标题来自身体反应...... 你能建议解决这个案子吗?
答案 0 :(得分:1)
定义函数的返回类型,如string
,告诉php将所有内容(除非strict_types
声明)转换为string
。我假设在Response
课程的某个地方有一个__toString
方法可以输出您在图片中看到的数据。所以,只需删除返回类型声明。或者将其更改为Response
。 Response
类负责处理数据并根据需要输出数据,而不是控制器:
public function register(Request $request)
{
return response()->json(['message' => 'failed'], 400);
}