控制器流明 returns 始终为 200
Lumen returns always 200 for Controllers
我正在尝试做一个基于 Lumen 的小休息 api。此示例一切正常:
routes/web.php
$router->post('foo/', function () {
return response('[]', 400)
->header('Content-Type', 'application/json');
});
邮递员收到此回复:
400 - 请求错误。没关系。但是如果我尝试对控制器做同样的事情 php file:
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?但为什么?
Headers 进入 body 回复...
您能提供一些解决此案的建议吗?
定义函数的 return 类型如 string
你告诉 php 将所有内容(除非 strict_types
声明)转换为 string
。我假设在 Response
class 的某处有一个 __toString
方法可以输出您在图片中看到的数据。所以,只需删除 return 类型声明。或将其更改为 Response
。处理数据并按要求输出是Response
class的责任,而不是你的控制器:
public function register(Request $request)
{
return response()->json(['message' => 'failed'], 400);
}
我正在尝试做一个基于 Lumen 的小休息 api。此示例一切正常:
routes/web.php
$router->post('foo/', function () {
return response('[]', 400)
->header('Content-Type', 'application/json');
});
邮递员收到此回复:
400 - 请求错误。没关系。但是如果我尝试对控制器做同样的事情 php file:
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?但为什么? Headers 进入 body 回复... 您能提供一些解决此案的建议吗?
定义函数的 return 类型如 string
你告诉 php 将所有内容(除非 strict_types
声明)转换为 string
。我假设在 Response
class 的某处有一个 __toString
方法可以输出您在图片中看到的数据。所以,只需删除 return 类型声明。或将其更改为 Response
。处理数据并按要求输出是Response
class的责任,而不是你的控制器:
public function register(Request $request)
{
return response()->json(['message' => 'failed'], 400);
}