2016-01-08 6 views
-1

Я попытался установить статус http в моем пользовательском API при выполнении запроса.Настройка статуса HTTP-запроса

protected $statusCode = 200; 

public function setStatusCode($statusCode) { 
     $this->statusCode = $statusCode; 
     return $this; 
    } 

public function respond($data, $headers = []) { 
     return response()->json($data, $this->getStatusCode(), $headers); 
    } 

public function respondCreated($message) { 
    return $this->setStatusCode(201)->respond([ 
     'message' => $message 
    ]); 
} 

$this->respondCreated("Incident was created"); 

Но когда я сделать запрос моего сервера в POSTMAN, я вижу состояние 200, а не 201, как указано в приведенном выше коде, и сообщение не появляется вообще. Нужно ли мне делать это по-другому?

Я использую рамку Laravel и реализованы функции по книге «Build API, вы не будете ненавидеть»

я использовал метод http_response_code() как предложены и установить такой код:

public function respondCreated($message) { 
    $this->setStatusCode(201)->respond([ 
     'message' => $message 
    ]); 
    http_response_code(201); 
    return $this; 
} 

Когда я верну код ответа, который он показывает правильно, но состояние POSTMAN еще 200?

Метод помощник по Laravel является response() и описывается как:

Returning a full Response instance allows you to customize the response's HTTP status code and headers. A Response instance inherits from the Symfony\Component\HttpFoundation\Response class, providing a variety of methods for building HTTP responses: 

use Illuminate\Http\Response; 

Route::get('home', function() { 
    return (new Response($content, $status)) 
        ->header('Content-Type', $value); 
}); 
For convenience, you may also use the response helper: 

Route::get('home', function() { 
    return response($content, $status) 
        ->header('Content-Type', $value); 
}); 

enter image description here

enter image description here

+2

И где код, который устанавливает фактический заголовок кода состояния HTTP? – deceze

+0

hm ... ну ... как мне это установить? – sesc360

+1

Не знаю. Что это за 'response()' и '-> json()' и whatnot doing ...!? – deceze

ответ

-2

Вы можете установить код ответа HTTP, как указано на PHP documentation.

<?php 

// Get the current default response code 
var_dump(http_response_code()); // int(200) 

// Set our response code 
http_response_code(404); 

// Get our new response code 
var_dump(http_response_code()); // int(404) 
?> 
+2

Опубликуйте пример того, как он мог это сделать, а затем просто разместил ссылку – Clay

+0

Метод прост в использовании, не имеет перегрузок, а также у меня нет полный класс искателя, чтобы представить полный пример. Я не вижу смысла предлагать роман для одного метода здесь. – Fury

+0

Если PHP изменяет свой сайт документации, ваш ответ больше не будет полезен. OP прилагал усилия, добавляя фрагменты своего кода, давайте сделаем то же самое, добавив некоторое понимание для них и для любого будущего читателя. Кроме того, как видно из кода OP, он фактически использует этот метод в своем коде. – Alfabravo

Смежные вопросы