Как добавить заголовок местоположения в HTTP-ответ от остального сервера codeigniter

У меня есть codeigniter rest api, созданный с использованием этой библиотеки:
https://github.com/chriskacerguis/codeigniter-restserver

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

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

Вот как выглядит моя логика:

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.

заголовок («Местоположение: местоположение / на / новый / ресурс»);

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

Как правило, заголовок Location по умолчанию инициирует перенаправление, поэтому всегда устанавливайте код 201.

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

2

Другие решения

Вы пытались перенаправить (‘widgets? widget =’. $ new_widget_data [‘name’]);
или я упускаю суть?

0