创建多个接口来处理不同的API操作Spring Boot

问题描述 投票:0回答:1

我正在 Spring Boot 中创建一个 REST API,数据库中有以下表格:

CREATE TABLE Question
(
    id              SERIAL,
    id_survey       INT,
    description     VARCHAR(1000)
    * Other fields *
);

CREATE TABLE QuestionChoice
(
    id          SERIAL,
    id_question INT,
    description VARCHAR(1000)
    * Other fields *
);

我已经创建了各自的模型,但是我需要更灵活的东西来处理不同的操作,例如:

  1. 只返回一个
    Question
  2. 返回
    Question
    及其
    QuestionChoices
  3. 的列表
  4. 创建一个
    Question
    ,而不是在 POST 中发送调用其
    id
    ,以及缺少
    QuestionChoices
    字段的
    id_question
    列表,因为所有关系都将在调用后链接

到目前为止,我一直在使用

Question
模型来完成第一个任务。对于第二个和第三个,我不知道该怎么办。

处理此类情况的最佳做法是什么?

java spring-boot rest
1个回答
0
投票
  1. 使用不同的数据对象将数据持久化到数据库,与 API 使用的请求对象不同。

例如

public class Question {
    private Long id;
    private Integer idSurvey;
    private String description;
}

对于数据库和

public class QuestionRequest {
    private Integer idSurvey;
    private String description;
    // plus choices
}

然后编写一个需要

QuestionRequest
的服务类,验证数据并创建
Question
QuestionChoices
并将它们保存在数据库中。

从 API 返回数据时,您可以遵循相同的想法 - 查询数据库,然后填充一些包含不同字段的

Response
对象。


  1. 处理两张数据库表,是查询一张表还是查询两张表……这是一个很大的话题。去查找“Spring Hibernate JPA,一对多映射” - 有很多书籍和教程,例如https://attacomsian.com/blog/spring-data-jpa-one-to-many-mapping
© www.soinside.com 2019 - 2024. All rights reserved.