jiisoo
์ง€์ˆ˜๋กœ๊ทธ
jiisoo
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • home
  • Github
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ €์žฅ์†Œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (80)
    • Java (1)
    • Spring (30)
    • JPA (15)
    • cs (8)
      • ๋””์ž์ธํŒจํ„ด (1)
      • ๋„คํŠธ์›Œํฌ (5)
      • Database (1)
      • ์šด์˜์ฒด์ œ (1)
    • algorithm (18)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋ก  (12)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด (6)
    • ๋ฉด์ ‘ ์ค€๋น„ (0)
    • ํšŒ๊ณ  (5)
      • ATDD (4)
      • ํ•™์Šตํ…Œ์ŠคํŠธ๋กœ ๋ฐฐ์šฐ๋Š” spring 2๊ธฐ (1)
      • ํ”„๋กœ์ ํŠธ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํƒœ๊ทธ

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
jiisoo

์ง€์ˆ˜๋กœ๊ทธ

Spring

[spring] ์Šคํ”„๋ง MVC - ์š”์ฒญ์„ ๋งคํ•‘ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

2023. 3. 14. 16:34

๐Ÿ’ก ์š”์ฒญ ๋งคํ•‘์ด๋ž€?

  • url ์š”์ฒญ์ด ์™”์„ ๋•Œ ์–ด๋–ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์ •ํ•ด๋†“๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

โœ”๏ธŽ ์‚ฌ์šฉ๋ฒ•

  • @RequestMapping์„ ํ†ตํ•ด ๋ช…์‹œ๋œ url ๊ฒฝ๋กœ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.
  • ๋‹จ์ผ, ๋‹ค์ค‘ ๋งคํ•‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ex ) @RequestMapping("hello-basic")
    • @RequestMapping({"hello-basic", "hello-go")}
@RestController
public class MappingController {

    private Logger log = LoggerFactory.getLogger(getClass());

    @RequestMapping(value = "/hello-basic", method = RequestMethod.GET)
    public String helloBasic() {
        log.info("helloBasic");
        return "ok";
    }
}

  

 

 

๐Ÿ’ก HTTP ๋ฉ”์„œ๋“œ 

 

 1๏ธโƒฃ ์œ„์™€ ๊ฐ™์ด @RequestMapping ์— method ์†์„ฑ์œผ๋กœ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋งŒ์•ฝ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด HTTP ๋ฉ”์„œ๋“œ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๊ณ  
  • HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด, ํ•ด๋‹น HTTP ๋ฉ”์„œ๋“œ๋กœ๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ง€์ •ํ•˜์ง€ ์•Š์€ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด 405๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 2๏ธโƒฃ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์ถ•์•ฝํ•œ ์• ๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

  • ์ด ๊ฒฝ์šฐ ์ข€ ๋” ์ง๊ด€์ ์œผ๋กœ ์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ข…๋ฅ˜ 
    • @GetMapping, @PostMapping, @PutMapping, @PatchMapping, @DeleteMapping
/**
     * ํŽธ๋ฆฌํ•œ ์ถ•์•ฝ ์• ๋…ธํ…Œ์ด์…˜
     * @GetMapping
     * @PostMapping
     * @PutMapping
     * @DeleteMapping
     * @PatchMapping
     */

    @GetMapping(value = "/mapping-get-v2")
    public String mappingGetV2() {
        log.info("mapping-get-v2");
        return "ok";
    }

 

 

๐Ÿ’กPathVariable (๊ฒฝ๋กœ๋ณ€์ˆ˜ ์‚ฌ์šฉ)

/**
     * PathVariable(๊ฒฝ๋กœ๋ณ€์ˆ˜) ์‚ฌ์šฉ
     * ๋ณ€์ˆ˜๋ช…์ด ๊ฐ™์œผ๋ฉด ์ƒ๋žต ๊ฐ€๋Šฅ
     * @PathVariable("userId") String userId -> @PathVariable userId
     * /mapping/userA
     *
     */
    @GetMapping("/mapping/{userId}")
    public String mappingPath(@PathVariable("userId") String userId) {
        log.info("mappingPath userId={}", userId);
        return "ok";
    }
  • @PathVariable์„ ์‚ฌ์šฉํ•˜๋ฉด url์— ๋งค์นญ๋˜๋Š” ๋ถ€๋ถ„์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ @PathVariable ์˜ ์ด๋ฆ„๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„์ด ๊ฐ™๋‹ค๋ฉด ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค. 
  • @PathVariable๋Š” ๋‹ค์ค‘์œผ๋กœ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
**
     * PathVariable ์‚ฌ์šฉ ๋‹ค์ค‘
     */
    @GetMapping("/mapping/users/{userId}/orders/{orderId}")
    public String mappingPath(@PathVariable String userId, @PathVariable Long
            orderId) {
        log.info("mappingPath userId={}, orderId={}", userId, orderId);
        return "ok";
    }

 

 

 

๐Ÿ’ก ํŠน์ • ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ๊ฑด ๋งคํ•‘

  • ์ž˜ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.
    /**
     * ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ถ”๊ฐ€ ๋งคํ•‘
     * params="mode",
     * params="!mode"
     * params="mode=debug"
     * params="mode!=debug" (! = )
     * params = {"mode=debug","data=good"}
     */
    @GetMapping(value = "/mapping-param", params = "mode=debug")
    public String mappingParam() {
        log.info("mappingParam");
        return "ok";
    }

 

 

๐Ÿ’ก ํŠน์ • ํ—ค๋” ์กฐ๊ฑด ๋งคํ•‘

    /**
     *ํŠน์ • ํ—ค๋”๋กœ ์ถ”๊ฐ€ ๋งคํ•‘
     * headers="mode",
     * headers="!mode"
     * headers="mode=debug"
     * headers="mode!=debug" (! = )
     */
    @GetMapping(value = "/mapping-header", headers = "mode=debug")
    public String mappingHeader() {
        log.info("mappingHeader");
        return "ok";
    }
  • HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

๐Ÿ’ก ๋ฏธ๋””์–ด ํƒ€์ž… ์กฐ๊ฑด ๋งคํ•‘ - HTTP ์š”์ฒญ Content-Type, consume

    /**
     * Content-Type ํ—ค๋” ๊ธฐ๋ฐ˜ ์ถ”๊ฐ€ ๋งคํ•‘ Media Type
     * consumes="application/json"
     * consumes="!application/json"
     * consumes="application/*"
     * consumes="*\/*"
     * MediaType.APPLICATION_JSON_VALUE
     */
    @PostMapping(value = "/mapping-consume", consumes = "application/json")
    public String mappingConsumes() {
        log.info("mappingConsumes");
        return "ok";
    }
  • HTTP ์š”์ฒญ์˜ Content-Type ํ—ค๋”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฏธ๋””์–ด ํƒ€์ž…์œผ๋กœ ๋งคํ•‘ํ•œ๋‹ค.
  • ๋งž์ง€ ์•Š๋Š”๋‹ค๋ฉด HTTP 415 ์ƒํƒœ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

๐Ÿ’ก ๋ฏธ๋””์–ด ํƒ€์ž… ์กฐ๊ฑด ๋งคํ•‘ - HTTP ์š”์ฒญ Accept, produce

/**
     * Accept ํ—ค๋” ๊ธฐ๋ฐ˜ Media Type * produces = "text/html"
     * produces = "!text/html"
     * produces = "text/*"
     * produces = "*\/*"
     */
    @PostMapping(value = "/mapping-produce", produces = "text/html")
    public String mappingProduces() {
        log.info("mappingProduces");
        return "ok";
    }
}
  • HTTP ์š”์ฒญ Accept ํ—ค๋”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฏธ๋””์–ด ํƒ€์ž…์œผ๋กœ ๋งคํ•‘ํ•œ๋‹ค.
  • ๋งž์ง€ ์•Š๋Š”๋‹ค๋ฉด HTTP 406 ์ƒํƒœ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

<๊น€์˜ํ•œ - '์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ '๋ฅผ  ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.>

 

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[spring] ์Šคํ”„๋ง MVC - HTTP ์š”์ฒญ ๋ฉ”์„ธ์ง€  (0) 2023.03.16
[spring] ์Šคํ”„๋ง MVC - HTTP ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ  (0) 2023.03.15
[spring] logging  (0) 2023.03.13
[spring] spring MVC ๊ตฌ์กฐ ์ดํ•ด - dispatcherServlet  (0) 2023.03.12
[spring] Front Controller (3)  (0) 2023.03.09
    'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [spring] ์Šคํ”„๋ง MVC - HTTP ์š”์ฒญ ๋ฉ”์„ธ์ง€
    • [spring] ์Šคํ”„๋ง MVC - HTTP ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ
    • [spring] logging
    • [spring] spring MVC ๊ตฌ์กฐ ์ดํ•ด - dispatcherServlet
    jiisoo
    jiisoo

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”