Вопрос

Я пытаюсь использовать Jersey для разработки веб-сервиса REST.Мое требование заключается в том, чтобы я мог получить доступ к веб-сервису и возвращать данные на основе переданных параметров PatParam.Мой веб-сервис на данный момент выглядит следующим образом:

@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes({ "application/xml", "application/json", "application/x-www-form-urlencoded" })
@Path("/1.0/people{extension:(.json)*}/{personId:([^/]+?)?}{entityExtension:(.json)*}")
public String getLocation(@PathParam("extension") String extension, @PathParam("personId") String personId,@PathParam("entityExtension") String entityExtension)
{
    if ((personId==null ||personId.equals("")) && (extension == null || extension.equals("")))
        return "No Id, and no extension";
    else
        return "personId= "+personId + ", extension= " + extension+", entityExtension= "+entityExtension;
}

Имея в виду приведенный выше код, я пытаюсь добиться следующего:

http://localhost:8080/Jersey/RestService/1.0/people.json

Должен возвращать список всех пользователей в формате "json" (отсюда и расширение .json)

Теперь я хочу иметь возможность получать информацию для конкретного человека, просто вводя идентификатор человека, и возвращать информацию о человеке в формате json / xml на основе расширения:

http://localhost:8080/Jersey/RestService/1.0/people/Mouhammed89.json

С приведенным выше URL-адресом я должен возвращать информацию для PersonID:Mouhammed89 и возвращает информацию в формате json.

Я знаю, что моя проблема связана с регулярными выражениями, которые я использую, поэтому я был бы очень признателен за помощь в их создании.

Это было полезно?

Решение

Контейнер IMHO (List) и предмет (Person) URL следует обрабатывать отдельно.И вы не требуете явных .json префикс для возврата JSON ответ, только аннотация в API уровня должно быть достаточно.

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people") //no need for .json suffix as API only return JSON format
public List<String> allLocations(..){ //jackson etc. will convert return type to json string 
..
}

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people/{personId: \\d+}")//digits only
public String getLocation(..){ //jackson etc. will convert return type to json string 
..
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top