RESTFul
1 什么是RESTFul
-
RESTFul编写程序一种风格,不是协议。
-
对HTTP协议诠释(落地方案),请求方式的落地
http协议共7种,常见4种,最长使用2种 get post put delete
-
RESTFul对服务器程序操作,进行约定。
- 每一个操作组成:请求路径 + 请求方式 。 (一个路径,因为请求方式的不同,可以完成不同操作)
- 数据传输方式:JSON数据
// 传统开发路径 查询:http://localhost:8080/user/selectAll.action 添加:http://localhost:8080/user/addUser.action 修改:http://localhost:8080/user/updateUser.action 删除:http://localhost:8080/user/deleteUser.action // RESTFul风格路径 查询:get http://localhost:8080/user/ 详情:get http://localhost:8080/user/123 添加:post http://localhost:8080/user/ 修改:put http://localhost:8080/user/ 删除:delete http://localhost:8080/user/123
2 使用
2.1 步骤
-
步骤1:创建新项目 (day15_mvc_restful)
-
步骤2:导入jar包:spring 、spring mvc、jackson、mybatis
-
步骤3:配置类,
- spring mvc 配置
- 启动配置类,前端控制器没有扩展名,由
*.action
改成/
-
步骤4:编写controller,完成增删改查
-
4.1 类级别:
@Controller 、@ResponseBody //--> 合成注入 @RestController
-
4.2 方法级别:@RequestMapping(value=“路径”, method=RequestMethod.GET /POST/PUT/DELETE)
//传统写法 @RequestMapping(value="路径", method=RequestMethod.GET /POST/PUT/DELETE) //-->各种请求方式的简化写法 @GetMapping @PostMapping @PutMapping @DeleteMapping @PathVariable //用于获得路径参数
-
4.3 方法返回值
//根据约束,基于RESTFul风格,方法的的返回值,建议使用 ResponseEntity 类型 // ResponseEntity 用于封装返回值信息,含状态码 // 返回200状态码,ResponseEntity.ok("添加成功"); // 其他状态码,new ResponseEntity<>("添加成功", HttpStatus.UNAUTHORIZED)
-
2.2 实现
- 配置类
- 控制器
package com.czxy.rest.controller;
import com.czxy.rest.domain.User;
import io.swagger.models.Response;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author 桐叔
* @email liangtong@itcast.cn
*/
@RestController
@RequestMapping("/user")
public class UserController {
/**
* 查询所有
* @return
*/
//等效 @RequestMapping(method = RequestMethod.GET)
@GetMapping
public ResponseEntity<List<User>> list() {
List<User> list = new ArrayList<>();
list.add(new User(1,"jack","1234", new Date()));
list.add(new User(2,"肉丝","6666", new Date()));
list.add(new User(3,"tom","loverose", new Date()));
return ResponseEntity.ok(list);
}
/**
* 添加用户
* @param user
* @return
*/
@PostMapping(produces = "application/json;charset=UTF-8")
public ResponseEntity add(@RequestBody User user) {
System.out.println(user);
return ResponseEntity.ok("添加成功");
}
/**
*
* @param user
* @return
*/
@PutMapping
public ResponseEntity<String> update(@RequestBody User user) {
System.out.println(user);
return ResponseEntity.ok("update success");
}
/**
* 删除
* @param userId
* @return
*/
@DeleteMapping("/{id}")
public ResponseEntity<String> delete(@PathVariable("id") String userId ) {
System.out.println(userId);
return ResponseEntity.ok("delete success");
}
}