Múltiples parámetros de cadena de consulta opcionales REST API GET

Estoy usando la API web 2 para implementar un servicio tranquilo. Después de investigar un poco sobre las mejores prácticas, todo el mundo parece tener opiniones diferentes sobre cómo hacer lo siguiente. Tengo un GET

public HttpResponseMessage Get(string crewId, string shiftDate, int offset = 1, int limit = 10)

Este método GET devuelve una lista. Hay varias formas de obtener los datos de este método.

Obtener solo por tripulaciónVaya solo por shiftDateoObtener por crewId y shiftDate

¿Usted (1) marca el crewId y shiftDate como opcional?

public HttpResponseMessage Get(string crewId = null, string shiftDate = null, int offset = 1, int limit = 10)

y luego tener un montón de declaraciones if para verificar qué está lleno y qué no está lleno para poder realizar acciones

if(crewId != null && shiftDate == null){
  // Get by crewId
}else if(crewId == null && shiftDate != null){
  // Get By shiftDate
}else if(crewId != null && shiftDate != null){
  // Get By crewId and shiftDate
}

Para mí esto parece una locura, especialmente si tiene muchos parámetros, tendría demasiadas declaraciones "if" en su código.

¿Tienes (2) un conjunto diferente de get?

public HttpResponseMessage GetByCrewId(string crewId, int offset = 1, int limit = 10)
public HttpResponseMessage GetByShiftDate(string shiftDate, int offset = 1, int limit = 10)
public HttpResponseMessage GetByCrewIdShiftDate(string crewId, string shiftDate, int offset = 1, int limit = 10)

y luego tendrías tu mapa de ruta URI al método

... / api / GetByCrewId? crewId = 1234... / api / GetByShiftDate? shiftDate = 1111-11-11... / api / GetByCrewIdShiftDate? crewId = 1234 & shiftDate = 1111-11-11

¿La opción 2 es tranquila?

¿O hay mejores opciones (3).

Ambas opciones anteriores funcionarán solo asegurándome de que estoy usando las mejores prácticas y siguiendo los estándares REST. Parece que me estoy perdiendo algo y espero que puedas ponerme en la dirección correcta.

Respuestas a la pregunta(4)

Su respuesta a la pregunta