メインコンテンツまでスキップ
バージョン: 0.13.0 (Previous)

🛣️ アトリビューションルート

アトリビューションルートはExpressミドルウェアではなくSDKコンポーザーです。公開された読み取りには認証が不要ですが、ミューテーションには認証済み管理者が必要です。

目次​

ルートメソッド / プロトコルパススキーマバリデーター成功ステータス
createAttributeRoutePOST / HTTP/attributescreateAttributesSchemaisAuthenticated()、checkIdentityType(['admin'])201
findAttributesRouteGET / HTTP/attributesfindAttributesSchemaなし200
getAttributeRouteGET / HTTP/attributes/:attributeIdgetAttributeSchemaなし200
updateAttributeRoutePATCH / HTTP/attributes/:attributeIdupdateAttributesSchemaisAuthenticated()、checkIdentityType(['admin'])200
deleteAttributeRouteDELETE / HTTP/attributes/:attributeIddeleteAttributeSchemaisAuthenticated()、checkIdentityType(['admin'])204

詳細​

createAttributeRoute​

実装

エンドポイント: POST /attributes

アクセス: 認証済み管理者: isAuthenticated() かつ checkIdentityType(['admin'])。

リクエスト: 必須JSON作成ボディ。

パイプライン: createAttributeGroup → getAttributeGroupById → createAttributeGroupTerminator。

成功: _id を除かれた作成されたグループを 201 で返します。

失敗: 不足/空のボディまたは不足な挿入結果は 400;失敗したポスト作成ルックアップ/ターミネーターは 404;スローされた永続化作業は 500 です。認証と管理者検証が最初に実行されます。

完全なソースを表示
export const createAttributeRoute = withRoute({
handler: compose(
withLogging(createAttributeGroup),
flatMapAsync(withLogging(getAttributeGroupById)),
lift(withLogging(createAttributeGroupTerminator))
),
method: 'POST',
path: '/attributes',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

findAttributesRoute​

実装

エンドポイント: GET /attributes

アクセス: 公開。

リクエスト: オプションのnameおよびページネーションクエリ。

パイプライン: findAttributeGroups through withPagination → normalizeAttributesListTerminator。

成功: ペネーションがページネーション結果を提供する場合、正規化されたグループ、または { data, metadata: { pagination } } を 200 で返します。

失敗: クエリ/データベースの失敗または予期せぬリスト結果の形状は 500 です。

完全なソースを表示
export const findAttributesRoute = withRoute({
handler: compose(
withPagination(withLogging(findAttributeGroups)),
lift(withLogging(normalizeAttributesListTerminator))
),
method: 'GET',
path: '/attributes',
validators: [],
});

getAttributeRoute​

実装

エンドポイント: GET /attributes/:attributeId

アクセス: 公開。

リクエスト: 必須文字列attributeId パスパラメータ。

パイプライン: getAttributeGroupById → normalizeAttributeGroupTerminator。

成功: _id を除かれたグループを 200 で返します。

失敗: 不足なIDは 400、不足なグループは 404、スローされたクエリは 500 です。

完全なソースを表示
export const getAttributeRoute = withRoute({
handler: compose(
withLogging(getAttributeGroupById),
lift(withLogging(normalizeAttributeGroupTerminator))
),
method: 'GET',
path: '/attributes/:attributeId',
validators: [],
});

updateAttributeRoute​

実装

エンドポイント: PATCH /attributes/:attributeId

アクセス: 認証済み管理者: isAuthenticated() かつ checkIdentityType(['admin'])。

リクエスト: 必須path/body契約。name のみがスキーマでサポートされています;ハンドラーは {} も拒否します。

パイプライン: updateAttributeGroup → getAttributeGroupById → normalizeAttributeGroupTerminator。

成功: 再読み込みされた正規化グループを 200 で返します。

失敗: 不足なID/ボディまたは変更のない更新は 400;不足なグループは 404;スローされた更新/再読み込みは 500 です。認証と管理者検証が最初に実行されます。

完全なソースを表示
export const updateAttributeRoute = withRoute({
handler: compose(
withLogging(updateAttributeGroup),
flatMapAsync(withLogging(getAttributeGroupById)),
lift(withLogging(normalizeAttributeGroupTerminator))
),
method: 'PATCH',
path: '/attributes/:attributeId',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

deleteAttributeRoute​

実装

エンドポイント: DELETE /attributes/:attributeId

アクセス: 認証済み管理者: isAuthenticated() かつ checkIdentityType(['admin'])。

リクエスト: 必須文字列attributeId パスパラメータ。

パイプライン: deleteAttributeGroup → deleteAttributeTerminator。

成功: レスポンスデータなしの 204。

失敗: 不足なIDは 400、一致するグループがない場合は 404、false/スローされた削除または不足なターミネーターフラグは 500 です。認証と管理者検証が最初に実行されます。

完全なソースを表示
export const deleteAttributeRoute = withRoute({
handler: compose(
withLogging(deleteAttributeGroup),
lift(withLogging(deleteAttributeTerminator))
),
method: 'DELETE',
path: '/attributes/:attributeId',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});