0

我在 Eclipse 控制台上收到错误“Resolved [org.springframework.web.bind.MissingPathVariableException: Missing URI template variable 'rank' for method parameter of Rank]” 和消息:“Missing URI template variable 'rank' for method parameter of每当尝试 HTTP POST 请求时输入状态为“500”的 Rank”

  1. 我的 RESTController 代码:
@RestController
@RequestMapping(path =  "/comp")
public class RankController {
    @PostMapping(path = "/rank")
    ResponseEntity<Rank> createRank(@Valid @PathVariable Rank rank) throws URISyntaxException{
        Rank result = rankRepository.save(rank);
        return ResponseEntity.created(new URI("/comp/rank" + result.getId())).body(result);
    }
}
  1. 我的等级实体
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "RANK_TBL")
public class Rank {

    @Id
    private Long id;
    private String name;

    @ManyToOne(cascade = CascadeType.PERSIST)
    private Employee employee;
}
  1. 我的员工实体
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "EMPLOYEE_TBL")
public class Employee {
    
    @Id
    private Long id;
    private String name;
    private String email;
    
    @OneToMany
    private Set<Rank> Rank;
    
}
4

1 回答 1

1

改变@PathVariable_@RequestBody

在这里,您正在发出保存实体的请求,并且您应该以 JSON 格式将有效负载作为 @RequestBody 传递。从邮递员中,您可以使用原始类型并选择 JSON 类型。

理想的方法是在我们创建或更新需要使用 POST 和 PUT 方法传递对象的记录时使用@RequestBody。对于根据 Id 或您可以使用的某些参数检索记录的方法@PathVariable

您可以在此处探索有关注释的更多信息

于 2020-06-20T17:38:33.033 回答