我有一个使用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,那将无法正常工作。
在这种情况下我该怎么做才能检测到我需要什么协议?