如何恢复此删除端点,并在邮递员中初始化它

How can I recover this delete endpoint, and initialize it within postman

提问人:Robert Wilson 提问时间:11/17/2023 更新时间:11/18/2023 访问量:54

问:

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 应用程序。任何见解或指导将不胜感激!

java spring-boot spring-mvc 邮递员

评论

0赞 Peng 11/17/2023
你可以添加一个 WITH HOST + API 路径,如果你在本地部署应用程序,你可以试试这个,修复 8080 作为你的端口,这是请求应该是 GET 方法旨在调用httpReuqest127.0.0.1:8080/pessoapublic List<Pessoa> all()

答:

1赞 rentox98 11/17/2023 #1

如果您已成功测试其他请求,则您知道应用程序的基本路径。您可能在本地运行 Spring,地址将是 .localhost:8080

在此地址,delete 方法与结果映射,例如,in 删除 id 等于 1 的元素。/{id}localhost:8080/1

在 Postman 中,确保创建 DELETE 请求。也许它对您不起作用的原因是您将其保留为 POST 或其他方法。

enter image description here

0赞 NapoleonDynamite 11/17/2023 #2

请用英语编写代码,因为如果您需要共享代码,每个人都会更容易阅读。

您的看跌期权方法:

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

当涉及到删除方法时,它似乎很好,您需要向我们提供有关哪些方法无法正常工作的更多信息。

要学习邮递员,请查看他们做得很好的文档: 邮递员文档

0赞 eturella 11/18/2023 #3

您可以使用 Lombok 删除实体中的样板代码,以确保您没有引入任何错误

未经验证,但此代码片段非常简单,它必须按预期工作

使用 Postman 进行手动测试很难管理,而且非常容易出错! 开始使用 JUnit 来自动化该过程,您可以简单地开始测试控制器(使用 mockMvc),直接在存储库中加载一些数据

每当您决定使用 Postman 时,都可以使用 swagger 获取 openApi 规范并导入 json 以自动创建集合