Renan Duarte
Renan Duarte

Reputation: 170

WEB API C# - Filter parameter validation

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

Answers (1)

awais
awais

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 });
}

enter image description here

Upvotes: 2

Related Questions