【发布时间】:2020-11-29 16:09:46
【问题描述】:
我写了两个微服务,微服务 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:
ValidateCCResource.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。
【问题讨论】:
标签: java json api rest microservices