# 项目结构与配置

目录:

<img src="https://z3.ax1x.com/2021/06/08/2BLrrT.png" width="300px">

配置文件 application.yml:

server:
  port: 8080
  context-path: /

# Controller 的使用

# @RestController 和 @RequestMapping 注解

@Controller 需要配合 @ResponseBody 使用,Spring4 之后新增注解 @RestController 相当于前边两个合起来。

注解功能
@RestController处理 Http 请求
@RequestMapping配置 url 映射
@GetMapping同上,方法指定 GET
POST..blabla..同上 blabla...

实例:

HelloChinoController.java

package com.example.demo1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
// 可以直接 import org.springframework.web.bind.annotation.*;
//@RestController = @Controller + @ResponseBody
@RestController
//RequestMapping 配置整个类的 url
@RequestMapping("/hello")
public class HelloChinoController {
    /*
    单独配置每个方法的 url,{} 可包含多个
    不写 method 则支持全部方法(然而并不规范的样子 qwq
    支持多个 url,这里通过 "/hello/chino" 或 "/hello/chinochann" 访问
    */
    @RequestMapping(value = {"/chino", "/chinochann"}, method = RequestMethod.GET)
    public String hello() {
        return "Hello Chino!";
    }
}

# 请求参数的获取

注解功能
@PathVariable从 url 获取参数
@RequestParam从 body 获取参数

从 url 获取参数:

@RequestMapping(value = "/{id}chino/{id2}", method = RequestMethod.GET)
public String hello(@PathVariable("id") Integer id, @PathVariable("id2") Integer id2) {
    return "Hello Chino! " + id + " " + id2;
}

通过 http://localhost:8080/hello/233chino/466 访问,返回 “Hello Chino! 233 466”

GET 参数获取:

@GetMapping("/chino")
public String hello(@RequestParam(required = false, defaultValue = "1") Integer id) {
    //id 只能叫 id
    return "Hello Chino! " + id;
}
// 或者这样之类的,,反正到时候查手册啦,,
@GetMapping("/chino")
public String hello(@RequestParam(value = "id", required = false, defaultValue = "1") Integer myId) {
    return "Hello Chino! " + myId;
}

通过 http://localhost:8080/hello/chino 访问,返回 “Hello Chino! 1”,通过 http://localhost:8080/hello/chino/?id=233 访问,返回 “Hello Chino! 233”

随便粘个 POST 的实例:

@PostMapping("/pay")
public AjaxResult<PayResult> pay(@RequestBody PayParam param, HttpServletRequest request) {
    Long userId = UserUtils.getUserId();
    String ip = IPUtils.getRequestClientRealIP(request);
    PayResult payResult = orderService.pay(param, ip, userId);
    return AjaxResult.SUCCESS(payResult);
}