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;
    }
}
posted @   lwx_R  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示