web-dev-qa-db-ja.com

RESTfulでないHTTP APIを呼び出すには?

HTTPベースで、リソースに名前を付けるためにURIを使用し、リソースを操作するためにHTTP動詞(PUT、POST、DELETE、GET ...)を使用するAPIを何と呼びますか?

Roy Fieldingの不満 によると、ハイパーメディアがないため、RESTではありません。

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

24
pkalinow

HTTP APIと呼びます。

HTTP標準に準拠しており、他に何も階層化されていません(SOAPなど)。

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

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


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

RESTラベルを省略しないでください。恥ずかしがらないでください。マイクロサービスや非リレーショナルデータベースと同様に、RESTful APIを使用する必要はありません。Royは、存続期間が最も長く、下位互換性があり、ネットワーク化されたアプリケーションアーキテクチャであり、彼は素晴らしい仕事をしましたが、40年以上の互換性を必要とするわけではありません。

43
Paul Draper

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

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

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

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

19

ハイパーメディアがRESTのようなAPIで実際に人気を博したことはありません。APIが実際にハイパーメディアナビゲーションを実装するとき、RESTfulという用語は、他の「RESTful」なWeb APIと区別するには十分ではありません。 RESTはキャッチオール用語またはリソースベースのWeb APIになり、Hypermedia APIのような新しい名前がハイパーメディアの概念に焦点を当てた造語になりました。

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

RESTfulの正しい定義を主張すると、通常、追加の混乱が生じるだけです。時間の経過とともに意味が変わったり、大衆が誤って採用したりする多くの用語と同様に、元の定義を知っている人がいれば感謝しますが、RESTのより広い現代的な解釈を使用している人は訂正しません。

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

8
kapex

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

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

2
dcorking

あなたは好きなようにそれを呼ぶことができます、人々は(ほぼ宗教的に)あなたがフォローしていないREST 'spec'のあらゆる部分にラッチする傾向があり、それを抗議のポイン​​トとして使用します開発に非常に有害ですが、単純な事実として、APIサーブにtrue REST=を実装するサービスが(ほぼ)ゼロであることが存在します。

私たちのチームでは、Stateless API以前のステートフルで機能的なAPIがあったため、開発中ですSOAP以前のAPI自体が同意された意味のある名前になったことがなかったため、取得できませんでした名前に追いついた)。

現在、このプロジェクトにはAPIが1つだけあり、単にthe <project> API。最終的にそれを置き換えると、新しいAPIは単にthe new <project> API

派手でわかりやすい内部名を付けても、他のAPIと区別する必要があるほど多くのAPIがない限り、ほとんど意味がありません(この場合、他のすべての名前も変更する必要があります)。

2
Seph

Web APIと呼ぶことができます。これは非常に広義の用語ですが、他のAPIタイプ定義の意味についてひっくり返ることを回避できます。この用語は、HTTP APIなどの代替手段に比べて技術的で正確ではありませんが、非技術者と話す場合には利点になる可能性があります。

この用語は、レナードリチャードソン( Richardson Maturity Model を定義した人)も使用しています。これは、すでに別の回答で言及されています。APIがREST =アーキテクチャー)これは、「 RESTful Web API 」の「RESTful」部分をドロップした場合に得られるものです。

2
kapex