[英]how to set the server status code for http response?
我有这个角度的客户端代码:
$http.put('api/Voices/updateVoice', {voice : voice, isAddMode : isAddMode}).then(
function successCallback(response) {
lastUpdateStatus = response.data;
deferred.resolve(response.data);
}, function errorCallback(response) {
var responseStr = JSON.stringify(response)
console.log("server error: "+responseStr);
deferred.reject(response.data);
});
return deferred.promise;
这个Java服务器代码:返回一个jax-rs响应对象。
@Path("/foo")
@PUT
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
public Response updateVoice(VoiceUpdateRequest voiceUpdateRequest) throws Exception {
try {
voicesInDb = rulesUiRepository.getUiVoices();
logger.info("ACTION-LOG: " + (voiceUpdateRequest.isAddMode ? "Add" : "Edit") + " voice: " + voiceUpdateRequest.voice);
logger.info("ACTION-LOG: DB state: " + voicesInDb);
boolean isAddMode = voiceUpdateRequest.isAddMode;
VoiceUi voiceUi = voiceUpdateRequest.voice;
// validateVoiceUi(voiceUi);
if (!isAddMode) { //edit mode
voicesInDb.remove(voiceUi);
} else {
voiceUi.orderIndex = voicesInDb.nextAvailableVoiceId;
voicesInDb.nextAvailableVoiceId++;
}
voicesInDb.insert(voiceUi);
OperationType operationType = isAddMode ? OperationType.ADD : OperationType.EDIT;
updateDbAndCofman(operationType, voiceUi.id);
}
catch (Exception ex)
{
String error = "error: "+ ExceptionUtils.getMessage(ex)+"---->---> trace: "+ExceptionUtils.getStackTrace(ex);
logger.error("update voice filed. "+error);
return Response.status(500).entity(error).build();
}
return Response.ok().build();
}
我试图重写它以便使用我的自定义模型response
如何设置响应状态代码,以便客户端知道要调用哪个回调?
@Path("/foo")
@PUT
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public VoicesOperationResult updateVoice(VoiceUpdateRequest voiceUpdateRequest) throws Exception {
VoicesOperationResult voicesOperationResult = new VoicesOperationResult();
try {
...
}
catch (Exception ex)
{
voicesOperationResult.status = 500;
voicesOperationResult.message = ExceptionUtils.getMessage(ex);
voicesOperationResult.trace = ExceptionUtils.getStackTrace(ex);
return voicesOperationResult;
}
voicesOperationResult.status = 200;
return voicesOperationResult;
}
您可以通过添加带注释的参数来访问ServletResponse。 然后,您可以自己设置HTTP返回代码:
public VoicesOperationResult updateVoice(VoiceUpdateRequest voiceUpdateRequest, @Context HttpServletResponse response) {
[...]
response.setStatus(500);
}
jaxrs可能会覆盖此内容。 让我知道它是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.