RestFul
1.Restful风格
模型-视图-控制器(MVC) 是一个众所周知的以设计界面应用程序为基础的设计思想。
Restful风格的API是一种软件架构风格, 设计风格而不是标准,只是提供了一组设计原则和约束条件。
它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
在Restful风格中,用户请求的url使用同一个urI而用请求方式: get, post, delete,等方式对请求的处理方法进行区分,
这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口。
在Restful风格中,现有规定如下:
●GET (SELECT) :从服务器查询,可以在服务器通过请求的参数区分查询的方式。
●POST (CREATE) :在服务器端新建一个资源,调用insert操作。
●PUT (UPDATE) :在服务器端更新资源,调用update操作。
●PATCH (UPDATE) :在服务器端更新资源(客户端提供改变的属性)。(目前jdk7未实现,tomcat7不支
持)。
●DELETE (DELETE) :从服务器端删除资源,调用delete语句。
2.Spring Mvc支持RestFul URL风格设计
案例:如何在java构造没有扩展名的RESTful url,如/form/1?
SpringMvC是通过@RequestMapping及@PathVariable annotation提供的,通过如
@RequestMapping(value="/blog /{d},.method=RequestMethod.DELETE)即可处理/blog/1的delete请求,
3.使用方式
3.1 Controller层
@Controller
public class AccountController {
@Resource
private AccountService accountService;
@GetMapping("account/{id}")
@ResponseBody
public Account selectById(@PathVariable int id){
//@PathVariable 路径参数
return accountService.selectById(id);
}
//请求类型不同
@DeleteMapping("account/{id}")
@ResponseBody
public Map<String,Object> delete(@PathVariable int id){
Map<String,Object> map=new HashMap<String,Object>();
if(accountService.delete(id) > 0){
map.put("code",200);
map.put("msg","success");
}else{
map.put("code",500);
map.put("msg","failure");
}
return map;
}
@PutMapping("account")
@ResponseBody
public Map<String,Object> update(@RequestBody Account account){
Map<String,Object> map=new HashMap<String,Object>();
if(accountService.update(account) > 0){
map.put("code",200);
map.put("msg","success");
}else{
map.put("code",500);
map.put("msg","failure");
}
return map;
}
@PostMapping("account")
@ResponseBody
public Map<String,Object> insert(@RequestBody Account account){
Map<String,Object> map=new HashMap<String,Object>();
if(accountService.save(account) > 0){
map.put("code",200);
map.put("msg","success");
}else{
map.put("code",500);
map.put("msg","failure");
}
return map;
}
}
3.2 Service层
@Service
public class AccountService {
@Autowired
private AccountDao accountDao;
public Account selectById(int id){
return accountDao.selectById(id);
}
public int save(Account account){
return accountDao.save(account);
}
public int update(Account account){
return accountDao.update(account);
}
public int delete(int id){
return accountDao.delete(id);
}
}
3.3 Dao层
public interface AccountDao {
public Account selectById(int id);
public int save(Account account);
public int update(Account account);
public int delete(int id);
}
3.4 Mapper
<mapper namespace="org.example.ssm.dao.AccountDao">
<select id="selectById" parameterType="int" resultType="org.example.ssm.vo.Account">
select *
from account
where id=#{id}
</select>
<delete id="delete" parameterType="int" >
delete
from account
where id=#{id}
</delete>
<update id="update" parameterType="org.example.ssm.vo.Account" >
update account
set money=#{money}
where id=#{id}
</update>
<insert id="save" parameterType="org.example.ssm.vo.Account">
insert into account
values (#{id},#{money})
</insert>
</mapper>
3.5 JavaBean
public class Account {
private int id;
private String money;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律