Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 为什么我会得到一个“;无效的JSON“;状态代码204是什么时候?_Laravel_Http_Laravel 5_Phpunit_Http Status Code 204 - Fatal编程技术网

Laravel 为什么我会得到一个“;无效的JSON“;状态代码204是什么时候?

Laravel 为什么我会得到一个“;无效的JSON“;状态代码204是什么时候?,laravel,http,laravel-5,phpunit,http-status-code-204,Laravel,Http,Laravel 5,Phpunit,Http Status Code 204,我不知道这是不是有意的。但当我在控制器中使用响应代码204时,我在PHPunit中得到“从路由返回的JSON无效” 但是如果我把响应代码改为201,一切都会正常。。。为什么? protected function output($title, $status = 201) { return response([ 'title' => $title, 'offers' => $this->popular, ], $status);

我不知道这是不是有意的。但当我在控制器中使用响应代码204时,我在PHPunit中得到“从路由返回的JSON无效”

但是如果我把响应代码改为201,一切都会正常。。。为什么?

protected function output($title, $status = 201)
{
    return response([
        'title' => $title,
        'offers' => $this->popular,
    ], $status);
}

$this->output('Empty', 204); //Here is the error
在我的测试中

/** @test */
public function popular_can_fetch_food_lists() {
    $result = $this->json('post', route('popular', [
        'type' => $this->food->type,
        'id' => $this->food->id
    ]))->json();
}
如果你看一看,你可以读到:

204响应由标头字段后的第一个空行终止,因为它不能包含消息正文

所以,如果您使用204来表示任何内容,实际上不会有任何内容响应


因此,您可能不应该在测试中运行
->json()
。您应该只验证状态代码是否为204

204表示没有内容。你是想把json从无内容中提取出来,还是我弄错了?@vahdet-Oh。。。但是,如果您的响应是一个空数组,您将采用哪种响应代码呢?空数组仍然是一种特性。实际上,204的响应主体中没有设置任何内容。最适合您的是:您发送了一个
POST
,看到这一点,“此状态代码(201)的常见用例是POST请求的结果。”。所以,201对于你来说必须是完全合法的。好吧,对不起,我认为204意味着没有内容,因为响应会给你一个空数组。