Java 公共web服务中的数据模型

Java 公共web服务中的数据模型,java,web-services,entity,data-modeling,restlet,Java,Web Services,Entity,Data Modeling,Restlet,在一个普通的restful服务中,至少有3个模型,它们引用的是相同的东西,但在不同的情况下略有不同 第一个模型用于接受post请求中的数据,字段template\u id的值为“id12345” 第二个模型是DB实体,我们还有一个DB实体,它也有一个template\u id字段,但是字段的类型是int,它是DB中的一个内部模板主键,它是一个整数 因此,我不能直接将post数据转换为DB实体以插入DB 第三个模型是rest响应,例如,我想在模型中添加/删除一些字段。因此,我也不能直接将DB实体转

在一个普通的restful服务中,至少有3个模型,它们引用的是相同的东西,但在不同的情况下略有不同

  • 第一个模型用于接受post请求中的数据,字段
    template\u id
    的值为“id12345”

  • 第二个模型是DB实体,我们还有一个DB实体,它也有一个
    template\u id
    字段,但是字段的类型是int,它是DB中的一个内部模板主键,它是一个整数

  • 因此,我不能直接将post数据转换为DB实体以插入DB

  • 第三个模型是rest响应,例如,我想在模型中添加/删除一些字段。因此,我也不能直接将DB实体转换为json响应
  • 所以我想知道处理这三个模型之间细微差异的好方法


    我是否需要创建名为
    postDataModel
    DBModel
    responseModel
    的3个模型?我认为这不是一个好主意。

    post数据和rest响应可能是相同的,它们都属于表示层


    这里有一个例子

    首先,您可以阅读这篇文章,了解如何创建Web API(即RESTful服务,即Restlet服务器应用程序):

    • 设计Web API
    也就是说,使用Restlet处理请求时涉及到几个要素:

    • 接收请求并负责将其路由到正确的处理实体(通常是服务器资源)的应用程序。请参阅方法
      应用程序#createInboundRoot
      和类
      路由器
    • 负责处理请求的服务器资源。根据请求中使用的HTTP方法,在服务器资源中调用一个方法。请参见注释
      @Get
      @Post
      @Put
      @Delete
    • 包含其中所有元素的请求响应。Restlet提供了一个API来获取查询参数和头(请参阅)
    • 与请求和响应有效负载中存在的数据相对应的表示形式
    尽管您可以访问原始数据,但Restlet提供了一个转换功能,允许您将这些有效负载作为对象获取

    您可以注意到,负载中可以有数据类型,而不仅仅是字符串。事实上,这取决于用于有效载荷的结构。您可以直接使用字符串值或url编码的表单,也可以使用JSON、XML和YAML结构。我猜您使用表单,所以只支持字符串值。如果有问题,可以随意使用JSON或其他东西

    也就是说,一个好的方法是从DB实体生成不同的表示,因为表示通常有点不同。表示可以是子集、聚合或多个。但是,通过阻止属性的类型转换,您可以使您的生活更轻松。我的意思是,对表示和实体中的属性使用相同的类型

    关于主键,有几种处理方法:

    • 它们可以由RESTful服务的用户在表示中提供
    • 它们可以在服务器端生成(自动递增、顺序等),因此不需要在输入表示中出现
    希望它能帮助你,
    蒂埃里

    这个问题很有趣:——)