3

Java で最初の安らかなサービスを開発しようとしていますが、メソッドを CRUD 機能にマッピングする際に問題があります。

私のURI構造は次のとおりで、基本的なデータベース構造にマップされています:

/データベース/{スキーマ}/{テーブル}/

/databases は静的です

{schema} と {table} は動的であり、パス パラメータに反応します

これは私が持っているものです:

Method - URI        - DATA      - Comment
---------------------------------------------------------------------
GET    - /databases - none      - returns a list of databases
POST   - /databases - database1 - creates a database named database1
DELETE - /databases - database1 - deletes the database1 database
PUT    - /databases - daatbase1 - updates database1 

現在、上記の例では、データベース名を JSON オブジェクトとして渡しています。ただし、これが正しいかどうかはわかりません。代わりにこれを行う必要があります(例としてDELETEメソッドを使用):

Method - URI                  - DATA - Comment
---------------------------------------------------------------------
DELETE - /databases/database1 - none - deletes the database with the same name

これが正しい方法であり、追加のデータを渡す必要がある場合は、以下が正しいでしょう:

Method - URI                  - DATA      - Comment
---------------------------------------------------------------------
DELETE - /databases/database1 - some data - deletes the database with the same name

コメントをいただければ幸いです

4

1 に答える 1

1

REST はドメインへのインターフェースです。したがって、データベースを公開したい場合は、おそらく CRUD が機能します。しかし、REST にはさらに多くの機能があります (以下を参照)。

REST 愛好家は、サービスが RESTful であることに反対します。なぜなら、主要な制約の 1 つに適合しないからです:ハイパーメディア制約. ただし、サービスが生成/提供するドキュメント (ハイパーメディア) へのリンクを追加すると、これに対処できます。ハイパーメディアの制約を参照してください。この後、ユーザーはリンクとフォームをたどってアプリケーション内のものを変更します。(あなたの例ではデータベース、テーブル、行):

- GET /database -> List of databases
- GET /database/{name} -> List of tables
- GET /database/{name}/{table}?page=1 -> First set of rows in table XXXXX
- POST /database/{name}/{table} -> Create a record
- PUT /database/{name}/{table}/{PK} -> Update a record
- DELETE /database/{name}/{table}/{PK} -> Send the record to the big PC in the sky..

ドキュメントへのリンクを忘れずに追加してください。

CRUD に REST を使用することは、それを束縛するようなものです:) : URI はあらゆる概念を表すことができます。したがって、サービスまたは Web アプリに実行させたい基盤となるリソース (機能) に基づいて、より創造的でリッチな URI を公開してみてはどうでしょうか。

この素晴らしい記事を見てみましょう:一杯のコーヒーを手に入れる方法

于 2012-05-15T15:22:37.630 に答える