提问人:Robert Wilson 提问时间:11/17/2023 更新时间:11/18/2023 访问量:54
如何恢复此删除端点,并在邮递员中初始化它
How can I recover this delete endpoint, and initialize it within postman
问:
I'm developing a Spring Boot application to manage CRUD operations for a "Pessoa" entity. The entity is mapped to a table named "Test" in the database. I have created a Pessoa entity class with the associated getters and setters, a PessoaController class to handle HTTP requests, and a PessoaRepository interface that extends JpaRepository for database operations.
实体:
使用给定的参数构造 Pessoa。
@Entity
@Table(name = "Test")
public class Pessoa {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "nome", length = 60, nullable = false)
private String nome;
@Column(name = "doc", length = 14)
private String documento;
public Pessoa(Long id, String nome, String documento) {
this.id = id;
this.nome = nome;
this.documento = documento;
}
public Pessoa() {
}
// Getters and Setters...
}
控制器:
检索所有 pessoas 的列表。
@RestController
@RequestMapping("/pessoa")
public class PessoaController {
@Autowired
private PessoaRepository pessoaRepository;
@GetMapping
public List<Pessoa> all() {
return pessoaRepository.findAll();
}
@GetMapping("/{id}")
public Pessoa getById(@PathVariable Long id) {
return pessoaRepository.findById(id).orElse(null);
}
@PostMapping
public Pessoa create(@RequestBody Pessoa nova) {
return pessoaRepository.save(nova);
}
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id) {
pessoaRepository.deleteById(id);
}
@PutMapping
public void put(@RequestBody Pessoa pessoa) {
if (pessoa.getId() > 0) {
pessoaRepository.save(pessoa);
}
}
}
存储 库:
数据库操作的其他方法(如果需要)
@Repository
public interface PessoaRepository extends JpaRepository<Pessoa, Long> {
}
Crud应用:
运行 Spring Boot 应用程序并初始化每个 crud 应用程序的 Main 方法。
@SpringBootApplication
public class CrudApplication {
public static void main(String[] args) {
SpringApplication.run(CrudApplication.class, args);
}
}
我遇到了删除端点的问题;它似乎没有按预期工作。此外,我不确定如何使用 Postman 连接和测试此 CRUD 应用程序。任何见解或指导将不胜感激!
答:
如果您已成功测试其他请求,则您知道应用程序的基本路径。您可能在本地运行 Spring,地址将是 .localhost:8080
在此地址,delete 方法与结果映射,例如,in 删除 id 等于 1 的元素。/{id}
localhost:8080/1
在 Postman 中,确保创建 DELETE 请求。也许它对您不起作用的原因是您将其保留为 POST 或其他方法。
请用英语编写代码,因为如果您需要共享代码,每个人都会更容易阅读。
您的看跌期权方法:
@PutMapping
public void put(@RequestBody Pessoa pessoa) {
if (pessoa.getId() > 0) {
pessoaRepository.save(pessoa);
}
}
通常,除了您正在做的事情之外,您应该检查您的实体是否为 null,如下所示:
@PutMapping
public void put(@RequestBody Pessoa pessoa) {
if (pessoa.getId() != null && pessoa.getId() > 0) {
pessoaRepository.save(pessoa);
}
}
当涉及到删除方法时,它似乎很好,您需要向我们提供有关哪些方法无法正常工作的更多信息。
要学习邮递员,请查看他们做得很好的文档: 邮递员文档
您可以使用 Lombok 删除实体中的样板代码,以确保您没有引入任何错误
未经验证,但此代码片段非常简单,它必须按预期工作
使用 Postman 进行手动测试很难管理,而且非常容易出错! 开始使用 JUnit 来自动化该过程,您可以简单地开始测试控制器(使用 mockMvc),直接在存储库中加载一些数据
每当您决定使用 Postman 时,都可以使用 swagger 获取 openApi 规范并导入 json 以自动创建集合
评论
httpReuqest
127.0.0.1:8080/pessoa
public List<Pessoa> all()