第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

忽略 POST 請求的 JSON 字段,但不應(yīng)忽略 GET 請求

忽略 POST 請求的 JSON 字段,但不應(yīng)忽略 GET 請求

萬千封印 2022-06-23 20:07:00
我是 Spring Boot 框架的新手。我有一個如下模型:   public  class Process{   private String processId;   private ProcessStatus status;   private hostname;   private errorMessage;}發(fā)布來自控制器的調(diào)用:@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 由負(fù)責(zé)更新流程信息的組件 A 執(zhí)行。組件 B 正在完成獲取以獲取現(xiàn)有進(jìn)程。問題:我怎樣才能隱藏主機(jī)名和錯誤消息以獲得而不是帖子。當(dāng)我做@JsonIgnore 時,它會忽略這兩個請求。
查看完整描述

2 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個贊

您可以使用JsonView功能。您可以定義幾個不同的級別:


public class Views {

    public static class Public {

    }


    public static class Internal extends Public {

    }

}

現(xiàn)在,您需要注釋您的POJO屬性:


public class Process{

   @JsonView(Views.Public.class)

   private String processId;


   @JsonView(Views.Public.class)

   private ProcessStatus status;


   @JsonView(Views.Internal.class)

   private String hostname;


   @JsonView(Views.Internal.class)

   private String errorMessage;

}

當(dāng)您已經(jīng)擁有它時,您需要注釋API方法。GET:


@RequestMapping(value = "/process", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_UTF8_VALUE })

@JsonView(Views.Public.class)

public Process getProcess (@RequestParam("processId") String processId)

對于POST:


@RequestMapping(value = "/process", method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_UTF8_VALUE })

@JsonView(Views.Internal.class)

public HttpStatus updateProcess (@RequestBody Process process)

當(dāng)然,您可以為視圖選擇更好的名稱。以上只是閱讀鏈接文章后的示例用法。我沒有測試它,但你應(yīng)該得到一般的想法。


查看完整回答
反對 回復(fù) 2022-06-23
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個贊

最簡單的方法是使用另一個 DTO(數(shù)據(jù)傳輸對象)類,它不包含您不想發(fā)回的字段。在您的情況下,這意味著創(chuàng)建一個ProcesDTO類,如下所示:


public class ProcessDTO {

   private String processId;

   private ProcessStatus status;

   private hostname;

}

Process此外,這意味著要在和之間進(jìn)行映射ProcessDTO,這可以手動完成,也可以使用某種庫來完成,例如org.modelmapper。


假設(shè)這Process是某種實(shí)體類,無論如何都不建議直接使用它們來發(fā)回 JSON 數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2022-06-23
  • 2 回答
  • 0 關(guān)注
  • 170 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號