RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
RESTFUL特点包括:
1、每一个URI代表1种资源;
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
3、通过操作资源的表现形式来操作资源;
4、资源的表现形式是XML或者HTML;
5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
查询操作 | getUserById?id=1 | user/1-->get请求方式 |
保存操作 | saveUser | user-->post请求方式 |
删除操作 | deleteUser?id=1 | user/1-->delete请求方式 |
更新操作 | updateUser | user-->put请求方式 |
常见的操作就不说了,下面分享一个今天写代码碰到的问题以及解决方法:
需求是实现一个登录功能,我的想法是从前端获取用户名和密码,然后在数据库中查询看是否有这样的用户,如果有则可以登陆,没有就是用户名或密码错误。
在前端传递参数时,默认使用的form表单,但是表单的提交方式默认是post,这就导致在restful风格中和插入(保存操作)撞了。
然后我就想把提交方式改为get,但是这样就无法通过之前的url拼接获取前端传递的username和password参数。
经过数次的试错,最终的解决方法为
<form th:action="@{/user(username=${username},password=${password})}" method="get">
账号:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="reset" value="重置">|<input type="submit" value="登录"><br>
没有账号?<a th:href="@{/register}">注册</a>一个
</form>
将url拼接改为/user(username=${username},password=${password}),同时提交方式为get
后端Controller层
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String loginUser(String username, String password, Model model) {
User user1 = userService.userLogin(username, password);
System.out.println(user1);
if (user1 != null) {
model.addAttribute("user",user1);
return "success";
} else {
return "error";
}
}
在参数前面不要添加@PathVariable注解!!!一旦添加就无法正常获取参数。
一起学习,共同进步!
欲买桂花同载酒,终不似,少年游。