2

REST のコツをつかむためだけに小さなアプリケーションの作成に取り組んでおり、DELETE メソッドで問題が発生しています。これまで使ったことがないので、どのように動作するかわかりません。

とにかく、このチュートリアルに従って、基本を理解しました。事前に作成された配列を使用する代わりに、ユーザーがデータを送信して MySQL データベースから表示できるように変更しました。

私は3つのファイルを持っています:

  • server.php - 使用されるメソッドを決定し、それに応じて動作する「API」

  • input.php - ユーザーがデータを入力するためのフォームを表示します

  • viewinput.php - 入力された入力を表示します。

エントリを削除できるように、viewinput.php に「削除」ボタンを配置しようとしています。入力した情報を表示するコードは次のとおりです。

while ($result = mysql_fetch_array($sql)){
        ?>
        <tr><td><? echo $result['id']." "; ?></td><td><? echo $result['text']; ?></td>
        <form method = "delete" >
            <td><input type="submit" name="delete" value="delete"></input></td></tr>
            <input type="hidden" name = "hidden_delete" value="<? echo $result['id']; ?>"></input>
        </form>
        <?
    }

さて、私の server.php ファイル (API) では、これがメソッドを決定し、さらに処理するために URL をコンポーネントに分割するために呼び出される最初の関数です。

public function serve() {
    $uri = $_SERVER['REQUEST_URI'];
    echo $method = $_SERVER['REQUEST_METHOD'];   //GET and POST are displayed, DELETE isn't
    $paths = explode('/', $this->paths($uri));
    array_shift($paths); // 
    $resource = array_shift($paths);

削除ボタンを押すと、URLは

/rest/viewinput

/rest/viewinput?delete=delete&hiddendelete=3 //assuming I deleted the 3rd entry

私が理解していることから、DELETE メソッドが送信されたときの URL は /rest/viewinput/3 である必要があります

私のserver.phpファイルでは、メソッドをエコーすると、POSTおよびGETメソッドのように「DELETE」が表示されません。

DELETE に関するこのリソースを見つけました。私が理解していることから、識別子は URL を介して渡されますが、GET や POST と同じように何らかのメソッドを受け取る必要があります (つまり、メソッドをエコーするときにコードに DELETE が表示されるはずです)。

4

1 に答える 1

3

PUTとの現在のローダウンは次のとおりDELETEです。

「普通のブラウジング」をしている場合、ほとんどのブラウザーは実際にはこれらの動詞のいずれも使用しません。ただし、XML Http Requests (つまり AJAX) に対してはサポートしています。そのため、クライアント側からは、HTML フォーム要素で直接PUTorを実際に使用して動作させることはできません。DELETEComplex857 によって提案された回避策を使用する必要があります。つまり、リクエストに意図を含めます。

バックグラウンド AJAX 呼び出しを使用している場合、または実際にブラウザを使用してリクエストを作成していない場合は、PUTおよびを含む HTTP 動詞の完全なスイートを使用できますDELETE。これに対する 1 つの注意点は、IIS では、サーバーが受け入れる特定の動詞を設定できるため、これらの動詞を許可するように設定を変更する必要がある場合があることです。

于 2012-09-07T13:16:58.963 に答える