java - 微服務(wù)架構(gòu)中類的設(shè)計(jì)以及restful返回json數(shù)據(jù)
問題描述
問題1: 在spring boot 實(shí)現(xiàn)的微服務(wù)架構(gòu)中,各個(gè)服務(wù)之間的數(shù)據(jù)交互問題 說明
比如在服務(wù)架構(gòu)中兩個(gè)服務(wù)之間的交互,服務(wù)A中有一個(gè)數(shù)據(jù)model,服務(wù)B調(diào)用后,服務(wù)A 將此類型的模型返回給服務(wù)B ,服務(wù)B中就必須也定義一個(gè)這樣的數(shù)據(jù)模型才能正確的接收數(shù)據(jù)這樣會(huì)造成類的多次定義?
問題2:在spring中使用restful返回客戶端數(shù)據(jù)時(shí),會(huì)進(jìn)行模型轉(zhuǎn)json操作,但是對(duì)象中定義了很多屬性,而客戶端只需要其中部分屬性對(duì)應(yīng)的值,那么如何在返回客戶端之前將其中不需要的或者無值的屬性剔除?
問題解答
回答1:答1:RPC通信的數(shù)據(jù)傳輸格式常用的有 json、xml 或 自定義的二進(jìn)制格式,一般都會(huì)事先約定好。既然都是不同的服務(wù),一般都是不同的團(tuán)隊(duì)來維護(hù)的。再說解析接收對(duì)象的類不一定要完全與輸出對(duì)象一致。
答2:一種做法是輸出對(duì)象定義必要屬性,將你的中間對(duì)象轉(zhuǎn)換成最終要輸出的對(duì)象,去除多余屬性。或者在對(duì)象轉(zhuǎn)json的時(shí)候剔除多余屬性,spring 中提供了 @JsonIgnore 注解,對(duì) bean 的多余屬性添加該注解后,轉(zhuǎn)換json對(duì)象時(shí),就會(huì)忽略該屬性。
回答2:Q1: bean可以定義在一個(gè)獨(dú)立的module中, 服務(wù)A和服務(wù)B都依賴這個(gè)module即可。
Q2: json注解忽略或者采用dto的方式,只獲取需要的屬性。
相關(guān)文章:
1. docker鏡像push報(bào)錯(cuò)2. angular.js - angular內(nèi)容過長(zhǎng)展開收起效果3. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題4. javascript - URL中有#號(hào)如何來獲取參數(shù)啊? nodejs5. docker容器呢SSH為什么連不通呢?6. docker不顯示端口映射呢?7. 關(guān)于docker下的nginx壓力測(cè)試8. 新手求教python3如何把dict循環(huán)寫入csv文件(在進(jìn)行爬蟲時(shí)遇到的問題)?9. python - 想要看Exception實(shí)現(xiàn)的源碼在什么位置?10. python - Django表單Form.save()問題
