Tôi không gửi câu trả lời này như một câu trả lời vì nó chỉ là một trường hợp cạnh trên currently accepted answer đó là những gì tôi cũng đã sử dụng. Trong trường hợp của tôi (Jersey 1.19) /list/{taskid:.+}
sẽ không hoạt động đối với trường hợp cạnh của các tham số biến số không. Thay đổi RegEx thành /list/{taskid:.*}
đã quan tâm đến điều đó. Xem thêm this article (có vẻ như có thể áp dụng).
Hơn nữa, khi thay đổi regexp để chỉ cardinality để *
(thay vì +
) Tôi cũng đã phải đối phó lập trình với trường hợp của chuỗi rỗng như tôi sẽ dịch các List<PathSegment>
thành một List<String>
(để vượt qua nó vào tôi DB-truy cập mã).
Lý do tôi dịch PathSegment
-String
là tôi không muốn có một lớp từ gói javax.ws.rs.core
gây ô nhiễm lớp đang truy cập dữ liệu của tôi.
Dưới đây là một ví dụ hoàn chỉnh:
@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 ...
}
Nguồn
2016-05-20 09:04:17
Cảm ơn, đây có lẽ là gần nhất tôi sẽ nhận được vào đó nên bây giờ tôi chỉ cần đặt ở đó regexp phù hợp với con số và chém cho example.com/ws/list/1 hoặc example.com/ws/list/1/2/3/4/5/6 – zeratul021