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