2017-01-13 1 views
1

Ich habe gleiche Routen in Routen-Datei aber ihre Wirkung ist anders alsScala PLAY gleichen Strecken

gezeigt
GET   /counts         controllers.Application.getAllCountsByFeature(features) 
GET   /counts         controllers.Application.getAllCounts() 

Ich rufe beide Routen als

http://localhost:9000/segments/counts?features=feature_1,feature_2-feature_3 
http://localhost:9000/segments/counts 

Aber es funktioniert nicht. Ich möchte spielen, um zu erkennen, welche Route basierend auf Abfragezeichenfolge aufgerufen wird. Wenn eine Abfragezeichenfolge angegeben wird, sollte sie die getAllCountsByFeature-Methode und so weiter treffen.

Gibt es einen Weg? Ich verwende Wiedergabe 2.5.9

+2

Nur eine Route verwenden, tun andere Abfrage innerhalb einer Aktion – jilen

+0

ich empfehlen würde zu Verwenden Sie 2 Routen oder 1 Route und führen Sie die Logik innerhalb des Controllers mit optionalen Abfrageparametern wie zuvor beschrieben aus – pedrorijo91

Antwort

2

Verwenden Sie eine Route mit optionalen Parametern

GET   /counts         controllers.Application.getAllCountsByFeature(features: Option[String]) 

und dann

def getAllCountsByFeature(features: Option[String]) = Action { 
    features match{ 
    case Some(f) => //.. 
    case None => getAllCounts() 
    } 
}