2015-05-03 26 views
1

我有一個要求,允許客戶端只從大的JSON模式請求字段子集。我已經使用ODATA和他們的概念$select(我喜歡很多關於ODATA的知識,除了缺少採用)我知道我可以創建自己的解決方案,但是覺得必須有其他可以使用或用作基礎的開源解決方案。 (我的服務在走)限制Json模式中的返回字段

有人知道類似的東西嗎?常規約定?

添加一些說明:

說我有類似下面的模式:

 
{ 
    "status": { 
     "enum": [ 
      "active", 
      "inactive" 
     ] 
    }, 
    "lastModified": { 
     "type": "string", 
     "format": "date-time" 
    }, 
    "userId": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "username": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "firstName": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "lastName": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "email": { 
     "type": "string" 
    }, 
    "address": { 
     "$ref": "#/definitions/address" 
    } 
}

默認情況下,到達我們的用戶資源將返回所有這些領域。我想是一個客戶端的方式說,他們只是希望類似如下:

 
{ 
    "firstName": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "lastName": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "email": { 
     "type": "string" 
    } 
}

使用OData的,你可以用$選擇查詢字符串參數指定。理想情況下,我希望有一個客戶端指定他們想要的模式,並且我們只是通過一種每次都執行此操作的過濾器來傳遞完整模式。但是,我覺得這可能是我必須自己編碼的東西。但是,從短期來看,如果有一種方法可以讓客戶按照每個請求以這種方式指定他們想要的字段,那麼他們會得到滿足,直到我們獲得更強大的功能。

+0

是否要允許客戶特定領域而忽視了其餘字段? – MIkCode

回答

0

如果我正確理解你的問題,你想揭示客戶特定的領域。 如果是這種情況,你可以使用Json tags那樣的。

type FileMD struct { 
FileName string `json:"filename"` 
FileSize int `json:"filesize"` 
FileMD5 string **`json:"-"`**//this wil ignore the FileMD5 field 

}

+0

不完全,但接近。看到我上面添加的細節。謝謝! – RockyMountainHigh

+0

我以前沒有使用過,但你可以驗證你的json與 https://github.com/xeipuuv/gojsonschema – MIkCode