Pisałem aplikację ReST opartą na JAX-RS z wykorzystaniem Apache Wink i zrozumiałem koncepcję asocjacji między parami ścieżek do klasy uchwytów zasobów. Tutaj widzę, że możemy zdefiniować ścieżki przy użyciu adnotacji @Path
i odpowiedniego zasobu, który zostanie wywołany w oparciu o metodę HTTP.Jak napisać pojedynczy zasób JAX-RS dla zmiennej liczby parametrów ścieżki
Teraz szukam czegoś w rodzaju zasobu, który powinien zostać wywołany dla zmiennej liczby parametrów ścieżki.
Na przykład Chcę, aby moja pojedyncza klasa zasobów CollegeResource
była wywoływana dla identyfikatorów URI, takich jak /rest/college, /rest/college/subject, /rest/college/subject/teachers,
i może przechodzić do dowolnej liczby parametrów ścieżki.
Jeśli znam liczbę par ścieżek w przeszłości, mógłbym to osiągnąć, używając czegoś takiego: /rest/college/{param1}/{param2}
. Ale liczba par ścieżek jest nieznana. Tak więc czułem (mogę się mylić) nie mogę zastosować tego podejścia.
Jeszcze jednym sposobem, jaki mógłbym jeszcze użyć, jest użycie parametrów zapytania. Ale chcę, aby to było dostępne tylko jako parametry ścieżki.
Czy jest jakikolwiek sposób na wykonanie tego zadania za pomocą mrugnięcia apache z dowolną inną konfiguracją? Jeśli nie w mrugnięciu Apache, inne implementacje JAX-RS obsługują to?
Patrzę, kiedy wywołuję RDBMS, wyślę 3 obiekty (nazwa bazy danych, nazwa schematu i nazwa tabeli) w parametrach ścieżki. Mój adres URL będzie podobny do **/api/database/dbname/schemaName/tablename **. Ale podczas wywoływania Salesforce.com wyślę tylko jeden obiekt SFDC, a mój adres URL będzie **/api/sfdc/Konto **. Tutaj nie chcę mieć wielu zasobów dla każdej docelowej aplikacji. Dlatego chcę mieć pojedynczy zasób z podstawowym identyfikatorem URI/api/{targetAppName} i może on mieć dowolną liczbę paramerów ścieżek. Mogę uzyskać dostęp do {targetAppName} w kodzie i zdecydować o docelowej aplikacji i zrobić to odpowiednio. –
A chcesz, aby tylko jedna metoda zasobów obsługiwała wszystkie możliwe przypadki użycia? Jeśli tego chcesz, to przejdź do niego –
Works. Ostatecznym powiedzeniem dla tego wątku byłoby, używając {params:. *}, Możemy uczynić go ogólnym. –