Автоматически определять по полезной нагрузке, если нужны POST, PUT или PATCH - PullRequest
0 голосов
/ 20 июня 2019

У меня есть внешнее приложение 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 с изменением всех свойств.

Что я могу сделать здесь, чтобы определить, какой протокол мне нужен в этой ситуации?

...