RequestBody и ResponseBody шагают по яме

Spring

RequestBody и RequestParam

Есть две аннотации, которые учащиеся часто используют при передаче данных json во внешний и внутренний интерфейсы для взаимодействия.

@RequestBodyа также@RequestParamОн в основном используется для получения данных json от внешнего интерфейса к внутреннему. Вообще говоря,@RequestBodyАннотации обычно используются в почтовых запросах, потому что внешний интерфейс помещает данные json в тело запроса. В методе, полученном бэкендом@RequestBodyможет и@RequestParamиспользуются одновременно, но в одном методе,@RequestBodyМожет быть только один,@RequestParamИх может быть больше одного.@RequestParamИспользуется в методе запроса GET, может получать общие элементы, массивы, коллекции, объекты и т.д.

Если параметр помещается в тело запроса, входящий фон должен использовать@RequestBodyПолучить, если он не размещен в теле запроса, то при получении фоном параметров от переднего плана использовать@RequestParamсоответствующий прием.

использовать@RequestParam(xxx), внешний интерфейс должен иметь соответствующее имя xxx, вы можете указать, должно ли оно передаваться, установив атрибут reqired.

если не пишите@RequestParam(xxx)的话, то параметры метода будут автоматически совпадать, если имена разные, то по умолчанию они будут пустыми.

Если серверная часть получает параметр, это объект, и параметр используется с@RequestBodyИзменено, затем внешний интерфейс json передает данные, чтобы соответствовать:

  • Когда бэкенд собирает входной поток http в целевой класс, он будет сопоставлять атрибуты соответствующего класса сущностей в соответствии с ключом в строке json.Если совпадение непротиворечиво и ключ в json совпадает, то бэкенд может успешно получать
  • В строке json, если значение равно "", если соответствующее свойство бэкенда имеет тип String, то полученное значение равно "", а если бэкенд соответствует ссылочному типу Integer, Double и т. д., то полученное значение равно нулю
  • В строке json, если значение равно null, серверная часть получает null
  • Если параметр не имеет значения, при передаче json на бэкенд либо конец обложки не должен записываться в json, либо значение должно быть присвоено "" или null

Метод использования RequestBody 1

здесь естьPersonкласса, соответствующие свойстваString name,Integer age, в состоянии пройтиStringполучить строку json

Метод использования RequestBody 2

Вы можете использовать объекты для получения внешних строк json.

Метод использования запроса 3

Вы можете смешать первые два и использовать его.Если это сложный объект (класс объединяет другие классы), вы можете использовать объект для получения или переопределить комбинированный объектtoString()Метод позволяет вернуть строку json, чтобы ее можно было получить вместе со строкой.

Когда бэкэнд принимает параметр как объект, если значение определения свойства класса не соответствует ключу json, вы можете использоватьJsonAliasилиJsonPropertyвнести изменения.

ResponseBody

@ResponseBodyАннотации в основном используются для возврата данных json во внешний интерфейс.Если вы ленивы и просто хотите вернуть объект, добавьте@ResponseBodyВозвращенный объект можно автоматически преобразовать в json и вернуть его во внешний интерфейс.

Можно использовать в спрингбуте@RestControllerзаменить@ResponseBody, если он не используется, будут выдаваться различные ошибки (NumberFormatException...for input String)