具有angularjs资源的Spring Rest Controller
Angularjs ngResource是用于与基于REST的服务进行交互的angularjs模块。 我最近在Spring MVC的一个小型项目中使用了它,并希望记录一个对我来说很好的配置。
该控制器在工厂中运行,它支持在酒店实体上进行CRUD操作,并支持以下方法:
- POST / rest / hotels –创建一个酒店实体
- GET / rest / hotels –获取酒店实体列表
- GET / rest / hotels /:id –检索具有指定ID的实体
- PUT / rest / hotels /:id –更新实体
- DELETE / rest / hotels /:id –删除具有指定ID的实体
可以使用Spring MVC通过以下方式实现:
@RestController
@RequestMapping("/rest/hotels")
public class RestHotelController {private HotelRepository hotelRepository;@Autowiredpublic RestHotelController(HotelRepository hotelRepository) {this.hotelRepository = hotelRepository;}@RequestMapping(method=RequestMethod.POST)public Hotel create(@RequestBody @Valid Hotel hotel) {return this.hotelRepository.save(hotel);}@RequestMapping(method=RequestMethod.GET)public List<Hotel> list() {return this.hotelRepository.findAll();}@RequestMapping(value="/{id}", method=RequestMethod.GET)public Hotel get(@PathVariable("id") long id) {return this.hotelRepository.findOne(id);}@RequestMapping(value="/{id}", method=RequestMethod.PUT)public Hotel update(@PathVariable("id") long id, @RequestBody @Valid Hotel hotel) {return hotelRepository.save(hotel);}@RequestMapping(value="/{id}", method=RequestMethod.DELETE)public ResponseEntity<Boolean> delete(@PathVariable("id") long id) {this.hotelRepository.delete(id);return new ResponseEntity<Boolean>(Boolean.TRUE, HttpStatus.OK);}
}
注意@RestController批注,这是Spring Framework 4.0引入的新批注,在控制器上指定了此批注,可以避免每个方法上的@ResponseBody批注。
在angularjs端,可以使用以下方式在工厂中配置ngResource模块以使用此服务:
app.factory("Hotel", function ($resource) {return $resource("/rest/hotels", {id: "@id"}, {update: {method: 'PUT'}});
});
默认配置的唯一更改是使用PUT的Http方法而不是POST指定附加的“ update”操作。 进行此更改后,可以通过以下方式访问REST API:
POST / rest / hotels转换为:
var hotel = new Hotel({name:"test",address:"test address", zip:"0001"});
hotel.$save();
或其他的变化形式:
Hotel.save({}, {name:"test",address:"test address", zip:"0001"});
GET / rest / hotels转换为:
Hotel.query();
GET / rest / hotels /:id转换为:
Hotel.get({id:1})
PUT / rest / hotels /:id转换为:
var hotel = new Hotel({id:1, name:"test",address:"test address", zip:"0001"});
hotel.$update();
DELETE / rest / hotels /:id转换为:
var hotel = new Hotel({id:1});
hotel.$delete();
要么
Hotel.delete({id:1});
要处理成功和失败的结果,只需传入其他回调处理程序即可:
例如 与创建:
var hotel = new Hotel({name:"test",address:"test address", zip:"0001"});
hotel.$save({},function(response){//on success
}, function(failedResponse){//on failure
});
- 可以在以下github位置获得带有angularjs和Spring MVC的完整CRUD工作示例:https://github.com/bijukunjummen/spring-boot-mvc-test/tree/withangular
翻译自: https://www.javacodegeeks.com/2014/05/spring-rest-controller-with-angularjs-resource.html
具有angularjs资源的Spring Rest Controller相关推荐
- 带有AngularJS资源的Spring Rest Controller
Angularjs ngResource是用于与基于REST的服务进行交互的angularjs模块. 我最近在Spring MVC的一个小型项目中使用了它,并希望记录一个对我来说很好的配置. 该控制器 ...
- springmvc静态资源;mvc:default-servlet-handler后Controller失效
springmvc静态资源;mvc:default-servlet-handler后Controller失效 web.xml配置<url-pattern>/</url-pattern ...
- java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...
Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...
- Spring MVC Controller 要点
2019独角兽企业重金招聘Python工程师标准>>> 今天看到一篇讲解 Spring MVC Controller 的文章,比较详细,顺道翻译下. 在 Spring MVC 中,我 ...
- angularJS 路由加载js controller 未定义 解决方案
2019独角兽企业重金招聘Python工程师标准>>> 说明 本文主要说明,在angularJS框架使用中,angularJS 路由加载js controller 未定义 解决方案. ...
- Spring中@Controller和@RestController之间的区别
1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2. Controller, RestController的不同点 @C ...
- Spring MVC Controller中返回json数据中文乱码处理
问题 在使用spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码.后台Java代码: @RequestMapping(value = "/upload&quo ...
- Spring MVC Controller与jquery ajax请求处理json
在用 spring mvc 写应用的时候发现jquery传递的[json数组对象]参数后台接收不到,多订单的处理,ajax请求: var cmd = {orders:[{"storeId&q ...
- spring里面 @Controller和@RestController注解的区别
问题:spring里面 @Controller和@RestController注解的区别 spring里面 @Controller和@RestController注解的区别 Web MVC和REST ...
最新文章
- OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
- 让Linux系统崩溃最快速的方法
- 善用rel=’canonical’,权重更集中(转)
- VS2008中开发Silverlight 2.0的配置
- php smarty 语法,php之Smarty根本语法和三大变量
- mysql java 社工库_社工库源码
- React-Error
- 单片机的现状即发展前景
- k3梅林单线双拨教程_斐讯 K3 路由器刷入 OpenWrt LEDE 固件教程,支持多拨及去广告...
- 希尔密码_密码学中的希尔密码
- Mysql系统参数查询和设置
- 李峋爱心代码 程序员教你用代码制作爱心网页[樱花+爱心],正好拿去送给女神给她个惊喜
- 【2018版】Docker入门视频课程-汤小洋-专题视频课程
- 鼠标点击页面出现富强自由等文字JS特效
- 【metahumanUE】虚幻引擎面捕动捕调研
- 数据仓库设计规范文档
- python人脸识别门禁系统_树莓派人脸识别门禁系统图文教程
- 利用pymupdf编辑修改pdf
- C++typedef的用法
- 怎样做一个企业网站建设规划书?
热门文章
- 八皇后问题---回溯
- XML——生成 XML 文档(读入 XML的反向过程)
- C语言的运算符的优先级与结合性+ASCII表
- 动态资源Servlet接口
- jax-rs配置_具有MicroProfile配置的可配置JAX-RS ExceptionMapper
- spring vaadin_在Spring Boot中使用Vaadin的简介
- junit5和junit4_JUnit 5 –条件
- csrf spring_无状态Spring安全性第1部分:无状态CSRF保护
- 带有Spring Boot和Spring Cloud的Java微服务
- Spring依赖注入–字段vs设置器vs构造函数注入