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

该控制器在工厂中运行,它支持在Hotel实体上进行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. 带有第三方工具的Spring Boot Initilizr

    This is continuation to my two previous posts. Before reading this post, please go through my previo ...

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

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

  5. Spring MVC Controller 要点

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

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

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

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

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

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

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

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

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

最新文章

  1. java体重指数计算器程序_java 学习 ——计算器小程序
  2. Java:多态的概念和案例实现
  3. Mediasoup简介及其基本概念
  4. 必须掌握的前端模板引擎之art-template
  5. linux向脚本传递参数,Linux 使用位置变量向脚本传递参数
  6. 犀牛3D造型软件Rhino 7 for Mac
  7. Unity Animator动画状态机 深入理解(一)
  8. Sql Server约束的学习一(主键约束、外键约束、唯一约束)
  9. ac自动机 匹配最长前缀_傻傻分不清吗?——Trie Tree,字典树、前缀树概述
  10. 通向云帝国的铁王座:卖书的贝佐斯和卖软件的纳德拉
  11. 思科路由器 密码设置和恢复
  12. 软件常见的各种版本英文缩写
  13. 最经典的10部爱情小说
  14. 不用光盘,教你一招让win10系统恢复出厂设置
  15. 关于计算机软件的使用 正确的认识应该是,计算机二级考试单选题训练题库
  16. excel 分组求和
  17. uniapp APP消息推送方案
  18. 海康威视校招C++岗面经(笔试+一面+二面+三面+Offer)
  19. gos-log高性能大日志检索中台
  20. 【读书笔记】《全域营销:付费增长与流量变现实战讲义》——我的公域私域运营教科书

热门文章

  1. 中山纪念中学培训15天总结
  2. codeforces1167 E. Range Deleting(双指针)
  3. 【DP】Rotating Substrings(CF1363F)
  4. 小麦亩产一千八(jzoj 3461)
  5. 初一模拟赛(4.27)
  6. Java 并发总结——进程与线程
  7. 避免代码冗余,使用接口和泛型重构Java代码
  8. 搭建ssh框架的步骤
  9. centos5.9 mysql_CentOS 5.9系统服务器使用yum安装Apache+PHP+MySQL环境
  10. Java:出生日期转年龄