php - 对于 Controller 来说,Lumen 始终返回 200

标签 php lumen

我正在尝试做一个基于Lumen的小型rest api。此示例一切正常:

routes/web.php

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

postman 收到此回复:

400

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);
    }
}

enter image description here

状态代码是: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/

相关文章:

php - PHP 和 MySQL 风格切换器

php - 将 PHP 最大执行时间设置为 600 是否安全?

java - PHP JSON 到 Java 由于不可见字符而无法解析

laravel - 在流明注册立面和服务提供商的位置

php - Lumen HTTP 基本认证

php - #1045 无法在 wamp 中登录 MySQL 服务器

php - Laravel 5 批量插入关系

php - 如何将实现数组注入(inject)到 PHP 的构造函数中

php - laravel/lumen 查询生成器 whereColumn 方法中的问题

php - 创建规则使请求仅包含某些键