Como devo passar vários parâmetros para um ASP.Net Web API GET?

Eu estou usando o .net MVC4 Web API para (espero) implementar uma API RESTful. Eu preciso passar alguns parâmetros para o sistema e fazê-lo executar alguma ação, em seguida, retornar uma lista de objetos como os resultados. Especificamente, estou passando duas datas e retornando registros que estão entre elas. Também estou acompanhando os registros retornados para que as chamadas subsequentes não sejam reprocessadas no sistema.

Eu considerei algumas abordagens:

Serializando os parâmetros em uma única string JSON e separando-a na API.http://forums.asp.net/t/1807316.aspx/1

Passe os parâmetros na string de consulta.
Qual é a melhor maneira de passar vários parâmetros de consulta para uma API sossegada?

Definindo os parâmetros na rota: api / controller / date1 / date2

Usando um POST que inerentemente me permite passar um objeto com params.

Pesquisando o ODATA desde que a API da Web (atualmente) o suporta. Eu ainda não fiz muito com isso, então não estou muito familiarizado com isso.

Parece que as práticas adequadas do REST indicam quando os dados são obtidos, você deve usar um GET. No entanto, GET também deve ser nulo (não produz efeitos colaterais), e eu me pergunto se minha implementação específica viola isso, já que marquei registros no sistema de API, por isso estou produzindo efeitos colaterais.

Isso também me levou à questão de suportar parâmetros variáveis. Se a lista de parâmetros de entrada for alterada, seria tedioso ter que redefinir sua rota para a opção 3, caso isso aconteça muito. E o que pode acontecer se os parâmetros forem definidos em tempo de execução ...

Em qualquer caso, para minha implementação específica, qual escolha (se houver) parece melhor?

questionAnswers(9)

yourAnswerToTheQuestion