-
RESTFul编写程序一种风格,不是协议。
-
对HTTP协议诠释(落地方案),请求方式的落地
-
http协议共8种
| 序号 | 方法 | 描述 |
| 1 | GET | 请求指定页面信息。请求数据放在协议头中,返回实体主体 |
| 2 | POST | 提交资源,让服务器进行处理,如表单数据或图片数据,提交的数据放在请求体中。内容可能会被修改 |
| 3 | PUT | 与POST相同,用于发送资源与服务器,储存在服务器的指定位置,同时PUT是安全的,无论请求多少次都是在同一资源上修改 |
| 4 | DELETE | 请求服务器删除指定的资源或页面,建议使用https协议,否则可能被防火墙拦截, |
| 5 | HEAD | 只请求页面的头部信息,用于检查该链解决是否可以使用 |
| 6 | OPTION | 允许客户端查看服务器的性能,以及获取服务器支持的HTTP请求方法; |
| 7 | TRACE | 回显服务器收到的请求,返回得到的部分内容 |
| 8 | CONNECT | 建立一个对资源的网络连接。建立连接后,会响应一个200状态码和一条"Connectioin Established"的消息。 |
1.1常用的http协议有4种
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/1232.使用 2.1 步骤
-
步骤1:创建新项目 (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)
3.实现
3.1配置类
package com.czxy.config;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
public class WebInitializer1 implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//1 配置spring工厂
AnnotationConfigWebApplicationContext application = new AnnotationConfigWebApplicationContext();
// 注册所有的配置类
application.register(MvcConfiguration1.class);
//2 post中文乱码
FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encoding", new CharacterEncodingFilter("UTF-8"));
encodingFilter.addMappingForUrlPatterns(null, true, "
@GetMapping
public List selectAll(){
ArrayList list = new ArrayList<>();
list.add(new User("u001","jack","1234",new Date()));
list.add(new User("u002","rose","4567"));
list.add(new User("u003","jim","8888"));
return list;
}
@PostMapping
public User save(User user){
System.out.println(user);
return user;
}
// 更新
@PutMapping
public String update(@RequestBody String id){
System.out.println(id);
return "默认乱码";
}
@DeleteMapping("/{id}")
public String delete(@PathVariable String id){
System.out.println(id);
return "默认乱码";
}
@GetMapping("/{id}")
public String findById(@PathVariable String id){
System.out.println(id);
return "通过id查询详细";
}
}



