0

私は最初の Web アプリケーションに取り組んでいますが、この基本的な疑問があります。

投稿のグループがあり、ユーザーがそれらに投票できるようにしたいと考えています。私は PHP を使用しているので、article.phpHTTP 要求を処理するコードを含むスクリプトがあります。

現時点では、POST HTTP リクエスト (html フォームを使用) を介して送信されたデータを使用する記事作成を実装しました。返される記事 ID は、記事を格納する DB から取得したものです。

同様に、GET リクエストを処理し、パラメーターとして送信された ID に基づいて記事を返します。パラメータが定義されていない場合は、すべての記事のリストを返します。

現時点では URL の書き換えを行っていないため、リクエストは次の形式ですarticle.php?id=xxx

今、私は投票を実装したいのですが、これが私が問題に直面している場所です。REST によると、特定のリソースで POST を使用する必要があるため (投票が冪等ではない場合) 、肯定的な投票/article/1234の本文を含む POST 要求を に送信します。"+1"

問題は、上記をユースケースにどのようにマッピングするかです。URLの書き換えが行われたと仮定すると、それは何に変換されますか? article.php?id=1234POST は URI (AFAIK) でパラメーターを取得しないため、書き換えを行っても機能しません。

また、このアクションを他のアクションとどのように区別しますか? のような「アクション」パラメータも追加する必要がありますarticle.php?id=1234&action=voteか?

4

1 に答える 1

1

REST-ful アプリケーションの本当のアイデアが得られなかったようです。GET で記事を取得して POST で編集するのは問題ありませんが、これを投票に拡張する必要があります。REST-ful アプリケーションは、1 つの URL が 1 つのリソースを識別すると想定しています。したがって、投票を独自のリソース (記事に関連するもの) と考える必要があります。したがって、アプリケーションは次のように動作するはずです

GET article.php/id/1 : ID 1 の記事を取得します

POST article.php/id/1 : アーティクルを id 1 に変更します

GET article.php/id/1/votes : ID 1 の記事の投票を取得します

POST article.php/id/1/votes : ID 1 の記事の投票を変更します

投票が単純なカウンターとして実装されている限り、1 つの賛成票を追加して後者を実装してもまったく問題ありません。投票にアイデンティティを与えることで、このロジックを再定義できます。たとえば、投票を行ったユーザーなどの属性を投票に追加したい場合などです。

あなたが書き直しを要求したように、アプリケーションがポストリクエストでURLからデータを取得できるかどうか:はい、それは完全に可能です。article?id=1 への POST リクエストでは、$_GET['id'] が利用可能になります。

上記の書き換え部分は完全にオプションです。1 つの URL が 1 つのリソースを識別する限り、REST は URL の「適切さ」には関心がありません。

うまくいけば、これはあなたに続ける方法のアイデアを与えました

于 2012-11-14T10:43:13.117 に答える