我有一个类,其他类作为其数据成员。类模型可以在另一篇文章here中找到。它有许多数据成员,所以我带了一些成员来创建其他类。我的应用程序包含带有Hibernate的Spring Server API,而客户端则是Angular 2x。
在客户端,我会有一个类似于包含用户将填充并发送到服务器后端的所有数据成员的表单。
A)我打算用JSON发送数据,这是键值对。 有没有更好的方法呢?
B)我应该在将数据发送到服务器之前在客户端创建相同的类结构吗?
B)我现在正在努力的是如何在客户端发送数据时重建服务器端的数据)并在我保存之前使用它们来初始化我的课程(例如优惠券类)到数据库。
例如,如果用户想要创建优惠券,在将数据存储到数据库之前,如何使用客户端的数据初始化优惠券类优惠券将其他类作为其数据成员。
例如,创建优惠券的方法的签名在服务器端将如下所示
公开ResponseEntity createCoupon(@RequestBody优惠券优惠券){}
如果我将数据作为JSON的键值对发送,我认为此函数中的Coupon参数不会被初始化。它还包含其他类作为数据成员。
这是我第一次处理这种情况所以我需要一些指导方针,好指点。
答案 0 :(得分:0)
A)我打算用JSON发送数据,这是键值对。有没有更好的方法呢?
是。更好的方法是将数据作为类似于您的JSON结构发送
Coupon/Product/Promo
图表。并使用Jackson序列化/反序列化它。
B)我应该在将数据发送到服务器之前在客户端创建相同的类结构吗?
是。您甚至可以在JavaScript中使用类似的classes
。
B)我现在正在努力的是如何在客户端发送它们时重建服务器端的数据)并在我将它们保存到数据库之前使用它们来初始化我的类(例如优惠券类)。
这样做最好(至少是好方法)。这取决于您的背景:业务要求,您的技能,甚至您的团队。有一些建议:
使用单独的模型图(使用DTO
)来序列化/反序列化JSON
。这有点难。但是你将来可能会有一个非常难以实施的突发性要求。
您需要尝试并选择正确的方法。所以你可以从最简单的情况开始
class CouponModel {
String onlineCode;
List<String> productIds;
}
当您从客户端获得CouponModel
时,您将需要:
创建Coupon
并按ID获取/加载产品(这是验证产品ID的好地方)。
另一种选择:
class CouponModel {
String onlineCode;
List<ProductModel> products;
}
ProductModel
只有client side
的ID - &gt; server side
并拥有server side
的完整产品数据 - &gt; client side
。
答案 1 :(得分:-1)
A)JSON对象是使用API的标准对象,通常req.body
实际上是一个对象,但它不仅限于JSON对象。
B / C)这完全取决于您和您客户的偏好。就类定义而言,正面和背面都将分别处理,但最佳做法是为重用对象创建类结构,以确保数据处理完全符合预期。这是一个坚实的故障保护和良好的做法,但它不是一个要求。
注意:可以在此处找到使用完整打字稿正面和背面(角度/节点)的API的前/后类构造的可靠示例:https://github.com/DavideViolante/Angular-Full-Stack