Я сделал клиентский сервер REST, и все работает более или менее точно. Вот дилемма: у меня есть возможность получить пользователя по имени пользователя, которое отлично работает, когда пользователь действительно существует. Однако, когда он этого не делает, я получаю 204 http-код, и это нормально, поскольку я сделал null-возврат. Я хочу, чтобы мой метод возвращал обычную строку в клиентскую консоль, когда пользователь не найден, скажем, «Нет такого пользователя ...», но тип возвращаемого метода логически является пользователем (классом), чтобы вернуть объект пользователя, когда такой найден. Вот на стороне сервера:REST service return
@GET
@Path("/{uName}")
@Produces({ "application/json", "application/xml"})
public User getUserByUsername(@PathParam("uName") String uName) {
returnAll = usrList.getUsers();
for (User u : returnAll) {
if (u.getUserName().equals(uName))
return u;
}
return null;
}
А вот соответствующая часть клиента:
case 3:
sc.nextLine();
System.out.println("Enter username");
userName = sc.nextLine();
restConnect("http://localhost:8080/rest/user/"
+ userName, "GET");
promptKey();
Изменение метода для возвращения типа String, очевидно, будет нарушать код, когда пользователь фактически найден. Что я могу сделать, чтобы сделать две функции возврата типа? Спасибо
EDIT: Когда пользователь был найден, мой метод вернет первого пользователя в список с get(0)
, что является неправильным. Это был остаток меня испытывать что-то с удостоверением в
EDITx2: работа клиента
case 3:
sc.nextLine();
System.out.println("Enter username");
userName = sc.nextLine();
try{
restConnect("http://localhost:8080/rest/user/"
+ URLEncoder.encode(userName, "UTF-8"), "GET");
}
catch(RuntimeException e){
System.out.println("No such user...");
}
promptKey();
Почему бы не выбрасывать исключение и статус http сказать 500? Или почему бы не использовать NullObjectPattern и вместо этого возвратить фиктивный пользователь? – SMA
Потому что я хочу удобную информацию :) – Norgul