当前位置: 首页 > news >正文

RESTful风格编程

参考文档:http://blog.didispace.com/springbootrestfulapi/

      https://www.jianshu.com/p/91600da4df95

*)RESTful指一种风格,不是一个具体的技术。这种风格更简洁、有层次。

使用标准的 HTTP的请求方式,比如 GET、PUT、POST 和 DELETE,分别对应增 删 改 查 操作。

*)SpringMVC的注解支持:

  @Controller:修饰class,用来创建处理http请求的对象@RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。

*)RESTful在SpringMVC里的应用:

请求同一个Controller,且,具体到每个方法method上的路径path一样,但每个method请求方式不一样,根据GET、PUT、POST 和 DELETE的不同方式,请求不同的method。

例子:

User实体定义:

1 public class User { 
2  
3     private Long id; 
4     private String name; 
5     private Integer age; 
6  
7     // 省略setter和getter 
8      
9 }

实现对User对象的操作接口:

 1 @RestController 
 2 @RequestMapping(value="/users")     // 通过这里配置使下面的映射都在/users下 
 3 public class UserController { 
 4  
 5     // 创建线程安全的Map 
 6     static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>()); 
 7  
 8     @RequestMapping(value="/", method=RequestMethod.GET) 
 9     public List<User> getUserList() { 
10         // 处理"/users/"的GET请求,用来获取用户列表 
11         // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递 
12         List<User> r = new ArrayList<User>(users.values()); 
13         return r; 
14     } 
15  
16     @RequestMapping(value="/", method=RequestMethod.POST) 
17     public String postUser(@ModelAttribute User user) { 
18         // 处理"/users/"的POST请求,用来创建User 
19         // 除了@ModelAttribute绑定参数之外,还可以通过@RequestParam从页面中传递参数 
20         users.put(user.getId(), user); 
21         return "success"; 
22     } 
23  
24     @RequestMapping(value="/{id}", method=RequestMethod.GET) 
25     public User getUser(@PathVariable Long id) { 
26         // 处理"/users/{id}"的GET请求,用来获取url中id值的User信息 
27         // url中的id可通过@PathVariable绑定到函数的参数中 
28         return users.get(id); 
29     } 
30  
31     @RequestMapping(value="/{id}", method=RequestMethod.PUT) 
32     public String putUser(@PathVariable Long id, @ModelAttribute User user) { 
33         // 处理"/users/{id}"的PUT请求,用来更新User信息 
34         User u = users.get(id); 
35         u.setName(user.getName()); 
36         u.setAge(user.getAge()); 
37         users.put(id, u); 
38         return "success"; 
39     } 
40  
41     @RequestMapping(value="/{id}", method=RequestMethod.DELETE) 
42     public String deleteUser(@PathVariable Long id) { 
43         // 处理"/users/{id}"的DELETE请求,用来删除User 
44         users.remove(id); 
45         return "success"; 
46     } 
47  
48 }

 

转载于:https://www.cnblogs.com/mySummer/p/11094142.html

相关文章:

  • 修复fstab文件
  • 广域网协议配置四
  • LeetCode 894. All Possible Full Binary Trees
  • git预览项目
  • How does SGA/PGA allocate on AMM?
  • django考点
  • linux应用系统日志
  • jQuery-对Select的操作集合[终结篇]
  • Mldonkey端口映射获取High id
  • 10 DOM文档对象模型
  • 详细注释GetFATEntry(转载)
  • webpack3 打包
  • web项目部署到Tomcat服务器的三种方式
  • 2011年5月16日
  • Oracle数据库---存储过程、存储函数
  • 230. Kth Smallest Element in a BST
  • conda常用的命令
  • docker python 配置
  • gitlab-ci配置详解(一)
  • JavaWeb(学习笔记二)
  • Joomla 2.x, 3.x useful code cheatsheet
  • linux学习笔记
  • php ci框架整合银盛支付
  • React-生命周期杂记
  • Theano - 导数
  • 创建一种深思熟虑的文化
  • 规范化安全开发 KOA 手脚架
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何用vue打造一个移动端音乐播放器
  • 世界上最简单的无等待算法(getAndIncrement)
  • 小程序测试方案初探
  • 一天一个设计模式之JS实现——适配器模式
  • 最近的计划
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #if和#ifdef区别
  • #pragma data_seg 共享数据区(转)
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $.ajax,axios,fetch三种ajax请求的区别
  • (2)nginx 安装、启停
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (层次遍历)104. 二叉树的最大深度
  • (区间dp) (经典例题) 石子合并
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)u-boot-nand.bin的下载
  • (原)Matlab的svmtrain和svmclassify
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)jQuery 基础
  • (转)关于pipe()的详细解析
  • ***利用Ms05002溢出找“肉鸡
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .java 9 找不到符号_java找不到符号