質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1510閲覧

RestfulなAPIのリソースについて

gottenderloin

総合スコア16

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2017/02/03 07:48

RestfulなAPIの作成について学習しています。
学習する上で、リソースの部分で理解できない部分があり、どうしてもつまづいてしまいます。

GET /tickets - チケットのリストを取得する

GET /tickets/12 - 指定したチケットの情報を取得する
POST /tickets - 新しいチケットを作成する
PUT /tickets/12 - チケット #12 を更新する
PATCH /tickets/12 - チケット #12 を部分的に更新する
DELETE /tickets/12 - チケット #12 を削除する

(参考URL:http://qiita.com/mserizawa/items/b833e407d89abd21ee72

上記引用を私なりに解釈したディレクトリ構成は以下の通りです。
イメージ説明

上から3つめのPOST操作をすると、API内で連番を振り、「/tickets/12」というリソースが作成されるのだと思いますが、画像のように、「/tickets/12」というフォルダが実際に作成されるのでしょうか?

DBにチケットの情報を格納している場合、DB操作用のAPIファイルが1つあれば、あとはSELECTする際の条件に12番を指定すればいいだけだと思うので、「/tickets/12」というフォルダが実際に作成されているのだとしたら、作成する意図がわかりません。

それとも実際にはフォルダは作成されず、「/tickets/」以降は識別子としてついており、実際の操作は全て「/tickets/」直下のAPIファイルで行われているのでしょうか?
ネットで調べても欲しい答えが載っておらず、質問させて頂きました。

説明が下手で申し訳有りません。
ご教授頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

答えとしては

それとも実際にはフォルダは作成されず、「/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の引数呼び出す

といった感じです。

投稿2017/02/03 08:45

編集2017/02/03 08:47
ykng0

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gottenderloin

2017/02/06 01:31

PHP言語でのAPI作成を学んでおりました。 お恥ずかしながらルーティングというものをはじめて知りましたので、これから学習したいと思います。 具体的な例もくださり、非常に助かりました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問