java忽略POST请求的JSON字段,但不应忽略GET请求的JSON字段
我不熟悉Spring引导框架。我有一个模型如下:
public class Process{
private String processId;
private ProcessStatus status;
private hostname;
private errorMessage;
}
来自控制器的Post呼叫:
@RequestMapping(value = "/process", method = RequestMethod.POST,
consumes = { MediaType.APPLICATION_JSON_UTF8_VALUE })
public HttpStatus updateProcess (@RequestBody Process process)
{
try {
processService.updateProcess(process);
return HttpStatus.OK;
} catch (Exception e)
throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR,e,
e);
}
}
获取流程的调用:
@RequestMapping(value = "/process", method = RequestMethod.GET,
produces = { MediaType.APPLICATION_JSON_UTF8_VALUE })
public Process getProcess (@RequestParam("processId") String processId)
{
try {
return processService.getProcess(processId);
} catch (Exception e) {
throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR,
e);
}
}
因此,post由负责更新流程信息的组件A执行。 组件B正在执行Get以获取现有流程。 问题:如何隐藏get而不是post的主机名和errorMessage。当我做@JsonIgnore时,它会忽略这两个请求
# 1 楼答案
您可以使用^{} 功能。您可以定义几个不同的级别:
现在,您需要注释
POJO
属性:当你已经有了它,你需要注释
API
方法GET
对于
POST
来说:当然,您可以为视图选择更好的名称。以上只是阅读链接文章后的一个用法示例。我没有测试它,但你应该了解它的大致意思
# 2 楼答案
最简单的方法是使用另一个DTO(数据传输对象)类,该类不包含您不想发回的字段。在您的例子中,这意味着创建一个
ProcesDTO
类,如下所示:此外,这意味着要在
Process
和ProcessDTO
之间进行映射,这可以手动完成,也可以使用某种库(如org.modelmapper)来完成假设
Process
是某种实体类,实际上并不建议直接使用它们来发回JSON数据