Dynamics AX テーブルから最初のレコードを取得し、$top パラメーターが最初のパラメーターである場合は $filter 句を無視する ODATA クエリがあります。ただし、$top パラメーターがクエリの最後にある場合は、$filter 句の正しいレコードがプルされます。
質問: $top パラメーターがどこに配置されていても、OData サーバーが完全なクエリを受け入れるようにするにはどうすればよいですか?
次の 2 つのケースでは、同じ結果が返されます。
ケース 1: https://url/data/Users ? $トップ=1
{
"@odata.context":"https://url/data/$metadata#Users","value":[
{
"@odata.etag":"W/\"J5zEx4NDg33OD2YyM4TEs5NTY6zNz7E0ND7U3Nic=\"",
"Id":"first_user_in_the_table",
"Alias":"first_user_in_the_table@domain.com",
"Name":"first_user_in_the_table"
}
]
}
ケース 2: https://url/data/Users ? $top=1 &$filter=Alias%20eq%20%27 specific_user@domain.com %27
{
"@odata.context":"https://url/data/$metadata#Users","value":[
{
"@odata.etag":"W/\"J5zEx4NDg33OD2YyM4TEs5NTY6zNz7E0ND7U3Nic=\"",
"Id":"first_user_in_the_table",
"Alias":"first_user_in_the_table@domain.com",
"Name":"first_user_in_the_table"
}
]
}
ただし、$top パラメーターをクエリ文字列の末尾に移動すると、正しい結果が得られます。
ケース 3: https://url/data/Users ?$filter=Alias%20eq%20%27 specific_user@domain.com %27& $トップ=1
{
"@odata.context":"https://url/data/$metadata#Users","value":[
{
"@odata.etag":"W/\"Jz3kz4Nj5g2N6zcz7MCw81Nj9M3M2TU3w4NT4c54Jw==\"",
"Id":"specific_user",
"Alias":"specific_user@domain.com",
"Name":"The Specific User I Actually Want"
}
]
}