Rest api 对 GET 请求返回空括号

Nas*_*din 1 rest json spring-data-jpa spring-boot

我用 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);
}
Run Code Online (Sandbox Code Playgroud)

我还创建了一个SeqServiceBean扩展接口的 bean 类SeqService,该接口又调用以下 JPA 存储库中的方法进行查询。

//SeqRepository.java
@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {

    @Override
    public List<SeqTb> findAll();

    public List<SeqTb> findByAnalysisId(String analysisId);
}
Run Code Online (Sandbox Code Playgroud)

问题是当我在浏览器中输入网址(http://localhost:8080/api/seqs/fdebfd6e-d046-4192-8b97-ac9f65dc2009)时,它只返回一对空括号。我刚刚查了一下数据库,确实有这条记录。我做错了什么?

myk*_*key 5

回答这个问题有点晚了,但以防万一其他人也遇到这个问题。这个问题可能是由于类(我们希望显示为 json 对象)缺少 getter 和/或 setter 方法引起的。在您的情况下,“seqTab”类可能没有吸气剂。如果没有 getter,我们的应用程序就无法提取字段来构建 json 对象。

示例:示例用户类 public class 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;
}
Run Code Online (Sandbox Code Playgroud)

}

示例休息控制器@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);
}
Run Code Online (Sandbox Code Playgroud)

}

// 如果我们尝试到达端点 /sample{input} .. 例如

请求:本地主机: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;
}
Run Code Online (Sandbox Code Playgroud)

}

请求: http://localhost:8080/sample/abebe

响应:{“firstname”:“abebe”,“lasttname”:“bikila”,“age”:45}

希望有帮助!