1

私はnodeとexpress.jsにかなり慣れていません。RESTアプリケーションの概念にも慣れていません。典型的な CRUD アプリ、ある種の日記をコーディングしたいと考えています。したがって、エントリのコレクションがあり、単一のエントリを表示して、エントリを追加、編集、および削除できます。REST 準拠 API を表すために URi をどのように設定する必要があるか、まだよくわかりません。app.js で次のようなものを作成します。

// GET REQUEST ROUTING
app.get('/', diary_router.home);
app.get('/entries/', diary_router.listEntries);
app.get('/entries/:id', diary_router.getSingleEntry);

// POST REQUEST ROUTING
app.post('/entries/', diary_router.addEntry);

// PUT REQUEST ROUTING
app.put('/entries/', diary_router.updateEntry);

// DELETE REQUEST ROUTING
app.delete('/entries/', diary_router.deleteEntry);

それは REST 適合インターフェースと呼べるでしょうか? このように、ルートにそれぞれのアクションを追加する必要がありますか? PUT および DELETE アクションの URL にも item-ID を表示する必要がありますか?:

// GET REQUEST ROUTING
app.get('/', diary_router.home);
app.get('/entries/', diary_router.listEntries);
app.get('/entries/show/:id', diary_router.getSingleEntry);

// POST REQUEST ROUTING
app.post('/entries/add/', diary_router.addEntry);

// PUT REQUEST ROUTING
app.put('/entries/update/:id', diary_router.updateEntry);

// DELETE REQUEST ROUTING
app.delete('/entries/delete/:id', diary_router.deleteEntry);

ここでのベストプラクティスは何ですか? どんな助けでも大歓迎です。B.

4

1 に答える 1

3

私たちが Web ランドで収束したと思われる REST の大まかな定義では、最初のオプションが最も適しているようです。

編集:はい、PUTおよびDELETEルートでIDを指定する必要があります。

HTTP は、動詞 (リクエスト メソッド) を名詞 (URL) に適用するための非常に優れたプロトコルです。その精神で、おそらく、request メソッドを使用して、要求しているリソースに対して何をしたいのかを区別するのが最善です。

注:ブラウザが任意の HTTP メソッドを使用できないことが心配な場合は、methodOverrideミドルウェアを Express で使用できます。

methodOverride ミドルウェアが機能する方法は、通常のリクエストで<input type="hidden" name="_method" value="PUT">あるにもかかわらず、 または類似のメソッドを使用してメソッドを指定することです。methodOverride ミドルウェアは、高速アプリケーションで取得したリクエストにプロパティを設定します。このようにして、クライアントが実際にそのメソッドをサポートしなくても、目的のリクエスト メソッドを通知できます。POSTmethod

于 2013-06-26T20:56:58.907 に答える