12

タイトルが示すように、私はPhilsturgeonでCodeigniterを使用しています-codeigniter-restserverフレームワーク。

Nettusのチュートリアルに従いましたが、DELETEリクエストを送信する場合を除いてすべて正常に動作します。

コード:

<?php
require(APPPATH.'libraries/REST_Controller.php');

class Client extends REST_Controller{

function user_get()
{
    $data = array('returned:'=> $this->get('id'));
    $this->response($data);
}

function user_post()
{
    $data = array('returned:'=> $this->post('id'));
    $this->response($data);
}

function user_put()
{
    $data = array('returned:'=> $this->put('id'));
    $this->response($data);
}

function user_delete()
{
    $data = array('returned from delete:'=> $this->delete('id'));
    $this->response($data);
}
}

HTTPリソーステストと呼ばれるFFアドオンを使用してリクエストを送信していますが、次のURLでDELETEリクエストを送信すると、http://localhost/api/client/user/id/1{"returned from delete:":false}が表示されます。

補足として:この投稿を見つけ、「X-HTTP-Method-Override」ヘッダーを使用して投稿リクエストとして送信すると、IDを取得できましたが、クライアントが追加する必要がない方法をお勧めしますこのヘッダー。

4

2 に答える 2

15

HTTP仕様によると、DELETEはパラメータを送信できません。URLに何かを含めることができるので、これを次のように変更できます。

public function user_delete($id)
{
    $this->response(array(
        'returned from delete:' => $id,
    ));
}
于 2012-06-12T13:25:18.777 に答える
0

私は私のためにこの仕事と同じ問題を抱えていました

1-> REST_Controller.phpで、デフォルトの_parse_delete()関数を次のように置き換えます。

protected function _parse_delete()
{
    $this->_delete_args = $_DELETE;
    $this->request->format and $this->request->body = file_get_contents('php://input');
    // Set up out DELETE variables (which shouldn't really exist, but sssh!)
    parse_str(file_get_contents('php://input'), $this->_delete_args);
}

それで全部です!" user_delete($ id ""はもう必要ありません

于 2014-07-24T22:07:37.480 に答える