Друг сказал мне: «Чтобы подключиться к интерфейсу коллеги, все интерфейсы, которые он определяет, являются POST-запросами. Причина в том, что HTTPS безопаснее использовать с запросами POST. Раньше я использовал RESTful API. Если для HTTPS безопасны только POST-запросы, то зачем вам остальные — GET, PUT, DELETE? Как я могу опровергнуть его?»

Можете ли вы использовать POST все время?

Все мы знаем, что GET запросы обычно используются для получения информации о сервере, а POST обычно используются для обновления информации. Что может сделать запрос GET, может сделать POST, а чего не может сделать запрос GET, может сделать POST.

Если в вашей команде хорошая командная дисциплина, все выше среднего, и есть хороший механизм исправления ошибок, таких правил не бывает.

Однако если уровень участников команды неравномерен, особенно в небольших командах и предпринимательских командах, они часто начинают работу, когда подходят, норм нет, а качество кода определяется исключительно личными качествами разработчиков. Такие команды должны формулировать такие нормы.

В конце концов, это может уменьшить множество проблем, POST не нужно беспокоиться об ограничениях длины URL и не будет злоупотреблять кешем. Уменьшение вероятности ошибки с помощью правила делает это решение очень рентабельным.

Результат: В компании появились новые люди, к которым предъявляются такие требования. Как вы думаете, у какой компании есть такие требования?

Есть причина. Некоторые аутсорсинговые компании или компании, которые предоставляют сторонние интерфейсы, также будут использовать только POST для удобства.

Как его опровергнуть?

Прежде всего, поговорим о GET, POST, PUT, DELETE.

ПОЛУЧАТЬ

Метод GET используется для получения данных с сервера. Это метод только для чтения, поэтому нет риска изменения или повреждения данных, а запросы с использованием GET следует использовать только для извлечения данных.

GET API является идемпотентным. Несколько одинаковых запросов должны каждый раз давать один и тот же результат, пока другой API (POST or PUT) не изменит состояние ресурса на сервере.

ПОЧТА

Метод POST используется для отправки сущности на указанный ресурс, что обычно приводит к изменению состояния на сервере или созданию нового ресурса. POST не является ни безопасным, ни идемпотентным, вызов двух идентичных запросов POST приведет к созданию двух разных ресурсов, содержащих одинаковую информацию (за исключением идентификатора ресурса).

ПОМЕЩАТЬ

В основном используйте PUT API для обновления существующих ресурсов (если ресурс не существует, API может решить, создавать ли новый ресурс).

УДАЛИТЬ

Метод DELETE удаляет указанный ресурс. DELETE операции идемпотентны. Если вы удаляете ресурс, он удаляется из коллекции ресурсов.

Является ли POST более безопасным?

Ответ нет.

Многие люди думают, что данные запроса GET находятся в URL-адресе, а данные запроса POST — нет, поэтому они считают, что POST более безопасен. Это не так, HTTP URL PATH всего запроса будет инкапсулировано в HTTP заголовке протокола. Пока это HTTPS, это безопасно. Конечно, некоторые шлюзы, такие как NGINX, будут помещать URL в журнал или в историю браузера, поэтому некоторые люди скажут, что GET запросы небезопасны, но POST ненамного лучше. CSRF самый распространенный В плане безопасности он полностью для POST. Безопасность сложна, и какой бы метод или глагол вы ни использовали, это не означает, что вы в большей безопасности.

Окончательно

Спасибо, что прочитали. Я с нетерпением ждувашей подписки и новых качественных статей.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.