У меня есть 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
}
Мы ценим любые предложения. Благодарю.
Я не верю, что текущая версия библиотеки предоставляет способ сделать это.
Один из возможных вариантов — использовать функцию php header () в сочетании с функцией response (), предоставляемой классом REST_Controller.
заголовок («Местоположение: местоположение / на / новый / ресурс»);
Затем вызовите функцию ответа, убедившись, что вы установили код 201.
$ this-> response ($ new_widget_data, 201);
Как правило, заголовок Location по умолчанию инициирует перенаправление, поэтому всегда устанавливайте код 201.
Вы пытались перенаправить (‘widgets? widget =’. $ new_widget_data [‘name’]);
или я упускаю суть?