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

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

REST API 響應(yīng)的屬性級別權(quán)限

REST API 響應(yīng)的屬性級別權(quán)限

縹緲止盈 2021-10-06 12:46:16
如果我有一個表示表的 bean 類,并且它的數(shù)據(jù)作為 API 的響應(yīng)返回。該 API 是從具有多個角色和功能的多個客戶端調(diào)用的,這限制了屬性的可見性。我在詢問一種動態(tài)處理該場景的方法或框架。例如: - 我們有一個用戶表:------------------------------------------------------------------|  id  |  f_name  |  l_name  | mobile  |  email    | birth_date  |------------------------------------------------------------------|  12  |  Ahmed   |  Adel    | 123456  |  a@a.com  | 01/02/90    |------------------------------------------------------------------- 我們有一個代表該行的 bean:class User {  private int id;  private String fName;  private String lName;  private String mobile;  private String email;  private String bDate;..}所以在像這樣的 API 中:....../....../用戶/12JSON 響應(yīng)可能是:{  "id": 12,  "fName": "Ahmed",  "lName": "Adel",  "mobile": "123456",  "email": "a@a.com",  "bDate": "01/02/90"}需要的是,* 如果客戶端是普通用戶,那么他應(yīng)該被迫得到以下響應(yīng):{  "id": 12,  "fName": "Ahmed",  "lName": "Adel",  "mobile": null,  "email": null,  "bDate": null}* 如果客戶端是更高級別的用戶,那么他可以獲得更多詳細信息,如下所示:{  "id": 12,  "fName": "Ahmed",  "lName": "Adel",  "mobile": "123456",  "email": "a@a.com",  "bDate": null}* 如果客戶是管理員,那么他可以獲得以下回復(fù)的完整詳細信息:{  "id": 12,  "fName": "Ahmed",  "lName": "Adel",  "mobile": "123456",  "email": "a@a.com",  "bDate": "01/02/90"}
查看完整描述

1 回答

?
料青山看我應(yīng)如是

TA貢獻1772條經(jīng)驗 獲得超8個贊

一個干凈的方法是使用@JsonView杰克遜注釋。


定義視圖:


public class UserViews {

    public static class Normal {}

    public static class High extends Normal {}

    public static class Admin extends High {}

}

注釋您的模型:


class User {

    @JsonView(UserViews.Normal.class)

    private int id;

    @JsonView(UserViews.Normal.class)

    private String fName;

    @JsonView(UserViews.Normal.class)

    private String lName;

    @JsonView(UserViews.High.class)

    private String mobile;

    @JsonView(UserViews.High.class)

    private String email;

    @JsonView(UserViews.Admin.class)

    private String bDate;


    // getters and setters

}

并告訴 jackson 應(yīng)該使用哪個視圖來序列化:


mapper.writerWithView(UserViews.Admin.class).writeValueAsString(user);

在將數(shù)據(jù)發(fā)送到前端之前,您可以封裝和集中 jackson 應(yīng)該使用哪個視圖的邏輯


查看完整回答
反對 回復(fù) 2021-10-06
  • 1 回答
  • 0 關(guān)注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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