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
)