前面把数据库研究了差不多了。。。。今天开始研究Control层了。如何接收RestFul的Http请求。。
这里在类上面加上@RestController 这个类就可以接收rest的请求了。
但是http请求有千万种,我们如何知道哪个请求进入哪个类呢?
这里就需要引入另外一个注解
@RequestMapping("/app")
这个注解就是说http的url中/app的进入这个分支
比如/app/login 进入哪个分支呢?
我们再写一个函数,把@PostMapping("/login") 把注解加在上面。
如果我在请求的时候,带有一个json呢?
这里又要引入一个注解
@RequestBody
而且后面还能跟一个类,这个类就是已经把json反序列化的类。
好了,下面试一下 定义一个登陆类
@Data
@ApiModel(value = "登录表单")
public class formlogin {
@ApiModelProperty(value = "登陆名")
@NotBlank(message="登陆名")
private String user;
@ApiModelProperty(value = "密码")
@NotBlank(message="密码不能为空")
private String psw;
}
再写个入口处理类
@RestController
@RequestMapping("/app")
public class firtsRestful {
@PostMapping("/login")
@ApiOperation("登录")
public String Login(@RequestBody formlogin formlogin )
{
System.out.println("user" +formlogin.getUser());
System.out.println("psw"+formlogin.getPsw());
return "11";
}
}
突然发现swagger-ui居然还能测试接口。。。。
可以编辑发送的数据:
下面是返回的数据
一切完美。
另外,应答也可以应答json字符串,我们只需要定义一个HashMap就可以了。看下面的示例
@PostMapping("/login")
@ApiOperation("登录")
public HashMap<String,Object> Login(@RequestBody formlogin formlogin )
{
System.out.println("user" +formlogin.getUser());
System.out.println("psw"+formlogin.getPsw());
System.out.println(formlogin);
HashMap<String,Object> Rsp = new HashMap<>();
Rsp.put("token", 123);
Rsp.put("expire", "3600");
return Rsp;
}
应答如下:
这里注意一下,字符串和整数在json中的区别。字符串是有“”号的,而整数是没有的。
还可以实现抛出异常,这样返回值就不是200了,看下面的例子
增加了一个异常
int aa =0;
if ((aa == 0))
{
throw new Exception("未添加资产,请重新添加");
}
看测试结果:返回的是500 然后Message就是异常的字符串