1

あるフォーマットから別のフォーマットへの変換を実行するサービスを作成しています。変換の例としては、通貨、距離、時間、言語などがあります。この場合、地理的なポイントです(たとえば、10進角の緯度/経度から度-分-秒の緯度/経度まで)。

通常、RESTfulリソースには、CRUDできるサーバー側で永続的な類似のOOコンセプトがあります(これは、RESTfulを作成するものの一部にすぎないことを私は知っています)が、物事を変換する単純なサービスの場合、そうではありません必ず存在します。どのようにしてこれをRESTfulにするのでしょうか?現在、次のようなものがあります。

サポートされているフォーマットのリストを取得するには、次のようにします。

GET /coordinates/formats

これは、たとえばDDやDMS(10進数の度と度-分-秒)を含む形式のリストを返します。

次に、向きを変えて、次のように変換を実行できます。

POST /coordinates/DD/as/DMS

この例では、要求の本文で小数度の表現(JSONまたはその他の形式として)を渡し、応答の本文で度-分-秒の表現を受け取ります。

これはもちろん機能しますが、特に同じURIが異なる入力(異なる小数点以下の桁数)に何度も使用されるため、RESTfulではないと感じます。秘訣はおそらく、操作されているリソースに本当に集中することです。おそらくその「変換」:

POST /coordinate/conversions

本文は、値、その形式、および目的の出力を取り込む場合があります。ただし、URIはすべてのリソースで同じです...

考え?

4

1 に答える 1

3

パラメータとを使用することをお勧めしますGET/conversionsまた、変換は「ドメインコア」であるため、パス要素を切り替えてルートリソースを作成します。

主な理由は次のとおりです。

  • 上記のapi-clientの観点からは、使いやすいです(POSTペイロードがなく、テスト/試行が非常に簡単です)。クライアントの使いやすさは、API設計の最優先事項の1つです。
  • サーバー側では何も「変更」せず、変換するため、GETの方が適しています。
GET /conversions/coordinate?input=xxx&format=yyy

でメタデータを返すというあなたのアプローチが好き/conversions/formatsです。これにより、フォーマットの検索が容易になり、APIがよりわかりやすくなります。次に、それぞれのデータは、上記の呼び出しからの'format'-parameterの可能な値を形成します。

または、変換を保存していますか(状態を変更するPOSTメソッドを優先します)?

于 2011-08-17T20:20:24.933 に答える