2

У меня есть CodeIgniter REST API, созданный с помощью этой библиотеки: https://github.com/chriskacerguis/codeigniter-restserverкак добавить заголовок местоположения в ответ HTTP от CodeIgniter сервера отдыха

Для моего метода POST, после того, как ресурс был успешно создан, я хотел бы включить заголовок , который включает URI для получения вновь созданного/обновленного ресурса. Мне непонятно, как это сделать. Кто-нибудь пробовал что-то подобное?

До сих пор я просто добавляю детали того, что было создано для тела ответа ... но в конечном итоге я хотел бы добавить GET url в качестве заголовка местоположения.

Это то, что моя логика выглядит так далеко:

public function widget_post() 
{ 
     $new_widget_data = array(
       'location' =>$this->post('location'), 
       'name' => $this->post('name'), 
       'cost' => $this->post('cost') 
       ); 

     // validate post data 
     if (!$this->isvalidpost($new_widget_data)) { 
       $this->response("Invalid data",400); 
     } 

     // add to database 
     $res = $this->widget_model->notify_servers($new_widget_data); 
     $new_widget_data['results']=$res; 
     if ($res) { 
       //append GET url to return value      
       $new_widget_data['GET']=base_url()."/index.php/widgets/widget/".$new_widget_data['name']; 
       $this->response($new_widget_data,201); //HTTP Created 201   
     } else { 
     $this->response("Unable to process request",500); //HTTP Internal server error 
     } 

Любые предложения будут оценены. Благодарю.

ответ

2

Я не верю, что текущая версия библиотеки предоставляет способ сделать это.

Один из вариантов заключается в использовании функции php header() в сочетании с функцией response(), предоставляемой классом REST_Controller.

header ("Местоположение: местоположение/в/новый/ресурс");

Затем вызовите функцию ответа, гарантируя, что вы установите код 201. $ this-> response ($ new_widget_data, 201);

Обычно заголовок местоположения вызывает перенаправление по умолчанию, поэтому убедитесь, что вы всегда устанавливаете код 201.

http://php.net/manual/en/function.header.php

0

Вы пробовали перенаправление ('widgets? Widget ='. $ New_widget_data ['name']); или я пропущу точку?

+0

Я не думаю, что вы вполне поняли мой вопрос. Я не хочу перенаправлять запрос на вновь созданный виджет. Вместо этого, когда я отправляю ответ с 201 CREATED, я хочу включить тег заголовка местоположения с URI. Проясняет? – dot