乐趣区

关于spring-mvc:你知道什么是-Restful-风格吗SpringMVC-带我们实现它

Restful 格调的 API 是一种软件架构格调,设计格调而不是规范,只是提供了一组设计准则和约束条件。它次要用于客户端和服务器交互类的软件。基于这个格调设计的软件能够更简洁,更有档次,更易于实现缓存等机制。

在 Restful 格调中,用户申请的 url 应用同一个 url 而用申请形式:get,post,delete,put… 等形式对申请的解决办法进行辨别,这样能够在前后台分离式的开发中使得前端开发人员不会对申请的资源地址产生混同和大量的查看办法名的麻烦,造成一个对立的接口。

SpringMVC Restful 格调 url 配置实现的形式

SpringMVC 的 resturl 是通过 @RequestMapping 及 @PathVariable annotation 提供的,通过如 @RequestMapping(value=”/blog /{id}”,method=RequestMethod.DELETE) 即可解决 /blog/1 的 delete 申请。

  • GET(SELECT):从服务器查问,能够在服务器通过申请的参数辨别查问的 形式。
  • POST(CREATE):在服务器端新建一个资源,调用 insert 操作。
  • PUT(UPDATE):在服务器端更新资源,调用 update 操作。
  • PATCH(UPDATE):在服务器端更新资源(客户端提供扭转的属性)。(目前 jdk7 未实现,tomcat7 不反对)。
  • DELETE(DELETE):从服务器端删除资源,调用 delete 语句。

案例实操

Get 申请配置

/**
*restful–>get 申请 执行查问操作

  • @param id
  • @return

*/
@RequestMapping(value=”queryAccountById02/{id}”,method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById(@PathVariable Integer id){
MessageModel messageModel=new MessageModel();
if(null==id){
messageModel.setCode(300);
messageModel.setMsg(“ 参数非法!”);
return messageModel;
}
messageModel.setResult(accountService.queryById(id));
return messageModel;
}

Post 申请配置

/**

  • restful–>post 申请执行增加操作
  • @param id
  • @param aname
  • @return

*/
@RequestMapping(value=”saveAccount”,method=RequestMethod.POST,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById04(@RequestBody Account account){
MessageModel messageModel=new MessageModel();
try {
accountService.saveOrUpdateAccount(account);
} catch (ParamsException e) {e.printStackTrace();
messageModel.setCode(e.getErrorCode());
messageModel.setMsg(e.getErrorMsg());
}catch (Exception e) {e.printStackTrace();
messageModel.setCode(300);
messageModel.setMsg(“ 操作失败!”);
}
return messageModel;
}

Put 申请配置

/**

  • restful–>put 申请执行更新操作
  • @param id
  • @param account
  • @return

*/
@RequestMapping(value=”update/{id}”,method=RequestMethod.PUT,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById04(@PathVariable Integer id,@RequestBody Account account){
MessageModel messageModel=new MessageModel();
try {
accountService.saveOrUpdateAccount(account);
} catch (ParamsException e) {e.printStackTrace();
messageModel.setCode(e.getErrorCode());
messageModel.setMsg(e.getErrorMsg());
}catch (Exception e) {e.printStackTrace();
messageModel.setCode(300);
messageModel.setMsg(“ 操作失败!”);
}
return messageModel;
}

Delete 申请配置

/**

  • restful–>delete 申请 执行删除操作
  • @param id
  • @return

*/
@RequestMapping(value=”deleteAccountById/{id}”,method=RequestMethod.DELETE,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById05(@PathVariable Integer id){
MessageModel messageModel=new MessageModel();
try {
accountService.deleteAccountById(id);
} catch (ParamsException e) {e.printStackTrace();
messageModel.setCode(e.getErrorCode());
messageModel.setMsg(e.getErrorMsg());
}catch (Exception e) {e.printStackTrace();
messageModel.setCode(300);
messageModel.setMsg(“ 操作失败!”);
}
return messageModel;
}

扩大~REST

REST(英文:Representational State Transfer,简称 REST)形容了一个架构款式的网络系统,比方 web 应用程序。它首次呈现在 2000 年 Roy Fielding 的博士论文中,Roy Fielding 是 HTTP 标准的次要编写者之一。在目前支流的三种 Web 服务交互计划中,REST 相比于 SOAP(Simple Object Access protocol,简略对象拜访协定)以及 XML-RPC 更加简单明了,无论是对 URL 的解决还是对 Payload 的编码,REST 都偏向于用更加简略轻量的办法设计和实现。值得注意的是 REST 并没有一个明确的规范,而更像是一种设计的格调。

REST 指的是一组架构约束条件和准则。满足这些约束条件和准则的应用程序或设计就是 RESTful。

退出移动版