亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

我所有REST API中的JSON自定義響應,我可能不知道它叫什么?

我所有REST API中的JSON自定義響應,我可能不知道它叫什么?

MMTTMM 2019-04-25 18:15:48
所以問題就是這樣,對于我的所有REST API端點,我的RESPONSE Body中應該總共有3個字段,例如:{ "status": "SUCCESS", "message": "A list of a recent post", "data" : [LIST OF POSTS] }要么{ "status" : "NOT_AUTHORIZED", "message": "User does not have previledge to access this resource", "errors": ["User does not have Admin access"] }所以你可以得到這個想法,我希望這個消息狀態錯誤或數據字段存在于我的REST API中的所有響應中。
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

它可以通過以下方式實現ResponseBodyAdvice

允許在執行一個@ResponseBody或一個ResponseEntity控制器方法之后但在使用一個主體寫入正文之前自定義響應HttpMessageConverter。

實現可以直接注冊RequestMappingHandlerAdapter,ExceptionHandlerExceptionResolver或者更可能注釋,@ControllerAdvice在這種情況下,它們將被兩者自動檢測。

所以你可能有類似的東西:

@ControllerAdvicepublic class MyResponseBodyAdvisor implements ResponseBodyAdvice<Object> {

    @Override
    public boolean supports(MethodParameter returnType,
                            Class<? extends HttpMessageConverter<?>> converterType) {

        return converterType.isAssignableFrom(MappingJackson2HttpMessageConverter.class);
    }

    @Override
    public Object beforeBodyWrite(Object body,
                                  MethodParameter returnType,
                                  MediaType selectedContentType,
                                  Class<? extends HttpMessageConverter<?>> selectedConverterType,
                                  ServerHttpRequest request,
                                  ServerHttpResponse response) {

        MyResponseWrapper wrapper = new MyResponseWrapper();
        wrapper.setData(body);
        return wrapper;
    }}

哪里MyResponseWrapper是你用來包裹響應有效載荷類。


查看完整回答
反對 回復 2019-05-15
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

您可以使用ResponseBodyAdvice<T>全局攔截響應POJO,然后將其編組為JSON,但這似乎不合適,因為您的每個REST方法都應該根據方法的功能生成不同的消息。此外,無論如何,這會強制您使用一些包裝類進行響應。

所以,我想,最好在每種方法中手動將數據(以及狀態和消息)包裝到響應中


查看完整回答
反對 回復 2019-05-15
  • 3 回答
  • 0 關注
  • 686 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號