2

RESTful API のベース URL があります。それが提供するいくつかのリソースタイプのリストがあります。お気に入り:

GET http://www.baseURL.com:8180/fruits

次のような結果になります。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <FruitList xmlns="http://www.baseURL.com/Fruits">
  <Fruit>
    <Identity createdTimeStamp="2011-05-13T09:45:16.611-05:00" lastUpdatedTimeStamp="2012-11-19T03:24:19.310-06:00">
        <FruitName>Apple</FruitName>
    </Identity>
  </Fruit>
  <Fruit>
    <Identity createdTimeStamp="2011-05-13T09:45:17.241-05:00" lastUpdatedTimeStamp="2012-11-19T03:24:20.431-06:00">
      <FruitName>Banana</FruitName>
    </Identity>
  </Fruit>
  <Fruit>
    <Identity createdTimeStamp="2011-05-13T09:45:19.445-05:00" lastUpdatedTimeStamp="2012-11-19T03:24:21.281-06:00">
      <FruitName>Orange</FruitName>
    </Identity>
</Fruit>
</FruitList>

この API がリソースとして「果物」を持っていることを知らなかった場合、ある種の一般的な GET コマンドでそれを理解できる方法はありますか?

4

2 に答える 2

1

すべての通信には、RESTful API を含む高度な知識が必要です。私が「こんにちは」と言って、あなたがクリンゴン語しか話せなかったら、私があなたを侮辱していると思うかもしれません。RESTful API に必要な前提知識には、以下が含まれます。

  • エントリ ポイント (URL)
  • インターフェースとそれを効果的に使用する方法についての知識 (つまり、HTTP メソッドと戻りコード — 詳細については、REST API - なぜ PUT DELETE POST GET を使用するのか?を参照してください)
  • どの表現形式が利用可能であると合理的に期待できるか
  • これらの形式のセマンティクスの理解

これらは、クライアントの作成者が利用できるように文書化する必要があります。したがって、新しい仕様を発明するのではなく、可能な限り既存の仕様を再利用することが理にかなっています。そうすることで、既存のクライアントは API のドキュメントを見なくても、API の大部分またはすべてを理解できるようになります。これにより、ブラウザー ベンダーが戻って新しい Web サイトにアクセスするためにブラウザーを更新する必要なく、新しい Web サイトをインターネットに追加することができます。

たとえば、HTML では次のようになります。

entry point = http://www.example.com/
hypertext formats expected = HTML, XHTML, SVG, etc.

最新のブラウザは、それらのそれぞれのセマンティクスを認識しているため、HTML 応答でテキストに遭遇すると、

<link rel="stylesheet" href="/style.css">

LINK 要素がハイパーメディア経路を表し、リソースの関係が「スタイルシート」関係の関係であることを認識し、特定の効果 (つまり、一次応答の表示のスタイル変更) を持つことを理解します。

API のベース URL には、API がhttp://www.baseURL.com:8180/提供するリソースへの一連のハイパーメディア リンクが含まれている必要があります。このリンクは、 <a href="/fruits">Fruits</a>HTML を理解する任意のクライアントがたどることができます。これらのリンクに意味を追加したい場合は、関係を提供する必要があります。事前定義されたリンク関係のリストは既に存在しますが、それらのどれもあなたに合わない場合は、他の公開オントロジーで定義された適切な関係を探すか、制御する名前空間内の URI を使用して独自の関係を定義することができます。人間が読めるドキュメントを提供する、参照解除可能な HTTP URL を使用することをお勧めします。例えば:

rel="http://www.baseURL.com:8180/documentation/#FruitList"

だから、あなたの質問への直接の答えとして、

この API がリソースとして「果物」を持っていることを知らなかった場合、ある種の一般的な GET コマンドでそれを理解できる方法はありますか?

クライアントは、API へのエントリ URL を取得し、各リンクに提供された関係を見て、それが何を意味するかを知る必要があります。これは、どこかで事前に定義されており、クライアントは FruitList がユーザーにとって何を意味するかを知っているためです。

于 2012-11-28T13:22:37.277 に答える
1

これには基準がありません。返事があったとしても、それが何を意味するのかは分からない。

于 2012-11-28T04:10:20.833 に答える