[英]How to ignore certain field from response in REST API Java
我寫了兩個微服務,微服務 A 調用微服務 B 並將響應返回給微服務 A。需求很簡單,驗證信用卡號並在響應中返回成功或失敗。 請在下面找到我的代碼:
微服務 A:
@RestController
public class TestController {
@PostMapping("/users")
public CreditCard createUser(@RequestBody CreditCard creditCard) {
Map<String, String> ccDetails = new HashMap<>();
ccDetails.put("ccNumber", creditCard.getCcNumber());
ResponseEntity<CreditCard> responseEntity = new RestTemplate()
.getForEntity("http://localhost:8081/validation/cc/{ccNumber}", CreditCard.class, ccDetails);
return responseEntity.getBody();
}
}
CreditCard.java
public class CreditCard {
private String status;
private String ccNumber;
public CreditCard() {
}
public String getStatus() {
return status;
}
public String getCcNumber() {
return ccNumber;
}
public void setCcNumber(String ccNumber) {
this.ccNumber = ccNumber;
}
}
微服務 B:
驗證CCResource.java
@RestController
@RequestMapping("/validation")
public class ValidateCCResource {
@GetMapping("/cc/{ccNumber}")
public CreditCardValidation validateCreditCardApplication(@PathVariable String ccNumber) {
CreditCardValidation response = new CreditCardValidation();
if (ccNumber.length() == 16) {
System.out.println("valid credit card - success");
response.setStatus("Credit Card Number is Valid");
} else {
response.setStatus("Credit Card Number is Not Valid");
}
return response;
}
}
CreditCardValidation.java
public class CreditCardValidation {
private String status;
public CreditCardValidation() {
}
public void setStatus(String status) {
this.status = status;
}
public String getStatus() {
return status;
}
}
請求正文:
{
"ccNumber": "1234432232232233"
}
實際反應:
{
"status": "Credit Card Number is Valid",
"ccNumber": null
}
預期反應:
{
"status": "Credit Card Number is Valid"
}
我想在響應中忽略ccNumber ,我嘗試使用@JsonIgnore
但它不起作用 - 有人可以幫助如何從我的響應中刪除 ccNumber。
如果我正確地回答了您的問題,您可以執行以下操作:-
如果您不想在響應中包含null
對象,則可以在模型/數據/dto class 的屬性上使用@JsonInclude(Include.NON_NULL)
注釋。
如果您根本不想包含任何特定字段,則可以在模型/數據/dto class 中使用@Transient
注釋該屬性。
它是如何工作的:
因此,當您的所有模型/數據/dto 類從 Object 轉換為 JSON 時,它們都會被序列化。 在發生此序列化時,您可以決定自定義邏輯以確定最終的 JSON 響應是什么。 這可以簡單地通過 Java(和或您用於序列化的任何庫)中的可用注釋來實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.