質問: RestfulなAPIの作成について学習しています。 学習する上で、リソースの部分で理解できない部分があり、どうしてもつまづいてしまいます。 > > GET /tickets - チケットのリストを取得する > > GET /tickets/12 - 指定したチケットの情報を取得する > > POST /tickets - 新しいチケットを作成する > > PUT /tickets/12 - チケット #12 を更新する > > PATCH /tickets/12 - チケット #12 を部分的に更新する > > DELETE /tickets/12 - チケット #12 を削除する > > > (参考URL:) 上記引用を私なりに解釈したディレクトリ構成は以下の通りです。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/e46a4f6701e1fd3096cb9c5b1c1a7db8.jpeg) 上から3つめのPOST操作をすると、API内で連番を振り、「/tickets/12」というリソースが作成されるのだと思いますが、画像のように、「/tickets/12」というフォルダが実際に作成されるのでしょうか? DBにチケットの情報を格納している場合、DB操作用のAPIファイルが1つあれば、あとはSELECTする際の条件に12番を指定すればいいだけだと思うので、「/tickets/12」というフォルダが実際に作成されているのだとしたら、作成する意図がわかりません。 それとも実際にはフォルダは作成されず、「/tickets/」以降は識別子としてついており、実際の操作は全て「/tickets/」直下のAPIファイルで行われているのでしょうか? ネットで調べても欲しい答えが載っておらず、質問させて頂きました。 説明が下手で申し訳有りません。 ご教授頂けますと幸いです。
回答: 答えとしては > > それとも実際にはフォルダは作成されず、「/tickets/」以降は識別子としてついており、実際の操作は全て「/tickets/」直下のAPIファイルで行われているのでしょうか? > > > こちらが正解に近いかなと思います。 /tickets/12であれば「12」は引数として処理を行うといいと思います。 どの言語、どのフレームワークで作成するかによって、記述の仕方に違いはあるかと思いますが、 例えば、JavaのPlayというフレームワークではルーティングは以下のように設定します。 ``` GET /tickets controllers.Application.listAll GET /tickets/:id controllers.Application.list(id: Long) POST /tickets controllers.Application.create PUT /tickets/:id controllers.Application.update(id: Long) : ``` 細かいところの説明は省略しますが、 一行目: /tickets のURLアクセスでは、ApplicationクラスのlistAllメソッド(関数)を引数なしで呼び出す 二行目: /tickets/12 のURLアクセスでは、Applicationクラスのlistメソッド(関数)をid=12の引数呼び出す : といった感じです。