我正在设计API以允许客户使用POST / PUT / GET管理他们的数据。
API面临的挑战之一是实体中有多个字段应具有预定集合的值。 我看到的一种方法是允许客户端为每个数据字段(属性)传递ID,并提供一种补充方法,为客户端提供数据字段的可用选项。 因此,客户端与服务的交互将是: 客户端:GET \ Options(返回每个字段的可用选项集) 客户端:POST \ Data(向每个属性发送带有一组ID的DTO,将数据保存到服务器)
我看到的另一个选择是让客户端发送实际值而不是ID。
您推荐什么方法?为什么?
答案 0 :(得分:2)
让客户端将数据作为值传递但是将数据作为外键存储在服务器上。
假设您设计了一个用于添加汽车的API,汽车颜色应该是预定值的值。
HTTP请求:
GET cars/1
=> 200 OK
{ id: 1, name: "Ferrari", colour: "Red }
POST cars
{ name: Lamborghini, colour: "Blue" }
=> 201 Created (cars/2)
数据库(只是一个例子):
Table [Car]: @ID (Integer) , Name (Varchar) , ColourID (Integer)
Table [Colour] : @ID (Integer), Name(Varchar)
... Car.ColourID是Colour.ID的外键
优点是: