通过有效载荷自动检测是否需要POST,PUT或PATCH

时间:2019-06-20 19:23:06

标签: javascript typescript rest protocols

我有一个使用RESTful API的前端TypeScript应用。

我那里有以下域:

interface Foo {
  id: string;
  prop: string;
  anotherProp: string;
}

interface Bar {
  id: string;
  someProp: string;
  yetAnotherProp: string;
}

我还有一些端点可以创建/更新该域的对象:

POST  - /api/foo
PUT   - /api/foo/{id}

POST  - /api/bar
PATCH - /api/bar/{id}

现在,我想检测是否需要通过POST,PUT或PATCH调用端点。

由于POST的定义是我想创建一个新对象,因此不需要ID。这就是我的状况。如果我的对象没有属性id,我将呼叫POST。容易。

尽管如此,我仍在努力使PUT和PATCH有所作为。由于如果您将整个对象作为有效负载发送,则使用PUT;如果仅发送对象的一部分(例如,Bar{ id: 1, someProp: 'value' },而缺少yetAnotherProp的情况下,则使用PATCH),我想到了检查对象以定义所有可用属性,然后调用PUT。

但是如果我想在所有属性都更改的情况下调用PATCH,那将无​​法正常工作。

在这种情况下我该怎么做才能检测到我需要什么协议?

0 个答案:

没有答案