获得状态 500 和消息 "Missing URI template variable 'rank'",每当在邮递员上测试 HTTP POST 请求时

Got status 500 and message "Missing URI template variable 'rank'", whenever test HTTP POST request on postman

我在 Eclipse 控制台上收到错误“已解决 [org.springframework.web.bind.MissingPathVariableException:缺少类型为 Rank] 的方法参数的 URI 模板变量 'rank'” 和消息:“Missing URI template variable 'rank' for method parameter of type Rank”状态为“500”每当尝试 HTTP POST request

  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;
    
}

@PathVariable 更改为 @RequestBody

此处您正在发出保存实体的请求,您应该以 JSON 格式将有效负载作为 @RequestBody 传递。从邮递员那里你可以使用原始类型和 select JSON 类型。

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

您可以探索有关注释的更多信息here