Restfull PUT / PATCH方法结构

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

我正在使用Node.js,Typescript中的一个软件来生成保险线索,每个线索的状态约为15或更多,例如(新线索,重复项,有日期,有合同,没有回应...等)在某些状态下,我们具有该状态的不同数据,例如不在家,对于该状态,我们需要照片,位置,对于[[终端,有日期和时间,因此。 。什么是组织端点的最佳方法,当前的架构就像...

PUT / lead /:id /

const status = req.body.status; if(status === 14){ lead.termine.date = req.body.date //etc } if(status === 13){ lead.recall.creationTime = req.body.date //etc } if(status === 12){ lead.pending.creationTime = leadDatabase.pending.creationTime }
[基本上,我们每次都发送整个潜在客户/用户并更改数据,我不愿意像以前的程序员一样添加许多其他if-else,如何解决这个问题并使它看起来更好。

我想也许是将PUT / status /:id制作出来,但这不能解决if-else问题。

rest api structure software-design endpoint
1个回答
0
投票
我认为使用PUT / lead /:leadID / status是一个很好的api设计。

对于if-else,您可以使用switch语句使它更整洁,但是如果您想创建通用解决方案,那么我建议保留状态ID映射到要复制的必填字段对于每种状态,例如

const statuses : { [key:number]:{ field: string, values: []string; } = { 14: {field: "termine", values: ["date"]} ....other states };

这将使您可以像这样对状态更新进行通用处理:

const statusCfg = statuses[req.body.status]; for (const valFld of statusCfg.values) { lead[statusCfg.field][valFld] = resp.body[valFld]; }

最终,这取决于每种状态的处理方式有多不同,如果不能以这种方式通用化它,您可能希望查看每种状态的单独处理程序,这些处理程序遵循单个接口。然后,您仍然可以使用地图查找正确的处理程序。 
© www.soinside.com 2019 - 2024. All rights reserved.