一、前后端未分离时编写接口:
步骤:
- 新建HTML页面
- 新建Controller层
- 定义接口方法
- 页面访问
案例:
编写一个接口,从浏览器访问时显示一个HTML页面
/**
* 测试接口
*/
@Controller // 控制层注解
@RequestMapping(value = "/test") // 请求映射(接口的根路径)
public class TestController {
@RequestMapping(value = "/test")
public String test() {
return "test"; // 对应页面文件 resources/temp/test.html
}
}
二、前后端分离后编写接口:
步骤:
- 新建Controller层
- 新建返回的对象实体类
- 定义接口方法(GET、POST。。。)
案例1:
使用RestController RestFul风格,编写一个模拟无参拉取APP版本的接口(GET)
pox.xml
依赖lombok
,报红点sync同步一下:
作用:快速注解处理JavaBean的构造、get、set和builder模式
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>${lombok.version}</scope>
</dependency>
- 新建基类
BaseBean<T>
最外层包装实体
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BaseBean<T> implements Serializable {
private T data;
private int code;
private String msg;
private boolean success;
// 成功请求
public static <T> BaseBean<T> success(T t) {
BaseBean<T> baseBean = new BaseBean<>();
baseBean.setData(t);
baseBean.setCode(200);
baseBean.setSuccess(true);
baseBean.setMsg("Successful");
return baseBean;
}
public static <T> BaseBean<T> failed() {
return failed(110, "Failed");
}
public static <T> BaseBean<T> failed(String msg) {
return failed(110, msg);
}
// 失败请求
public static <T> BaseBean<T> failed(int code, String msg) {
BaseBean<T> baseBean = new BaseBean<>();
baseBean.setMsg(msg);
baseBean.setData(null);
baseBean.setCode(code);
baseBean.setSuccess(false);
return baseBean;
}
}
- 新建版本实体类
AppVersionBean
@Data // 标记data
@Builder // Builder设计模式
@NoArgsConstructor // 无参构造
@AllArgsConstructor // 所有参数的构造
public class AppVersionBean implements Serializable {
private Integer id;
private Integer version;
private String versionName;
private String downloadUrl;
}
- Controller层创建接口方法
@RestController // 使用RestFul风格控制层注解
@RequestMapping(value = "/app") // 请求的根路径
public class JsonController {
/**
* 获取APP版本号
* 关键:
* 1. 方法使用`GetMapping`或者`RequestMapping`注解标记
* 2. return相关实体类会自动转化为json返回到接口
*/
@GetMapping(value = "/version")
// @RequestMapping(value = "/version", method = RequestMethod.GET)
public BaseBean<AppVersionBean> getVersion() {
return BaseBean.success(AppVersionBean.builder()
.id(1)
.version(123)
.versionName("1.1.0")
.downloadUrl("http://www.baidu.com")
.build()
);
}
}
- 从postman访问编写的本地接口
方式:GET
路径:localhost:7890/app/version
返回:
{
"data": {
"id": 1,
"version": 123,
"versionName": "1.1.0",
"downloadUrl": "http://www.baidu.com"
},
"code": 200,
"msg": "Successful",
"success": true
}
案例2:
使用RestController RestFul风格,编写一个模拟带参用户的接口(POST)
注:省略了上面Controller和依赖配置的步骤
额外知识:
JavaBean字段跟数据库字段命名规范,JavaBean使用驼峰,数据库使用下划线,如(createDate,create_date)
- 1、Date导包是java.util.Date
- 2、检查xml是否赋值错误
- 3、检查数据库表字段是否:create_date
- 4、驼峰配置在application.properties
mybatis.configuration.map-underscore-to-camel-case=true
- 新建用户实体类
UserBean
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserBean {
private Integer id;
private Integer age;
private Integer gender; // 1:男, 2:女
private String username;
private String password;
private String email;
private Date creatData;
}
- Controller层创建接口方法
@RestController // 使用RestFul风格控制层注解
@RequestMapping(value = "/app") // 请求的根路径
public class JsonController {
/**
* 登录
* 关键:
* 1. 方法使用`PostMapping`注解
* 2. 参数使用`RequestParam`注解
*/
@PostMapping(value = "/login")
public BaseBean<UserBean> login(@RequestParam String username, @RequestParam String password) {
if (StringUtils.isEmpty(username)) return BaseBean.failed("未输入用户名");
if (StringUtils.isEmpty(password)) return BaseBean.failed("未输入密码");
if ("bzb".equals(username) && "123".equals(password)) {
UserBean bean = UserBean.builder()
.id(1)
.age(23)
.gender(1)
.username("bzb")
.password("123")
.creatData(new Date())
.email("bzb2419@163.com")
.build();
return BaseBean.success(bean);
}
return BaseBean.failed("用户名或密码错误");
}
}
-
使用postman访问接口
方式:POST
路径:localhost:7890/app/login?
参数:- username=bzb
- password=123
返回:
{
"data": {
"id": 1,
"age": 23,
"gender": 1,
"username": "bzb",
"password": "123",
"email": "bzb2419@163.com",
"creatData": "2021-08-11T06:30:57.662+00:00"
},
"code": 200,
"msg": "Successful",
"success": true
}