Mehrere optionale Abfragezeichenfolgenparameter REST API GET

Ich verwende Web-API 2, um einen erholsamen Dienst zu implementieren. Nach einigen Recherchen zu Best Practices scheinen alle unterschiedliche Meinungen darüber zu haben, wie Folgendes zu tun ist. Ich habe ein GET

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

Diese GET-Methode gibt eine Liste zurück. Es gibt mehrere Möglichkeiten, die Daten von dieser Methode abzurufen.

Get by crewId onlyGet by shiftDate onlyodeGet by crewId und shiftDate

Kennst du (1) die crewId und das shiftDate als optional?

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

und dann haben Sie eine Reihe von if-Anweisungen, um zu überprüfen, was gefüllt und was nicht gefüllt ist, um Aktionen ausführen zu können

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
}

Für mich sieht das verrückt aus, vor allem wenn Sie viele Parameter haben, würden Sie zu viele "if" -Anweisungen in Ihrem Code haben.

Haben Sie (2) verschiedene Sets von Gets?

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)

und dann hätten Sie Ihre URI-Routenzuordnung zu der Methode

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

ist Option 2 erholsam?

Oder gibt es bessere Optionen (3).

ie beiden oben genannten Optionen funktionieren nur, um sicherzustellen, dass ich Best Practices verwende und die REST-Standards befolge. Scheint nur so, als würde mir etwas fehlen und hoffentlich kannst du mich in die richtige Richtung lenken.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage