У меня есть внешнее приложение TypeScript, использующее API RESTful.
У меня есть следующие домены:
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
, я вызываю POST. Легко.
Я изо всех сил стараюсь изменить PUT и PATCH. Поскольку вы используете PUT, если вы отправляете весь объект в качестве полезной нагрузки, и используете PATCH, если вы отправляете только части объекта (например, Bar
как { id: 1, someProp: 'value' }
с отсутствующим yetAnotherProp
), я подумал о проверке объекта на наличие всех доступные свойства, которые будут определены, и затем вызовите PUT.
Но это не сработает, если я захочу вызвать PATCH с изменением всех свойств.
Что я могу сделать здесь, чтобы определить, какой протокол мне нужен в этой ситуации?