プロジェクトにフィールドを追加する際の 500 サーバーエラー
この記事では、YouTrack REST API を使用してプロジェクトにカスタムフィールドを追加するときに発生する可能性のあるエラーについて検証します。POST リクエストでプロジェクトのカスタムフィールドではなくフィールドプロトタイプを参照すると、このエラーが発生する可能性があります。
エラーメッセージ
要求詳細
このエラーが発生する可能性のあるサンプルリクエストの詳細を次に示します。
属性 | 値 |
|---|---|
リクエストメソッド | POST |
エンドポイント |
|
リクエスト本体 |
{
"name": "Last message related emails",
"id": "46-21",
"$type": "CustomField"
}
|
HTTP 応答コード | 500 |
トラブルシューティング
ここでは、考えられる原因と、エラーを解決してプロジェクトにフィールドを追加する方法についての提案をいくつか示します。
原因
POST リクエストの本文で使用しているカスタムフィールドの ID が正しくありません。プロジェクトのカスタムフィールドではなく、カスタムフィールドのプロトタイプを参照します。
リクエストでは、カスタムフィールドのプロトタイプをプロジェクトに追加しています。ただし、プロジェクトには、基本エンティティへの直接参照は含まれません。代わりに、CustomField エンティティのインスタンス ( ProjectCustomField) への参照が含まれています。
ソリューション
有効な POST リクエストへの最初のステップは、このリソースがどのエンティティタイプを予期しているかを把握することです。/api/admin/projects/projectID/customFields リソースの場合、予期されるエンティティタイプは ProjectCustomField です。リクエスト本文で、対応するタイプのオブジェクトを渡す必要があります。
各プロジェクトのカスタムフィールドには、そのカスタムフィールドプロトタイプ (CustomField タイプのオブジェクト) の設定が含まれています。これらの設定は、ProjectCustomField エンティティの field 属性に保存されます。
エラーを受け取ったときに、リクエスト本文で CustomField タイプのオブジェクトを渡そうとしました。このオブジェクトを ProjectCustomField エンティティの属性で再利用しましょう。
最終的なリクエスト本文は次のようになります。
各オブジェクトの正しい $type を渡す必要があることに注意してください。メインオブジェクトの型は ProjectCustomField で、その内部のカスタムフィールドプロトタイプの型は CustomField です。