2016-01-17 1 views
1

Представьте себе сообщение REST конечной точки, такие как:rest/javax/jersey/grizzly: обязательно ли возвращать код ответа ОК (200) для запросов POST?

@POST 
@Path("/cbo/{param1}/{param2}") 
public Response updateCbo() { 
    //do something 
    return Response.status(Response.Status.OK).build(); 
} 

Мой вопрос: если все пойдет хорошо, то лучше вернуть OK ответ или это по умолчанию в любом случае? Я вижу, что запросы GET обычно не мешают возврату ответа, только запрашиваемый контент, а веб-клиенты извлекают заголовок 200 OK.

Спасибо.

ответ

2

Вам не нужно возвращать ответ вообще, допустим, если у вас есть вызов типа POST (или любой другой функции), который в запросе ответа вы хотите вернуть String (или любой объект, если это важно, если вы используете сериалайзер как Джексон)

вы можете просто сделать:

@POST 
@Path("/cbo/{param1}/{param2}") 
public String updateCbo() { 
    //do something 
    return "My Response" 
} 

Джерси автоматически возвращается 200 для этого. Если вы отключите функцию, Джерси автоматически вернет 204 («Успех - без содержимого»).

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

3

При проводке в создать новый ресурс, то общепринятый прочь, чтобы отправить обратно 201 Created статус, с Location заголовка Установите URI нового ресурса. Вы можете увидеть пример одного для этого, в this post.

Если вы всего лишь , то обновите ресурс, который вместо POST, как правило, выполняется с помощью PUT, а вместо 201 общий способ - отправить 204 No Content, на успех. Пример

@PUT 
@Path("/cbo/{param1}/{param2}") 
public Response updateCbo(Model updated, 
          @PathParam("param1") String param1, 
          @PathParam("param2") String param2) { 
    Model model = modelServive.lookup(param1, param2); 
    if (model == null) 
     return Response.notFound().build(); 
    model = PropTranferUtils.transfer(model, updated); 
    modelService.update(model); 
    return Response.noContent().build(); 
} 
+0

Отличная информация. Большое спасибо. – Sebas

Смежные вопросы