Я в процессе реализации REST API с использованием ASP. NET Core Web API (v3.1). В настоящее время я не уверен, как различать guish между значением «неопределенное» и значением «ноль» при передаче через строку запроса в URL.
В качестве примера давайте Предположим, что API управляет пользователями, что у всех есть имя и фамилия. Кроме того, все пользователи могут иметь отчество.
REST API позволяет запрашивать этих пользователей, например, так:
GET api/user?lastName=doe
(возвращает коллекцию пользовательских ресурсов, которые имеют фамилию "Doe"). Связанный класс контроллера может выглядеть следующим образом:
[HttpGet]
public IActionResult GetUsers(string firstName, string lastName, string middleName)
{
// Search database for users
// Ignore firstName and middleName, because they are null
}
Моя проблема возникает, когда запросы включают отчество:
GET api/user?middleName=null&firstName=john
Этот запрос (где middleName
явно установлен на null
) должен возвращать пользователей с именем "Джон" и без отчества. Напротив, запрос
GET api/user?firstName=john
(где middleName
равен undefined
) должен возвращать всех пользователей с именем «Джон» независимо от того, имеют ли они второе имя или нет.
В обоих случаях параметр middleName
в методе моего контроллера установлен на null
. Как я могу различить guish между этими запросами в моем контроллере?
РЕДАКТИРОВАТЬ:
Мой пример вводит в заблуждение и ведет себя не так, как я ожидал, потому что
GET api/user?middleName=null&firstName=john
устанавливает middleName
в строковое значение "null"
вместо null
(как ни в чем).
Я все еще хочу разрешить клиентам искать пользователей без отчества (где база данных значение для второго имени равно NULL). Как это может быть передано через URL и обработано контроллером?