User类
@Data 使用
@Data
注解的主要作用是提高代码的简洁,使用这个注解可以省去代码中大量的get()
、set()
、toString()
等方法;
@AllArgsConstructor使用 用这个注解修饰的类会把里面的变量都生成全参数的构造器;
package com.example.apiproject.model;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
private String nickname;
private String stuNumber;
private String signature;
private String phone;
private String email;
private String wechat;
private String qqNumber;
private String dingNumber;
}
ApiController类
@RestController使用在Spring中@RestController的作用等同于@Controller + @ResponseBody;
1.@Controller在一个类上添加@Controller注解,表明了这个类是一个控制器类。但想要让这个类成为一个处理请求的处理器光有@Controller注解是不够的,他还需要进一步修炼才能成为一个处理器;
2.将@Controller注解的类注入Spring容器中,只是该类成为处理器的第一步,想要修炼大成,还需要在该类中添加注解@RequestMapping。@RequestMapping注解是用来映射请求的,即指明处理器可以处理哪些URL请求,该注解既可以用在类上,也可以用在方法上。
3.@ResponseBody表示方法的返回值直接以指定的格式写入Http response body中,而不是解析为跳转路径;
@RequestMapping的使用来映射URL;
@PostMapping的使用映射一个POST请求;
@RequestBody的使用主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交;
Map<String, Object>详解--Map:即 Interface Map<K,V> K - key的类型 V - value的类型;
也就是说Map是一个接口,它的每个元素包含一个key对象和一个value对象(这两个对象的类型可以不一样)且在这两个对象之间存在一种映射的对应关系,所以从Map集合中访问元素时,只要指定了key就可以找到对应的value,因此key必须是唯一的不能重复,当key相同时,后面的value值会覆盖之前的value值;
package com.example.apiproject.controller;
import com.example.apiproject.model.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* 1.声明 ApiController 用于接收网络
* 2.声明 ApiController 中所有的方法的返回值结果,终以json格式的String返回给客户端
*
* JSON 格式:
* 1.数组:["1", "2", 3, 3.14, true]
* 2.对象:{"username" : "zz", "password" : "123456", ...}
* 3.复杂类型1:["1", 3.14, {"username" : "zz", "password" : "123456", ...}, [1, 2, 3, 4, ...], ...]
* 4.复杂类型2:{"messege" : "login success", code : 2000, {"username" : "zz", "password" : "123456", ...}, ...}
* 5.复杂类型3:{"messege" : "login success", code : 2000, data : [{"name" : "aa", "img" : "a.jpg", ...}, {"name" : "bb", "img" : "b.jpg", ...}]}
*/
@RestController
@RequestMapping("/api")
public class ApiController {
//http://localhost:8080/api/login
@PostMapping("/login")
public Map<String, Object> login(@RequestBody User user){//@RequestMapping+@PostMapping决定该方法在哪里被访问到
System.out.println("get params is: username > " + user.getUsername() + " password > " + user.getPassword());
System.out.println("start to query db, login success ...");
//开始构造返回结果,格式:{"messege" : "login success", code : 2000, {"username" : "zz", "password" : "123456", ...}, ...}
Map<String, Object> result = new HashMap<>();
result.put("operate", true);
result.put("message", "login success");
result.put("data", new User(1,user.getUsername(),user.getPassword(),"神里凌华","zz-2002-001",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","123345653434","1234e45432@qq.com","zzhasid","2354754345","未绑定"));
return result;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)