Udostępniam interfejs API HTTP przez Play, a w celu zarządzania zmianami powodującymi łamanie zgodności adres URL zawiera numer wersji. Obecnie wygląda to następująco:Brak przechwytywania symboli wieloznacznych w ścieżkach Play Framework
GET /api/v1/someMethod com.foo.Api.someMethod()
Po wprowadzeniu zmiany w wyjściu jednej z metod, chciałbym wesprzeć v2. Jednak w przypadku większości metod zachowanie jest identyczne, więc nie obchodzi mnie, która wersja jest używana. Próbowałem zmodyfikować powyższą linię do:
GET /api/v:version/someMethod com.foo.Api.someMethod()
Ale Odtwarzanie nie skompilować ten, z błędem Missing parameter in call definition: version
.
I wiem Nie użyłem parametru version w wywołaniu - ponieważ nie musiałem! Czy istnieje rozsądny sposób na osiągnięcie tego, co chcę tutaj, albo aby Play pomijał tę kontrolę, czy też umieścił znak wieloznaczny na trasie, która nie jest przechwytywana jako parametr?
(Przypuszczam, że jeśli nie mogę dodać parametr do definicji metody, a następnie ignorować. Ale wolałbym tego uniknąć, jeśli to możliwe).