java - Springboot REST API 没有通过简单的 GET 请求返回 JSON
问题描述
我是 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”网址
我得到一个白标签错误页面。这是 JPA 问题吗?这是 @RequestParams 与 @PathVariable 的问题吗?
我完全迷路了。
解决方案
您在 @GetMapping(value = "transactions/{terminalId}") 中错过了 /
写@GetMapping(value = "/transactions/{terminalId}")
推荐阅读
- python - 如何在一个点后只打印一个字符?
- node.js - 尝试更新或删除帖子时出错
- android - 在全屏对话框中显示与 AlertDialog 按钮一起居中的位图
- java - 将 Java 应用程序部署到 WebLogic 10.3.6
- opencv - 通过 HomeBrew 安装 OpenCV 时出现校验和错误
- svn - PyCharm 撤消添加到 VCS (svn)
- angular - 如何在 Angular 中使用带有 graphQL Apollo 测试控制器的 rxjs 弹珠测试
- ios - iOS:如何实现遮罩视图事件穿透?
- c - 自动填充数组
- spring-mvc - jsp页面如何在一个表中添加多个列表