encoding
, состоящей из четырёх уроков, разберём основные принципы архитектурного стиля REST, который чаще всего используется для обмена сообщениями в формате JSON. Затем рассмотрим структурные теги — они позволяют указывать метаинформацию об объекте или типе объекта, что даёт возможность соотносить поля структур и конечные данные при сериализации и обратном преобразовании. Два последних урока посвящены стандартным и сторонним сериализаторам данных.easyjson
);GET
GET
для доступа к ресурсам, расположенным на сервере по указанному URL. Они могут кэшировать запросы GET
и отправлять параметры в запросе, чтобы сообщить серверу о необходимости фильтровать данные перед отправкой.POST
POST
для отправки данных на сервер. При этом они включают в запрос представления данных. Отправка одного и того же запроса POST
несколько раз имеет побочный эффект — многократное создание одного и того же ресурса.PUT
PUT
для обновления существующих на сервере ресурсов. В отличие от POST
, отправка одного и того же запроса PUT несколько раз дает один и тот же результат в веб-службе.DELETE
DELETE
для удаления ресурса.Create
, Read
, Update
и Delete
. Эти четыре основные операции помагают разработчикам взаимодействовать с базами данных. Несмотря на то, что термин CRUD пришел из базы данных, теперь он отражает принцип разработки динамических приложений, например таких как HTTP, SQL и DDS (Data Distribution Service, cлужба распространения данных). Create
— это процедура создания новой записи.Read
— это процедура чтения/извлечения данных на основе требуемых входных параметров.Update
— это процедура для изменения записей.Delete
— процедура для удаления (одной или нескольких) записей.POST
, PUT
и других методов HTTP.{"name":"Sasha", "age":30}
PUT
и DELETE
по определению идемпотентны. Тем не менее, есть один нюанс с методом DELETE
. Проблема в том, что успешный DELETE
-запрос возвращает статус 200 OK
или 204 No Content
, но для последующих запросов будет все время возвращать 404 Not Found
. Состояние на сервере после каждого вызова DELETE
то же самое, но ответы разные.GET
, HEAD
, OPTIONS
и TRACE
определены как безопасные. Это означает, что они предназначены только для получения информации и не должны изменять состояние сервера. Они не должны иметь побочных эффектов, за исключением безобидных эффектов, таких как: логирование, кеширование, показ баннерной рекламы или увеличение веб-счётчика.