現在、RESTful APIの設計と開発を進めています。私はAPIに対して実用的でリソース指向のアプローチを取っています(リソース指向、統一されたインターフェース、アドレス指定可能性、しかし実際のHATEOASはありません)。ただし、オブジェクトのnull値にどのようにアプローチするかについてはよくわかりません。
API応答にnull値のフィールドを含める必要がありますか?
例:
{
"fieldA": "AAA",
"fieldB": null
}
または、システムにこれらのフィールドのデータがない場合、これらのフィールドを完全に除外する必要がありますか?
例:
{
"fieldA": "AAA"
}
これについては最近 API-Craft で議論がありました。一般的なコンセンサスでは、値のomissionとnull値の包含との間に意味的な違いがある可能性がありました。
特定のユースケースで得られるセマンティック値がない場合は、APIのターゲットコンシューマを見て、値を省略すると問題が発生するかどうかを検討します。
明確な勝者はありません。そして、クライアントは存在しないので、クライアントはこれに関する規約に技術的に依存するべきではなく、クライアントはどちらの形も期待すべきではありません。
?fields=foo,bar
他のすべてのフィールドにnullを返すのは少し直感に反するように見える