如何将位置 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 代码。

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