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相关推荐

  1. 带有AngularJS资源的Spring Rest Controller

    Angularjs ngResource是用于与基于REST的服务进行交互的angularjs模块. 我最近在Spring MVC的一个小型项目中使用了它,并希望记录一个对我来说很好的配置. 该控制器 ...

  2. springmvc静态资源;mvc:default-servlet-handler后Controller失效

    springmvc静态资源;mvc:default-servlet-handler后Controller失效 web.xml配置<url-pattern>/</url-pattern ...

  3. java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...

    Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...

  4. Spring MVC Controller 要点

    2019独角兽企业重金招聘Python工程师标准>>> 今天看到一篇讲解 Spring MVC Controller 的文章,比较详细,顺道翻译下. 在 Spring MVC 中,我 ...

  5. angularJS 路由加载js controller 未定义 解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 说明 本文主要说明,在angularJS框架使用中,angularJS 路由加载js controller 未定义 解决方案. ...

  6. Spring中@Controller和@RestController之间的区别

    1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.  Controller, RestController的不同点 @C ...

  7. Spring MVC Controller中返回json数据中文乱码处理

    问题 在使用spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码.后台Java代码: @RequestMapping(value = "/upload&quo ...

  8. Spring MVC Controller与jquery ajax请求处理json

    在用 spring mvc 写应用的时候发现jquery传递的[json数组对象]参数后台接收不到,多订单的处理,ajax请求: var cmd = {orders:[{"storeId&q ...

  9. spring里面 @Controller和@RestController注解的区别

    问题:spring里面 @Controller和@RestController注解的区别 spring里面 @Controller和@RestController注解的区别 Web MVC和REST ...

最新文章

  1. OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
  2. 让Linux系统崩溃最快速的方法
  3. 善用rel=’canonical’,权重更集中(转)
  4. VS2008中开发Silverlight 2.0的配置
  5. php smarty 语法,php之Smarty根本语法和三大变量
  6. mysql java 社工库_社工库源码
  7. React-Error
  8. 单片机的现状即发展前景
  9. k3梅林单线双拨教程_斐讯 K3 路由器刷入 OpenWrt LEDE 固件教程,支持多拨及去广告...
  10. 希尔密码_密码学中的希尔密码
  11. Mysql系统参数查询和设置
  12. 李峋爱心代码 程序员教你用代码制作爱心网页[樱花+爱心],正好拿去送给女神给她个惊喜
  13. 【2018版】Docker入门视频课程-汤小洋-专题视频课程
  14. 鼠标点击页面出现富强自由等文字JS特效
  15. 【metahumanUE】虚幻引擎面捕动捕调研
  16. 数据仓库设计规范文档
  17. python人脸识别门禁系统_树莓派人脸识别门禁系统图文教程
  18. 利用pymupdf编辑修改pdf
  19. C++typedef的用法
  20. 怎样做一个企业网站建设规划书?

热门文章

  1. 八皇后问题---回溯
  2. XML——生成 XML 文档(读入 XML的反向过程)
  3. C语言的运算符的优先级与结合性+ASCII表
  4. 动态资源Servlet接口
  5. jax-rs配置_具有MicroProfile配置的可配置JAX-RS ExceptionMapper
  6. spring vaadin_在Spring Boot中使用Vaadin的简介
  7. junit5和junit4_JUnit 5 –条件
  8. csrf spring_无状态Spring安全性第1部分:无状态CSRF保护
  9. 带有Spring Boot和Spring Cloud的Java微服务
  10. Spring依赖注入–字段vs设置器vs构造函数注入