У меня есть службы Rest, что я хочу, чтобы отвечать на запросы со следующими путямиМожно ли хранить pathparams в виде списка?
1) /v1/config/type/service
2) /v1/config/type/service, service2
То, что я хотел бы, чтобы иметь возможность хранить путь параметров serviceName
как List
, где каждый элемент разделен запятой. Например, если кто-то типа v1/config/foo/bar1,bar2,bar3
хотел бы serviceName
быть List
с 3 элементами (bar1, bar2, bar3). Сейчас он просто возвращает список с 1 элементом, который содержит все три строки обслуживания. Возможно ли это? Или это то, что я просто должен разобрать. Код у меня будет показано ниже, это довольно грубый, как я нахожусь в начальной стадии проекта:
@ApplicationPath("/")
@Path("/v1/config")
public class ServiceRetriever extends Application {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getHelloWorld() {
return "Hello World";
}
@GET
@Path("{type}/{serviceName}")
@Produces("application/zip")
public Response getServices(@PathParam("type") String type, @PathParam("serviceName")List<String> serviceNames,
@QueryParam("with_config") boolean withConfig, @QueryParam("with_drive") boolean withDriver) throws IOException
{
//some random file i made to test that we can return a zip
File file = new File(System.getProperty("user.home")+"/dummy.zip");
System.out.println(serviceNames.size()); //returns 1
//we can change the zip file name to be whatever
return Response.ok(file).header("Content-Type","application/zip").
header("Content-Disposition", "attachment; filename="+file.getName()).build();
}
Я не уверен, что я получил это право .. но почему бы не продолжать использовать 1 строку в качестве входных данных и на стороне сервера, разделить его на ''. получить список параметров? Возможно, я не слишком хорошо тебя понял .. – LiranBo
@ LiranBo да, я понял, что это плохо написано. Сейчас я так делаю. Последняя часть пути 'bar1, bar2, bar3' Я просто храню в виде строки и разбиваю на запятую. Я не знал, есть ли способ для JAX-RS, способный обойтись без разделения – sreya