REST API のトラブルシューティング

データ API ビルダーでの一般的な REST エンドポイントの可用性、HTTP メソッド、OData フィルター、および CORS に関する問題の解決策。

一般的な質問

DAB の REST API とは

データ API ビルダーは、 dab-config.jsonで構成された各エンティティの REST API を自動的に生成します。 この API は OData の規則に従い、データの読み取りと書き込みを行う標準的な HTTP メソッドをサポートしています。 追加のコードは必要ありません。DAB は、実行時に HTTP 要求をデータベース クエリに変換します。

DAB はどのような HTTP メソッドをサポートしていますか?

DAB では、REST エンティティの GETPOSTPUTPATCH、および DELETE がサポートされます。 各メソッドはデータベース操作にマップされます。 GET 読み取り、挿入 POSTPUT 置換、更新の PATCH 、レコードの削除 DELETE 。 エンティティ構成の rest.methods フィールドを使用して、エンティティごとに許可されるメソッドを制限できます。

REST エンドポイントはどのように構造化されていますか?

REST エンドポイントはパターン /<rest-path>/<entity-name>に従います。既定では<rest-path>api<entity-name>dab-config.jsonのエンティティ キーです。 たとえば、 Products という名前のエンティティには、 /api/Productsでアクセスできます。 REST パスは、--rest.pathdab init オプションを使用するか、dab-config.jsonを編集してカスタマイズできます。

一般的な問題

REST エンドポイントでの 404

症状:リクエスト/api/EntityName404 Not Found返される。

原因: エンティティが REST に対して有効になっていない、URL 内のエンティティ名が構成と一致しない、または REST パスがカスタマイズされている。

解像 度:dab-config.json開き、エンティティが"rest": { "enabled": true }されているか、restが明示的にfalseに設定されていないことを確認します。 URL で正確なエンティティ名が使用されていることを確認します (大文字と小文字が区別されます)。 REST パスが --rest.pathでカスタマイズされている場合は、それに応じて URL を更新します。

405 メソッドが許可されていません

症状:POSTPUTPATCH、またはDELETE要求は、405 Method Not Allowedを返します。

原因: HTTP メソッドは、エンティティの rest.methods 許可リストには含まれません。

解像 度:rest.methods内のエンティティのdab-config.json配列を確認します。 必要なメソッド (例: "methods": ["GET", "POST", "PATCH", "DELETE"]) を追加します。 dab startを再実行して変更を適用します。

クエリ$filter予期しない結果が返される

症状: OData $filter 式は、結果や Invalid filter expressionなどのエラーを返しません。

原因: OData フィルター構文が正しくないか、フィールド名がエンティティの公開されている列名と一致しないか、値の形式が列の種類と一致しません。

解像 度: OData 仕様に対してフィルター構文を確認します。 文字列値は、単一引用符 (たとえば、 $filter=Name eq 'Alice') で囲む必要があります。 エンティティでフィールド マッピングが構成されている場合は、データベースの列名ではなく、マップされた名前を使用します。 生成された SQL の DAB ログを調べて、予期しない結果セットを診断します。

ブラウザーから REST エンドポイントを呼び出す CORS エラー

症状: DAB REST API に対するブラウザー要求は、CORS ポリシー エラーで失敗します。

原因: DAB ホスト構成では、許可された配信元の一覧に呼び出し元の配信元が含まれません。

解像 度:host.cors.originsdab-config.json配列を更新して、フロントエンドの原点 (["https://myapp.example.com"] など) を含めます。 ローカル開発中にすべての配信元を許可するには、 "origins": ["*"]設定します。 構成を更新した後、DAB を再起動します。 運用環境では * の使用は避けてください。