GET vs POST API для проверки образа докера разрешено

Не уверены, использовать ли GET или POST для этой ситуации. Я создаю API, который будет возвращать, является ли образ докера совместимым или нет. Какой будет лучший подход?

Сценарий 1:

GET: https://<hostname>/api/checkImage?image=nginx:latest

Сценарий 2

GET: https://<hostname>/api/checkImage/nginx:latest

Сценарий 3

POST: https://<hostname>/api/checkImage
Payload: {"image": "nginx"}

Очевидно, что URL должен был бы кодировать двоеточие, но все вышеперечисленные сценарии вернутся: {"allowed": false}

Всего 1 ответ


Важная семантическая концепция, которую нужно понять, безопасна

Методы запроса считаются «безопасными», если их определенная семантика по существу доступна только для чтения.

Из методов запроса, определенных в этой спецификации, методы GET, HEAD, OPTIONS и TRACE определены как безопасные.

Так что в вашем случае ресурс - это что-то вроде «отчета о соответствии изображения»; и запрос GET запрашивает у сервера текущее представление отчета. Сервер может выбрать предоставление ранее кэшированного представления или создать новый отчет о соответствии и вернуть его, но это детали реализации, не связанные с семантикой запроса.

С другой стороны, если мы хотим, чтобы сервер обновлял свое представление ресурса до чего-то более нового, то мы, скорее всего, будем использовать POST, а не GET, потому что мы пытаемся вызвать изменение и не хотим общего -целевой кэш для возврата устаревшего представления отчета.

С точки зрения клиента это может выглядеть так

GET /api/checkImage?image=nginx:latest

Oh, this representation is too old, I need something recent

POST /api/checkImage?image=nginx:latest

Есть идеи?

10000