В REST / Java, что я должен вернуть, если мой объект нулевой?
У меня есть простой POJO, который я аннотировал с аннотациями REST следующим образом:
@GET
@Path("/domains/{domainid}")
@Override
public Domain getDomain(@PathParam("domainid") UUID domainID) throws Exception {
logger.info("Retrieving domain "+ domainID);
Domain d = null;
try {
d = MyClient.getDomains().get(domainID.toString());
logger.debug("Returning "+d.getName());
} catch (Exception e) {
logger.error("Could not retrieve domain", e);
}
return d;
}
Обратите внимание, что оператор log, включающий d.getName (), может на самом деле бросить NPE, который затем перехватывается и регистрируется. Это не красиво, но здесь дело не в этом.
В конечном счете, имеет ли d значение или нет, я возвращаю его.
В случае нулевого значения мой клиент получает код состояния HTTP 204. Вот что отображает wget:HTTP request sent, awaiting response... 204 No Content
Как ни странно, мои браузеры не сдвинулись ни на дюйм. Они по-прежнему отображают предыдущую страницу (я полагаю, имеет смысл оставаться на месте, когда контент не получен). Я бы ожидал пустую страницу.
Три вопроса:
HTTP 204 правильный ответ, который будет возвращен?как я могу контролировать это с помощью аннотаций? Через другую конфигурацию?Какова стандартная практика REST в отношении нулевых объектов?Спасибо
=== РЕДАКТИРОВАТЬ ===
На эту же тему есть большой вопрос:Верно ли возвращать 404, когда ресурс REST не найден?