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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

REST

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Q&A

解決済

1回答

346閲覧

同一リソースについてビューとJSONを返す場合のURI設計

maskmelon

総合スコア63

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

REST

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

0グッド

0クリップ

投稿2020/09/12 16:10

編集2020/09/12 16:11

例えば、/users/selfというURIでユーザーのプロフィール画面のビューを返している場合に、ユーザー情報をJSON形式で返すAPIを作りたいとすると、どのようなURIにするのが一般的でしょうか?ここでのAPIは公開用ではなく、アプリケーション内部でリソースにアクセスするために設置するものです。

APIのURI設計についてはUIとは別立てで論じられていることが多く、このような場合にどういったURIが自然なのか分からず質問させていただきました。

現状/users/self/jsonのようにしているのですが、これで問題ないでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

現状/users/self/jsonのようにしているのですが、これで問題ないでしょうか?

そのような設計のアプリケーション、と決めるなら、それで問題ないと思います。

が、REST が前提だと、パスはあくまでリソースを表すべきで、 json のような種別は別の部分に入れる気がします。

  1. extension を利用する /users/self / /users/self.html / /users/self.json / ...
  2. パラメーターを利用する /users/self?ext=html / /users/self?ext=json / ...
  3. ヘッダを利用する Accept: text/html / Accept: application/json / ...

個人的には 1のケースが多いような気はしますが、どれを利用するかは完全に自由だと思います。

追記

ここでのAPIは公開用ではなく、アプリケーション内部でリソースにアクセスするために設置するものです。

もしくは、根本から分けることもできました

  1. パス http://example.com/users/self / http://example.com/api/users/self
  2. ドメイン http://web.example.com/users/self / http://api.example.com/users/self

投稿2020/09/12 16:16

編集2020/09/12 16:30
unhappychoice

総合スコア1531

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

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

maskmelon

2020/09/12 17:05

丁寧な回答をありがとうございます。jsonをパスに入れないほうが良い理由も納得できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問