DELETE с HTTP_NO_CONTENT / 204 не возвращает ответ - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь сделать отдых с помощью Codeigniter и chriskacerguis / codeigniter-rest Библиотека

Я сделал функцию удаления данных, и в случае успеха она отправит статус 204 иответное сообщение,

, поэтому проблема в том, что оно не возвращает ответное сообщение, если со статусом 204, но если за ним следует статус 200 и т. д., оно работает правильно

Я проверяю его с почтальоном, и даконечно, я проверяю его в основном меню

здесь код:

 public function index_delete()
    {
        $id = $this->delete('id');
        if ($id === null) {
            //---- working fine return the response----
            $this->response([
                'status' => false,
                'message' => 'Provide an id!'
            ], REST_Controller_Definitions::HTTP_BAD_REQUEST);
        } else {
            if ($this->employee->deleteEmployee($id) > 0) { 
              //----working, but not return the response----
                 $this->response([
                   'status' => true,
                   'id' => $id,
                   'message' => 'Successfully Deleted'
                ], REST_Controller_Definitions::HTTP_NO_CONTENT);
             } else {
               //---- working fine return the response---
               $this->response([
                  'status' => false,
                  'message' => 'Id is not exits!'
                ], REST_Controller_Definitions::HTTP_BAD_REQUEST); 
             }
         }
     }

, но если я изменю статус HTTP_NO_CONTENT на HTTP_OK или HTTP_BAD_REQUEST или т. д., он будет работать правильно

и я тоже так пробовал, как в Example.php на chriskacerguis-restserver, но у меня ничего нет

$message = [
             'status' => true,
             'id' => $id,
             'message' => 'Deleted'
            ];
$this->set_response($message, REST_Controller_Definitions::HTTP_NO_CONTENT);

, и это мой метод:

public function deleteEmployee($id)
{

  $this->db->delete('employees', ['id' => $id]);
  return $this->db->affected_rows();
}

так проблема в моем коде, библиотеке или программном обеспечении почтальона?

1 Ответ

0 голосов
/ 24 сентября 2019

A 204 означает «нет содержимого».Вы не можете отправить ответные данные обратно с 204.

https://tools.ietf.org/html/rfc7231#section-6.3.5

Код состояния 204 (без содержимого) указывает, что сервер успешно выполнил запрос и что в теле полезной нагрузки ответа нет дополнительного контента для отправки .Метаданные в полях заголовка ответа относятся к целевому ресурсу и его выбранному представлению после применения запрошенного действия.

...

Сервер предполагает, что пользовательский агент предоставит некотороеуказание успеха его пользователю в соответствии с его собственным интерфейсом и применение любых новых или обновленных метаданных в ответ на его активное представление.

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5

Ответ 204 НЕ ДОЛЖЕН включать тело сообщения и, таким образом, всегда заканчивается первой пустой строкой после полей заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...