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

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

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

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

API

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

Q&A

解決済

2回答

1514閲覧

Rest APIについて

Nippun

総合スコア1147

REST

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

API

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

0グッド

0クリップ

投稿2020/06/13 20:41

webアプリケーションを開発するときにメソッドを呼び出したら基本Jsonを変えると思いますが、中にはHTMLだったりVueなどのテンプレートを返すアプリケーションもあります。
HTMLやVueを返すアプリケーションもREST APIなのでしょうか?
また、Jsonを返すアプリケーションと区別するための名称等はありますか?

HTMLやVueを返すのはJsonを返すのに比べてメリット等はあるのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

RESTは一つのアーキテクチャスタイル、言い換えれば設計方針のようなものです。HTTP/HTTPSでJSONでやり取りされるものに限定されませんし、それこそWeb以外でもその設計方針は使えます。ただ、よく使われるのはWebに関してで、RESTを採用したWebアプリケーションをRESTfulなWebアプリケーション(RESTful Web Application)と呼ばれます。

ここら少しややこしくなります。APIというのは、アプリケーション間でやり取りするための規約のようなもので、JSONなんかに限定されていないものではありません。しかし、WebにおいてAPI(しばしばWeb APIやHTTP APIと呼ばれます、一般的なAPIとの区別のためここではWeb APIとします※)と言った場合、JSONやXML等のプログラムからは扱いやすいが、ブラウザが直接その視覚的な表現に表すことができないデータ形式でのやり取りを表します。それらの最大の特徴は具体的な視覚的な表現がなく、データまたはメッセージのみで構成されていると言うことです。そのため、具体的な視覚的表現が含まれるようなHTMLやVueテンプレートを返す場合、Web APIと呼ばれることは少ないです。しかし、広い意味では、HTMLやVueも(JavaScriptと共に)ブラウザが規約に基づき解釈し、ディスプレイ上に表現するので、一種のAPIと考えてもおかしくないと思われます。

※ ブラウザで使用できるWeb関連のAPI全般をWeb APIと言ったり、Amaznoのサービスの一つにHTTP APIと言うのがあったりします(それとは別にREST APIというのもある)ので、ご注意ください。

ということで、WebアプリケーションにおいてREST APIと呼ばれた場合、RESTの原則に従ってJSONやXML等を返すようなものとしても良いと思います。ただし、バズワードに近い言葉ですので、厳密な定義はないと思います。なお、HTMLを返す場合でもRESTfulなWebアプリケーションである場合があることに注意してください。この場合は単にWeb APIでは無いと言うことだけに過ぎません。逆に、Web APIであっても、RESTfulでなければ、REST APIとは呼ばれないことにも注意してください。

以上を踏まえて、一問一答していきます。

HTMLやVueを返すアプリケーションもREST APIなのでしょうか?

RESTfulな場合もありますが、Web APIではないので、REST APIと呼ぶにはいささか語弊があると思われます。

また、Jsonを返すアプリケーションと区別するための名称等はありますか?

Web世界においては、HTMLを返す場合の方が一般的で、名称はたぶんありありません。敢えて言えば、通常、デフォルト、レガシーとかでしょう。逆に、JSONやXML等を返す場合は、上記で述べたようにWeb APIと呼ばれます。Web APIのみで構成されているようなWebアプリケーションの事を、Rails等はAPI専用アプリケーション(API-only aplication)と呼んでいるようですし、他にも日本語圏ではAPIモードという表現もしばしば見られます(英語圏でもAPI modeと言われているかは不明です)。

HTMLやVueを返すのはJsonを返すのに比べてメリット等はあるのでしょうか?

ブラウザ(クライアント)側で動的な動作を必要としないのなら、わざわざJavaScriptを使ってJSONのデータを元にHTMLのDOMを生成する必要はありません。それなら、単にHTMLを返した方が、実装は楽でした。

今は色々と道具が揃えられ、ライブラリも充実しているため、クライアントサイド側の大規模な開発も大変楽になりましたが、一昔前はそうでも無かったのです。やりづらいデバッグ、ブラウザ間の違いの把握、使いにくいAPI、重すぎるDOM生成(仮想DOMを使わなかった場合)等、JavaScriptで動的にDOMを構成するのはかなり大変でした。それなら、HTMLはサーバー側で用意して、JavaScriptはちょっとした補助程度として使うことがメインでした。そういう意味では楽でした。

現在は、Webアプリケーションに求められる動的なレベルが際限なく上がってきており、また、SPAという考え方も出てきました。その場合、初めからJavaScriptでDOMを構成した方がシンプルかつ動的なWebページを構成できます。React、Vue、Angularといったライブラリが発達してきたこともあります。そうなってくると、バックグラウンド側はデータ処理だけに専念し、WebAPIを通じてやり取りした方がよいとなってきました。巨大化していくWebアプリケーション開発において、フロントエンドとバックエンドを分離できるというのも一つの利点です。

じゃあ、Web APIにすることが一択なのかというとそうでもありません。いくら道具が揃っていても、JavaScriptはそれなりに大変なのです。たとえば、記事をリスト表示するだけなら、HTMLを用意した方が工数が少ないです。つまりは、作るアプリケーションの規模、想定している動作、開発者の技術レベルを考えて選択すべきであり、流行っているからと言って飛びつくのは危険だと言うことです。


なお、Vueを返すというのはVueテンプレートを返すという意味だと思いますが、Vueをクライアント側で動くPHPのように使いたいという発想だと思われますので、ちょっと私には理解できません。

投稿2020/06/14 01:19

raccy

総合スコア21739

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

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

Nippun

2020/06/14 14:39

大変わかりやすかったです。 ありがとうございます。
guest

0

RESTful APIのfulじゃないものをREST APIと思ってください

それを踏まえて

HTMLやVueを返すのはJsonを返すのに比べてメリット等はあるのでしょうか?

返すという点に絞り、さらに情報を取得する処理に限ると、ブラウザ側での処理がhtmlを書く以外不要です。vueはまた話が別なんでおいときます。
jsonで返す場合だとjavascriptでの処理がし易いので画面を更新する事無く表示内容を更新出来ますが、javascriptで処理をしない限りはただのjson形式の文字列が表示されるだけです。

メソッドを呼び出したら基本Jsonを変えると思いますが

質問者の環境における基本だと思うので、身の回りの人に確認してください。
こちらの環境では特に基本ではありません。

投稿2020/06/13 23:32

hentaiman

総合スコア6426

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問