SpringBoot - RESTful接口架构

RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

REST(英文:Representational State Transfer,简称 REST)是一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次

如GET请求方式

传统风格:     http://localhost:8081/myboot/student?id=1001&name=admin

RESTFUL风格:  http://localhost:8081/myboot/student/1001/admin

以下摘自百度百科

RESTFUL特点包括:

1、每一个URI代表1种资源;

2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

3、通过操作资源的表现形式来操作资源;

4、资源的表现形式是XML或者HTML;

5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

RESTful主要使用如下注解

@RestController: 符合注解,是@Controller 和@ResponseBody组合

@PathVariable(路径变量) : 获取url中的数据

@GetMapping: 支持的get请求方式, 等同于 @RequestMapping( method=RequestMethod.GET)

@PostMapping: 支持post请求方式 ,等同于 @RequestMapping( method=RequestMethod.POST)

@PutMapping: 支持put请求方式, 等同于 @RequestMapping( method=RequestMethod.PUT) 

@DeleteMapping: 支持delete请求方式, 等同于 @RequestMapping( method=RequestMethod.DELETE)

import org.springframework.web.bind.annotation.*;

/**
 * REST(英文:Representational State Transfer,简称 REST)
 * 一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交
 * 互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次
 * 如GET请求方式,
 * 传统风格:       http://localhost:8081/myboot/student?id=1001&name=admin
 * RESTFUL风格:   http://localhost:8081/myboot/student/1001/admin
 *
 * @RestController:  符合注解,是@Controller 和@ResponseBody组合
 */
@RestController
public class RestfulController {

    /**
     * @PathVariable(路径变量) : 获取url中的数据
     *         属性: value : 路径变量名;位置: 放在控制器方法的形参前面
     *
     * @GetMapping: 支持的get请求方式,  等同于 @RequestMapping( method=RequestMethod.GET)
     * @PostMapping: 支持post请求方式 ,等同于 @RequestMapping( method=RequestMethod.POST)
     * @PutMapping: 支持put请求方式,  等同于 @RequestMapping( method=RequestMethod.PUT)
     * @DeleteMapping: 支持delete请求方式,  等同于 @RequestMapping( method=RequestMethod.DELETE)
     *
     * http://localhost:8080/myboot/student/1002
     * {stuId}:定义路径变量, stuId自定义名称
     *
     * 注:不能使用多个,形参定义不同但url地址相同的请求,这样就报错找不到请求
     * 如:@GetMapping("/student/{stuId}");@GetMapping("/student/{stuName}")
     * http://localhost:8080/myboot/student/1002;http://localhost:8080/myboot/student/admin
     *
     * 浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求
     *      
     *      
* * *
* * xml配置文件 * * * HiddenHttpMethodFilter * org.springframework.web.filter.HiddenHttpMethodFilter * * * HiddenHttpMethodFilter * /* * * * SpringBoot中application.properties中配置 * #开启支持put delete请求的过滤器 * spring.mvc.hiddenmethod.filter.enabled=true */ @GetMapping("/student/{stuId}") public String queryStudet(@PathVariable("stuId") Integer stuId){ return "查询学生studentId=" + stuId; } // @GetMapping("/student/{stuName}") // public String queryStudet(@PathVariable("stuId") String stuName){ // return "查询学生stuName=" + stuName; // } /*** * 创建资源 Post请求方式 * http://localhost:8080/myboot/student/zhangsan/20 */ @PostMapping("/student/{name}/{age}") public String createStudent(@PathVariable("name") String name, @PathVariable("age") Integer age){ return "创建学生 student: name=" + name + ",age=" + age; } /** * 更新资源 * 当路径变量名称和 形参名一样, @PathVariable中的value可以省略 */ @PutMapping("/student/{id}/{age}") public String modifyStudent(@PathVariable Integer id, @PathVariable Integer age){ return "更新学生,put请求方式:id=" + id + ",age=" + age; } /** * 删除资源 */ @DeleteMapping("/student/{id}") public String removeStudentById(@PathVariable Integer id){ return "删除学生,delete,id=" + id; } }

注:

1、不能使用多个,形参定义不同但url地址相同的请求,这样就报错找不到请求

如:@GetMapping("/student/{stuId}");

@GetMapping("/student/{stuName}")

http://localhost:8080/myboot/student/1002;

http://localhost:8080/myboot/student/admin

2、浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求


xml配置文件



     HiddenHttpMethodFilter
     org.springframework.web.filter.HiddenHttpMethodFilter


     HiddenHttpMethodFilter
     /*

SpringBoot中application.properties中配置

#开启支持put delete请求的过滤器
spring.mvc.hiddenmethod.filter.enabled=true

你可能感兴趣的:(JavaEE,SpringBoot,spring,boot,RESTful,RestController,PathVariable)