RESTfulではないHTTP APIを呼び出すもの [閉まっている]


24

HTTPベースのAPIと呼び、URIを使用してリソースとHTTP動詞(PUT、POST、DELETE、GET ...)に名前を付け、それらのリソースを操作しますか?

ロイ・フィールディングの苦情によると、ハイパーメディアがないため、RESTではありません。

内部的には、私のチームでは、誰もが「REST API」と呼んでいます。私はそれを「RESTライク」と呼んでいますが、説明的ではなく、その意味はあいまいです。RESTについては大きな意見の相違があるため、私はそれについてかなり混乱しています。火炎戦争に参加したくないのですが、正しい用語を使用してください。


6
職場で実際にプログラミングに費やす時間はどれくらいですか?また、どの用語を使用するかを決めるのに時間を費やしますか?優れた製品をリリースしたが、一部の内部ドキュメントでわずかに間違った用語を使用したとします。あなたの顧客は気にしますか?
ブランディン

3
呼び方と呼び方は、2つの異なるものです。
ジェフ

13
この質問は、コメントで得られているスナークと懐疑論を本当に保証するものですか?かなり高レベルで頻繁に使用される概念を参照するための、適切で広く理解されている方法を望んでいることは、とんでもないことではありません。
ベンアーロンソン

6
@ブランドン、言葉は物事を意味します。USBスティックを脳に引っ掛けてコードをすぐにダウンロードできるようになるまで、ラベルと用語を使用して自分の意味を伝える必要があります。「SOAP HTTP API」と言うと、「REST HTTP API」とは大きく異なるものを意味します。ものに名前を付けることは難しい問題であり、重要な問題でもあります。
ポールドレーパー

6
次回このトピックを取り上げて抵抗するときは、チームでこのトピックを放棄する準備をしてください。私は、誤ったコミュニケーションの機会が少なくなるように、正しい用語を使用することが重要だと感じるタイプの人です。多くの人はこのように考えておらず、言葉や技術的な選択を評価しようとすると、知性に対する攻撃とさえ見なします。チームに神経症的な人がいて、彼らが実際にRESTをやっていないという概念に抵抗しているなら、それをあきらめるのが最善です。
レイヴンスティン

回答:


43

HTTP APIと呼びます

HTTP標準に準拠しており、最上位に他のレイヤー(SOAPなど)はありません。

HTTP標準は、リソース、動詞、ヘッダー、コンテンツネゴシエーションなどを定義します。

REST(REpresentational State Transfer)は、たまたま既存のHTTP標準を受け入れられる要件を持つアーキテクチャですが、HTTPはそれ自体で機能します。


私の経験では、「REST HTTP API」の90%が自身を「単なる」HTTP APIと呼びます。

RESTラベルを残すことを恥じないでください。マイクロサービスや非リレーショナルデータベースの場合と同様、RESTful APIを使用する必要はありません。Royは、最も長く存続し、最も後方互換性のある、ネットワーク化されたアプリケーションアーキテクチャの作成に着手しました。彼は良い仕事をしました。しかし、すべてが40年以上の互換性を必要とするわけではありません。


6
「私の経験では、「REST HTTP API」の90%は自分自身を「単なる」HTTP APIと呼ぶべきです。」+1
Artur Gaspar

私はこれ以上同意できませんでした。私が現在働いている場所では、迅速な開発サイクルで最先端のアプリケーションフレームワークを使用して、最先端のクライアントサーバーUIを構築しています。それについてRESTfulなものは何もありません。POSTのみを使用します。トレンディではありませんが、仕事を成し遂げ、非常にうまく成し遂げます。それは私が今まで見た中で最もクリーンなコードの一部です。
ロバートハーベイ

19

リチャードソン成熟度モデルはこのようになります

  1. どこでもPOST。単一のエンドポイント。(石鹸)
  2. どこでもPOST。複数のエンドポイント。(リソース)
  3. HTTP動詞。複数のエンドポイント。
  4. 2と同様で、リソースへのリンクを返します。(RESTful)

そのため、モデルによれば、リチャードソンレベル2またはそれらに沿った何かに準拠するWebサービスと呼びます。

http://martinfowler.com/articles/richardsonMaturityModel.html


8

ハイパーメディアは、RESTのようなAPIで実際に普及することはありませんでした-APIが実際にハイパーメディアナビゲーションを実装する場合、RESTfulという用語は他の「RESTful」Web APIと区別するのに十分ではありません。RESTは一般的な用語またはリソースベースのWeb APIになり、Hypermedia APIのような新しい名前は、Hypermediaの  概念に焦点を合わせて作られました。

間違った用語の使用を実際に主張したくはありませんが、RESTの一般的な現代の解釈は、ほとんどの人に統一されたURLとHTTP動詞を使用することを意味すると思います。それは正しくありませんが、フィールディングの定義を知っている人は、他の多くの人もそうではないことを知っている必要があります。一方、既存の "RESTful" APIの実装方法を観察するだけでRESTを知っている人は、HATEOASやオンデマンドコードなどのあまり知られていないREST制約について言及しても、何を話しているのかわかりません。フィールディングはそれを好まないかもしれませんが、元の定義に戻るのは遅すぎると思います*。正直に言うと、誰かが初めて彼のREST APIについて話しているのを聞いた場合、即座にハイパーメディアが含まれていないと思いますよね?

通常、RESTfulの正しい定義を主張することは、追加の混乱を引き起こすだけです。時間の経過とともに意味が変わった多くの用語や、大衆が単純に間違って採用したというように、誰かが元の定義を知っていれば感謝しますが、RESTのより広い現代の解釈を使用している人は誰も修正しません。

*また、RESTのような非ハイパーメディアAPIの新しい用語を確立するために遅刻します。とにかくそれらをどのように呼び出すべきですか?... RESTish


1
GithubのAPIには多くのハイパーメディアがあります。それがどれほど典型的かはわかりません。「RESTful」という用語が、より多くのものを受け入れるためのフィールディングの制御を逃れたことに同意します。
15年

2

HTTPを介したCRUDインターフェイス(作成、読み取り、更新、削除)です。

この主張を裏付ける当局は考えられないので、より多くのより良い答えが得られることを願っています。


4
RESTfulなものもその定義に適合します。
-Blrfl

1
@Blrfl AFAICT一部のRESTful APIはこれのスーパーセットになります。レコードにハイパーリンクが含まれていない場合、フィールディングの定義に適合しません。
15年

2

あなたはそれを好きなように呼ぶことができます、人々はあなたがフォローしていないREST「仕様」のどの部分にも(ほとんど宗教的に)ラッチし、それを開発に非常に有害な抗議のポイン​​トとして使用する傾向があります。しかし、そうは言っても、単純な事実は、APIサービスに真のRESTを実装するサービスが(ほとんど)存在しないということです。

私たちのチームStateless APIでは、開発中にレガシーのステートフルで機能的なSOAP APIを置き換えていたため、名前を付けました(レガシーAPI自体も合意された意味のある名前を持っていなかったので、あまりにも名前に追いつくことはありませんでした)。

現在、このプロジェクトにはAPIが1つしかありませんthe <project> API。最終的に置き換えるとき、新しいAPIは単にとして知られthe new <project> APIます。

それを他のAPIと区別する必要があるほど多くのAPIがない限り、空想的で説明的な内部名を与えることはほとんど意味がありません(この場合、おそらく他のすべての名前も変更する必要があります)。


元の質問が不良であった一方で、この答えは質問に答えるで固体の試みである
マイケル・ショー

2

Web APIと呼ぶことができます。これは非常に広義の用語ですが、他のAPIタイプ定義の意味についての盗聴を避けることができます。この用語は、HTTP APIのような代替手段と比較して技術的で正確ではありませんが、技術に詳しくない人と話をするときは有利かもしれません。

この用語はまた、Leonard Richardson(別の回答-APIがRESTアーキテクチャにどれだけ近いかについてよく受け入れられている測定値であるリチャードソン成熟度モデルを定義した)によっても使用されます。「RESTful Web API」の「RESTful」部分をドロップすると得られます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.