SpringMVC

16 阅读1分钟

Controller

RestController(返回Json)

@RestController = 专门用来“写接口”的 Controller

它告诉Spring,这个类的方法,返回的不是页面,而是数据(JSON / 字符串)

相当于:

  • @Controller:这是一个 Spring MVC 控制器
  • @ResponseBody:方法返回值直接写到 HTTP 响应里

的结合体

@RestController
public class TestController {

    @GetMapping("/test")
    public String test() {
        return "ok";
    }
}

Spring会返回:

HTTP Response Body:
ok

如果这里没有Controller,则Spring会以为return的值是要跳转的页面

项目中返回一个refundOrder

@PostMapping("/updateDemo")
@ApiOperation(value = "post测试")
public RefundOrder updateRefundOrder(@RequestBody DemoVo demoVo){

    RefundOrder refundOrder = refundOrderService.updateRefundDemo(demoVo.getId(), demoVo.getMoney());
    return refundOrder;

}

返回的response body:

{
  "id": 1,
  "outTradeNo": "1234",
  "flowCode": null,
  "createdAt": "2026-01-02T14:14:56.000+0000",
  "money": 22.68,
  "payType": null,
  "hospitalCode": null
}

传入的值不为json时

public RefundOrder updateRefundOrder(Long id, Double money){

    RefundOrder refundOrder = refundOrderService.updateRefundDemo(id, money);
    return refundOrder;
}

调用时直接是id = xxx,money = xxx的参数

url传参时

@PostMapping("/updateDemo/{id}")
@ApiOperation(value = "post测试")
public RefundOrder updateRefundOrder(@PathVariable Long id, Double money){

    RefundOrder refundOrder = refundOrderService.updateRefundDemo(id, money);
    return refundOrder;

}

传入的值为json时

public RefundOrder updateRefundOrder(@RequestBody DemoVo demoVo){

    RefundOrder refundOrder = refundOrderService.updateRefundDemo(demoVo.getId(), demoVo.getMoney());
    return refundOrder;
}

这里需要一个对象来接收值

@Data
public class DemoVo {

    private Long id;

    private Double money;

}

因为 JSON 的“天然形态”是对象 {}
而 Java 的 Long / String 这种“单值”,并不适合直接接 JSON。

传入:

{
  "id": 1,
  "money": 233.3
}

Swagger

Spring 2.1.8

  1. 加依赖
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>
  1. 在启动类上加注解@EnableSwagger2,开启Swagger
@EnableSwagger2
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
  1. 在Controller(类上)加@Api(value = "xxx"),在接口方法上加@ ApiOperation(value = "xxxx")