[英]Json request validation for mandatory field - springboot rest-api
[英]Springboot REST API not returning JSON with simple GET request
我是 Java 和 Springboot 的新手。 尝试使用一个参数 terminalId 实现一个简单的 get 请求,它是一个字符串。
Findall() 端点工作正常,但是在实现端点以匹配字符串时遇到了麻烦。
控制器
@RestController
@RequestMapping("/api/private/v1")
public class TransactionController {
private TransactionService<TransactionResponse> transactionService;
public TransactionController(TransactionyService<TransactionResponse> transactionService) {
this.transactionService = transactionService;
}
@CrossOrigin(origins = "http://localhost:4200")
@GetMapping(value = "/transactions")
public List<TransactionResponse> retrieveTransactions(){
return transactionService.findAll();
}
@CrossOrigin(origins = "http://localhost:4200")
@GetMapping(value = "transactions/{terminalId}")
public List<TransactionResponse> retrieveByTerminalId(
@PathVariable String terminalId) {
if (terminalId != null) {
return transactionService.findByTerminalId((terminalId));
// @ResponseStatus(HttpStatus.OK)
} else {
return null;
}
}
}
服务
List<T> findAll();
List<T> findByTerminalId(String terminalId);
T save(T object);
}
服务
@Service
public class TransactionServiceImpl implements TransactionService<TransactionResponse> {
protected List<TransactionResponse> transactionResponseList = new ArrayList<>();
@Override
public List<TransactionResponse> findAll() {
return transactionResponseList;
}
@Override
public List<TransactioResponse> findByTerminalId(String terminalId) {
return transactionResponseList;
}
@Override
public TransactionResponse save(TransactionResponse object) {
if(null != object){
transactionResponseList.add(object);
}
return object;
}
}
引导组件
@Component
public class TransactionBootstrap implements CommandLineRunner {
private TransactionService<TransactionResponse> transactionService;
public TransactionBootstrap(TransactionService<TransactionResponse> transactionService) {
this.transactionService = transactionService;
}
@Override
public void run(String... args) throws Exception {
loadData();
}
private void loadData() {
TransactionResponse response1 = new TransactionResponse("111", LocalDateTime.now(), LocalDateTime.now());
TransactionResponse response2 = new TransactionResponse("222", LocalDateTime.now(), LocalDateTime.now(),);
transactionService.save(response1);
transactionService.save(response2);
}
}
我正在使用“localhost:8080/api/private/v1/transactions/111” URL
我得到一个白标错误页面。 这是一个JPA问题吗? 这是@RequestParams 与@PathVariable 的问题吗?
我完全迷路了。
你错过了 / 在 @GetMapping(value = "transactions/{terminalId}")
写@GetMapping(value = "/transactions/{terminalId}")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.