現在、PHPでRESTful APIを設計および実装しています。しかし、私は最初の設計の実装に失敗しています。
GET /users # list of users
GET /user/1 # get user with id 1
POST /user # create new user
PUT /user/1 # modify user with id 1
DELETE /user/1 # delete user with id 1
これまでのところ、かなり標準的ですよね?
私の問題は最初のものGET /users
です。リストをフィルタリングするために、リクエスト本文でパラメーターを送信することを検討していました。これは、次のように、非常に長いURLを取得せずに複雑なフィルターを指定できるようにするためです。
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
代わりに、私は次のようなものを望んでいました:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
これはもっと読みやすく、複雑なフィルターを設定する大きな可能性を与えてくれます。
とにかく、file_get_contents('php://input')
リクエストのリクエスト本文を返しませんでしたGET
。私も試しましたhttp_get_request_body()
が、使用している共有ホスティングにはありませんpecl_http
。とにかくそれが役に立ったかどうかはわかりません。
私はこの質問を見つけ、GETはおそらくリクエストボディを持つべきではないことに気づきました。それは少し決定的ではありませんでしたが、彼らはそれに対して助言しました。
だから今私は何をすべきかわかりません。RESTfulな検索/フィルタリング機能をどのように設計しますか?
私はを使用できると思いますがPOST
、それはあまりRESTfulに見えません。