如何将位置 header 添加到来自 codeigniter rest 服务器的 http 响应
how to add a location header to http response from codeigniter rest server
我有一个 codeigniter rest api,是使用这个库创建的:
https://github.com/chriskacerguis/codeigniter-restserver
对于我的POST方法,成功创建资源后,我想包含一个位置header,其中包含用于获取新创建/更新资源的 URI。
我不清楚该怎么做。
有没有人尝试过类似的东西?
到目前为止,我只是将已创建内容的详细信息添加到响应 body...但我最终想添加 GET url 作为位置 header.
到目前为止我的逻辑是这样的:
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
}
如有任何建议,我们将不胜感激。谢谢
你试过重定向吗('widgets?widget='.$new_widget_data['name']);
还是我错过了重点?
我不认为当前版本的库提供了执行此操作的方法。
您有一个选择是将 php header() 函数与 REST_Controller class 提供的 response() 函数结合使用。
header("Location: location/to/new/resource");
然后调用响应函数,确保设置 201 代码。
$this->response($new_widget_data, 201);
通常情况下,位置 header 会默认触发重定向,因此请确保您始终设置 201 代码。
我有一个 codeigniter rest api,是使用这个库创建的: https://github.com/chriskacerguis/codeigniter-restserver
对于我的POST方法,成功创建资源后,我想包含一个位置header,其中包含用于获取新创建/更新资源的 URI。 我不清楚该怎么做。 有没有人尝试过类似的东西?
到目前为止,我只是将已创建内容的详细信息添加到响应 body...但我最终想添加 GET url 作为位置 header.
到目前为止我的逻辑是这样的:
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
}
如有任何建议,我们将不胜感激。谢谢
你试过重定向吗('widgets?widget='.$new_widget_data['name']); 还是我错过了重点?
我不认为当前版本的库提供了执行此操作的方法。
您有一个选择是将 php header() 函数与 REST_Controller class 提供的 response() 函数结合使用。
header("Location: location/to/new/resource");
然后调用响应函数,确保设置 201 代码。 $this->response($new_widget_data, 201);
通常情况下,位置 header 会默认触发重定向,因此请确保您始终设置 201 代码。