Я не представляю это в качестве ответа, поскольку это только крайный кейс на currently accepted answer, который я и использовал. В моем случае (Джерси 1.19) /list/{taskid:.+}
не будет работать для краевого случая нулевых переменных параметров. Изменение RegEx до /list/{taskid:.*}
позаботилось об этом. См. Также this article (что, по-видимому, применимо).
Кроме того, при изменении регулярному_выражения к индикатору мощности к *
(вместо +
) Я также должен был иметь дело программно с делом пустых строк, как я бы перевести List<PathSegment>
в List<String>
(передать его в мой DB-доступ код).
Причина, по которой я переводил с PathSegment
в String
, заключается в том, что я не хотел, чтобы класс из пакета javax.ws.rs.core
загрязнял мой код уровня доступа к данным.
Вот полный пример:
@Path("/listDirs/{dirs:.*}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response listDirs(@PathParam("dirs") List<PathSegment> pathSegments) {
List<String> dirs = new ArrayList<>();
for (PathSegment pathSegment: pathSegments) {
String path = pathSegment.getPath();
if ((path!=null) && (!path.trim().equals("")))
dirs.add(pathSegment.getPath());
}
List<String> valueFromDB = db.doSomeQuery(dirs);
// construct JSON response object ...
}
Спасибо, это, вероятно, ближе всего я вернусь к этому, так что теперь мне просто нужно поставить там регулярное выражение, которое соответствует числу и слэша для example.com/ws/list/1 или example.com/ws/list/1/2/3/4/5/6 – zeratul021