我用Spring Boot实现了Rest api。在我的控制器类中,我有代码来处理GET请求,如果找到记录,它将返回JSON。
// SeqController.java
@Autowired
private SeqService seqService;
@RequestMapping(
value = "/api/seqs/{analysis_id}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<SeqTb>> getSeqByAnalysisId(@PathVariable("analysis_id") String analysis_id) {
List<SeqTb> seqs = seqService.findByAnalysisId(analysis_id);
return new ResponseEntity(seqs, HttpStatus.OK);
}
我还创建了一个bean类SeqServiceBean
,它扩展了接口SeqService
,后者又调用以下JPA存储库中的方法进行查询。
//SeqRepository.java
@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {
@Override
public List<SeqTb> findAll();
public List<SeqTb> findByAnalysisId(String analysisId);
}
问题是当我在浏览器中输入网址(http://localhost:8080/api/seqs/fdebfd6e-d046-4192-8b97-ac9f65dc2009)时,它只返回一对空括号。我只是查看了数据库,那个记录确实存在。我做错了什么?
答案 0 :(得分:1)
回答这个问题有点迟了,但万一其他人有这个问题。 此问题可能是由类(我们希望显示为json对象)缺少getter和/或setter方法引起的。 在你的情况下,&#34; seqTab&#34;上课可能没有吸气剂。 如果没有getter,我们的应用程序就无法提取文件来构建json对象。
示例: 示例用户类 公共类用户{
private String firstname;
private String lasttname;
int age;
public User(){
}
public User(String fname, String lname, int age){
this.firstname = fname;
this.lasttname = lname;
this.age = age;
}
}
样品休息控制器 @RestController
公共类SampleRS {
@RequestMapping(value = {"/sample/{input}"}, method = RequestMethod.GET , produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<User> startService(@PathVariable("input") String input){
User u = new User(input,"bikila",45);
return new ResponseEntity<User>(u,HttpStatus.OK);
}
}
//如果我们尝试点击端点/示例{input} ..例如
请求:localhost:8080 / Sample / abebe
回应:
{}
但是为User类添加getter将解决问题。
使用getter修改的User类
公共类用户{
private String firstname;
private String lasttname;
int age;
public User(){
}
public User(String fname, String lname, int age){
this.firstname = fname;
this.lasttname = lname;
this.age = age;
}
public String getFirstname() {
return firstname;
}
public String getLasttname() {
return lasttname;
}
public int getAge() {
return age;
}
}
请求:http://localhost:8080/sample/abebe
回复:{&#34;名字&#34;:&#34; abebe&#34;,&#34;姓氏&#34;:&#34; bikila&#34;,&#34;年龄&#34; :45}
希望有所帮助!
答案 1 :(得分:0)
在大多数情况下,数据库驱动程序jar未部署在服务器中。在Eclipse中检查项目的部署组装。另请参阅控制台消息以检查是否显示未找到驱动程序jar。 如果是这种情况,只需在Eclipse的部署程序集中部署此jar。
一件事,如果构建路径在eclipse中具有此jdbc driverjar,则main方法将连接到数据库。但是,如果未部署jar,则jdbc连接将不会通过http请求发生。