Is it bad to create different classes for REST request and response?

前端 未结 3 1597
被撕碎了的回忆
被撕碎了的回忆 2020-12-16 03:10

I\'m working in a Spring Boot project, as my implement at the moment, almost for each API I have request and response classes.

For example:

相关标签:
3条回答
  • 2020-12-16 03:27

    Don't subclass the req/resp objects.

    Use an auto de/serialiser like Jackson in your frame work to convert message payloads into business object.

    However, you will still end up with a large number of business objects.

    0 讨论(0)
  • 2020-12-16 03:37

    I will suggest you to use JSON format instead of creating class and returning its instance every time. But still if you need a class hierarchy you can create a class and put a variable which will store JSON.

    0 讨论(0)
  • 2020-12-16 03:45

    Using tailored DTOs for request and response will give you more flexibility in the long run. Actually, nothing prevents you from using inheritance and inner classes, but I would just avoid it.

    I already answered a similar question here, highlighting the benefits of using DTOs over persistence entities in REST APIs. Below you'll find a few benefits of this approach:

    • DTOs can be tailored to your needs and they are great when exposing only a set of attributes of your persistence entities. You won't need annotations such as @XmlTransient and @JsonIgnore to avoid the serialization of some attributes.
    • By using DTOs, you will avoid a hell of annotations in your persistence entities, that is, your persistence entities won't be bloated with non persistence related annotations;
    • You will have full control over the attributes you are receiving when creating or updating a resource;
    • If you are using Swagger to document your REST API, you can use @ApiModel and @ApiModelProperty annotations to document your API models without messing your persistence entities;
    • You can have different DTOs for each version of your API;
    • You'll have more flexibility when mapping relationships;
    • Your DTOs can have a list of links for HATEOAS. That's the kind of thing that shouldn't be added to persistence objects.
    • You can use mapping frameworks such as MapStruct to map your REST API DTOs from/to your persistence objects.
    0 讨论(0)
提交回复
热议问题