Как передать нулевое значение обнуляемым типам в WebAPI - PullRequest
1 голос
/ 06 апреля 2020

У меня есть функция, как показано ниже:

        [HttpGet]
        [Route("Departments/{departmentid}/employeeByDeptId")]
        [ResponseType(responseType: typeof(IList<Employee>))]
        public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            var detailInfo = _employeeManager.GetDetailInfo(departmentId, sinceDate ?? _sinceDate);

            return CreateHttpResponseMessage(detailInfo);

        }

Я сделал SinceDate как Nullable-тип в объявлении, так что если передается нулевое значение, оно принимает дату, которая есть в переменной '_sinceDate', объявленной локально. Теперь, как я могу передать нулевое значение параметру sinceDate при вызове API.

Когда я передаю ниже URL: http://localhost: 26754 / v1 / EmployeeMgnt / Departments / 4 / employeeByDeptId? SinceDate = 2020 -03-03

Получаю желаемый результат. Теперь я хочу передать SinceDate как NULL. Я пытался http://localhost: 26754 / v1 / EmployeeMgnt / Departments / 4 / employeeByDeptId? SinceDate = null http://localhost: 26754 / v1 / EmployeeMgnt / Departments / 4 / employeeByDeptId? SinceDate isnull

Все выдало ошибку запроса. Скажите, пожалуйста, как я могу присвоить нулевое значение sinceDate в вызове API?

1 Ответ

1 голос
/ 06 апреля 2020

Просто добавьте parameterName = null в свой параметр маршрута.

public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate = null){
}

Тогда в своем запросе вы можете просто исключить этот параметр и получить доступ с помощью;

http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId

Другой вариант - добавить перегрузку. Имейте 2 имени функции, получают различные параметры.

public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime sinceDate){
}

public HttpResponseMessage GetDetailsByDeptId(int departmentId){
}
...