# Spring-Boot 请求与响应 ## 请求 **结构体:** ```java // @XmlRootElement : xml必须加此注解 @XmlRootElement public class Lrz { private String name; private Integer age; // @XmlElement 注解表示它是一个节点 // @XMlAttribute 注解表示它是一个节点属性 @XmlElement public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Lrz(String name, Integer age) { this.name = name; this.age = age; } @Override public String toString() { return "Lrz [age=" + age + ", name=" + name + "]"; } // xml必须有这个空构造方法 public Lrz() {} } ``` **控制器:** *直接上代码* ```java // @RestController: 等同于 @Controller + @RequestBody 注解 @RestController public class HelloController { // GET /get?name=剑齿虎 @GetMapping("/get") public String get(@RequestParam(name = "name", defaultValue = "剑齿虎") String name, @RequestParam("age") Integer age) { // defaultValue 默认值 // @RequestParam() 还有一个 required(bool类型), 是否必填参数 return name + "--" + age; } // POST /json {"name":"余小波", "age":16} @PostMapping(value = "/json", produces = MediaType.APPLICATION_XML_VALUE) public Lrz woc(@RequestBody Lrz lrz) { // 响应XMl, JSON同理 不过可以忽略produces, 默认即json lrz.setName("天王盖地虎"); return lrz; } // GET /formdata?name=余小波&age=14 @GetMapping("/formdata") public String formdata(Lrz lrz) { return lrz.toString(); } } ``` **控制器注解说明:** - @Controller : 控制器注解 (必须) - @ResponseBody : 响应数据 - @RestController : rest控制器注解, 相当于(@Controller + @ResponseBody) - @RequestMapping(value = "/hello") : 路由注解 - value : 路由地址 - method : 请求方法 (如: RequestMethod.GET) - produces : 响应类型, 如: `{"application/json;charset=utf-8"}` - param : 必须包含这些参数才处理请求 (param = "uid=14") - header : 必须包含这些头信息才处理请求 (header = "Referer=https://edk24.com") - @GetMapping("/hello") : GET请求路由注解 - @PostMapping("/hello") : POST请求路由注解 (PUT, DELETE以此类推) - @RequestParam : 请求参数注解 - name : 参数名称 - defaultValue : 默认值 - required : 是否必填 (bool类型)