Reputation: 170
I am trying to create an API using best practices with a simple validation by example.
public class ClientController
{
[HttpGet]
[Authorize]
public IHttpActionResult Clients([FromUri]string Initialdate,[FromUri] string finalDate)
{
return _clientRepository.GetClients();
}
}
public class ClientRepository
{
//some code that access data layer
public IEnumerable<Client> GetClients(string initialDate,string finalDate)
{
//HERE IS WHAT IM LOOKING FOR
//HERE I WANT TO VALIDATE THE DATE PARAMETER PROVIDED IN REQUEST AND RETURN
//VALIDATION LIST WITH ERROR DESCRIPTION IN JSON
_daoClient.ExecuteProcedure(initialDate,finalDate);
}
}
public class Client
{
public int Id {get;set;}
public string Name {get;set;}
}
So, how can i build this simple validation of parameters in request with action like a parameter filters?
Upvotes: 1
Views: 1256
Reputation: 515
You have to do validate explicitly like this then:
[HttpGet]
[Authorize]
public IHttpActionResult Clients([FromUri]string Initialdate, [FromUri] string finalDate)
{
bool isInitialDate = DateTime.TryParse(Initialdate, out DateTime tempInitialdate);
bool isFinalDate = DateTime.TryParse(finalDate, out DateTime tempfinalDate);
List<string> _errorMessage = new List<string>();
if (!isInitialDate)
_errorMessage.Add("Initial date is invalid");
if(!isFinalDate)
_errorMessage.Add("Final date is invalid");
if(isInitialDate && isFinalDate)
{
//your business logic
return _clientRepository.GetClients();
}
return Json(new { success = false, error = _errorMessage });
}
Upvotes: 2