API REST обновляет ПИН-код (PUT против PATCH против POST) - PullRequest
0 голосов
/ 19 февраля 2019

Я создаю простой CRUD RESTful API с пружинной загрузкой для управления 4-значными PIN-кодами .У меня проблемы с тем, какие HTTP-глаголы использовать.

Вот мои предположения:

  • Для создания наиболее подходящими глаголами должны быть POST или PUT.Я использую PUT, потому что он идемпотентен (это повлияет на ресурс только один раз, независимо от того, сколько запросов отправлено)
  • для частичных обновлений Я использую PATCH
  • дляполные обновления я использую PUT

Дело в том, что я обеспокоен проблемами безопасности.Эта служба будет работать внутри контейнера в частном облаке AWS и доступна другим службам в том же облаке.

В этом информационном ответе говорится, что для обновлений POST более корректно (чем PUT), но с точки зрения безопасности это не имеет значения, потому что вызов будет вызываться в https.

С другой стороны, эта страница говорит, что POST должноиспользоваться для того, чтобы «скрыть» PIN-код от запроса.

Итак, мой вопрос: какой HTTP-глагол s следует использовать?Ответы от экспертов по разработке API приветствуются.

ОБНОВЛЕНИЕ:

Это микросервис с пружинной загрузкой (MS) в ECS.Будет потребляться от других внутренних MS.Цель состоит в том, чтобы управлять и проверять PIN-коды пользователя.

Модель:

  • Это пин-код пользователя, к которому относится свойствоX.Свойство находится в перечислении.
  • userId - это идентификатор из другой таблицы, используемой в нескольких Mss / DB, и не имеет ограничений (без FK и т. Д.).
  • DB: Aurora только с одной таблицей: id (автоинкремент), userId, pin (код), propertyX

Желаемые конечные точки / операции:

  • создать объект PIN.(вход: userId, pinCode, свойство)
  • проверять pinCode.(вход: userId + pin)
  • обновить просто pinCode.(вход: userId, newPinCode)
  • удалить объект PIN.(вход: userId)
  • get propertyX.(вход: userId)
  • обновить только свойствоX.(вход: userId newPropertyX)
...