По какой-то причине я не нашел нормального способа сделать следующее:
Я хочу опубликовать объект json и добавить дополнительные параметры к вызову (в данном случае, токен аутентификации).
Это простой RESTful-сервер в myUrl / server, который должен предоставлять доступ к различным ресурсам «person» в URL-адресе myUrl / server / person / personCode / resourceName.
GET прост и не требует никаких объектов, только параметры.
Проблема возникает, когда я попадаю в POST - как мне присоединить JSON, а также сохранить другие параметры?
Класс (многое было удалено для ясности и из соображений собственности ...):
//Handles the person's resources
@Path("/person/{personCode}/{resourceName}")
public class PersonResourceProvider {
@GET
@Produces("application/json")
public String getPersonResource(@PathParam("personCode") String personCode, @PathParam("resourceName") String resourceName, @DefaultValue("") @QueryParam("auth_token") String auth_token) throws UnhandledResourceException, UnauthorizedAccessException {
//Authenticates the user in some way, throwing an exception when needed...
authenticate(personCode, auth_token, resourceName);
//Returns the resource somehow...
}
@POST
@Produces("application/json")
public String postPersonResource(@PathParam("personCode") String personCode, @PathParam("resourceName") String resourceName, @DefaultValue("") @QueryParam("resourceData") String resourceData, @DefaultValue("") @QueryParam("auth_token") String auth_token) throws UnhandledResourceException, UnauthorizedAccessException {
//Again, authenticating
authenticate(personCode, auth_token, resourceName);
//Post the given resource
}
}
Теперь метод GET работает отлично, когда вы идете в
myUrl / person / personCode / resourceName, это дает мне правильный ресурс.
Auth_token используется при каждом отдельном обращении к серверу (на данный момент аутентификация выполняется путем сравнения с предварительно определенной строкой), поэтому это необходимо. Все остальные параметры предоставляются через путь, за исключением токена аутентификации, который не должен находиться в пути, поскольку он не относится к идентификатору требуемого ресурса.
Когда я добираюсь до POST, это проблема.
Я знаю, что есть способ сообщить методу, что он использует JSON, но в таком случае, что произойдет с другими параметрами (один из них - auth_token)?
Должен ли я использовать Multipart?
Еще один связанный с этим вопрос, это первый раз, когда я проектировал такой сервер, правильный ли это дизайн?
Спасибо!