λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
πŸ’Š Java & Kotlin & Spring/- spring framework +

[Spring & SpringBoot 곡톡] HTTP Method - GET

by Wonit 2020. 1. 19.

μ›Ήμ—μ„œ μžμ›μ— λŒ€ν•œ ν–‰μœ„λ₯Ό ν‘œν˜„ν•  λ•Œ HTTP Methodλ₯Ό μ‚¬μš©ν•˜λŠ”λ° μ˜€λŠ˜μ€ GET λ©”μ„œλ“œμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.

HTTP - GET

GET λ©”μ„œλ“œλŠ” νŠΉμ • 정보 λ˜λŠ” μžμ›μ„ μ‘°νšŒν•˜λŠ” 역할을 ν•˜λŠ”λ°, 쑰금 더 μ§κ΄€μ μœΌλ‘œ ν‘œν˜„ν•΄λ³΄μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

예λ₯Ό λ“€μ–΄μ„œ ν˜Έν…” μ˜ˆμ•½ μ„œλΉ„μŠ€ λ₯Ό λ§Œλ“€μ—ˆμ„ λ•Œ GET λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” λ²”μœ„λ₯Ό μ œν•œν•΄λ³΄μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

  • μ˜ˆμ•½ κ°€λŠ₯ ν˜Έν…” 검색
  • ν˜Έν…” 정보 검색
  • λ‚˜μ˜ μ˜ˆμ•½ 정보

μœ„μ—μ„œ 말 ν–ˆλ“―μ΄ GET λ©”μ„œλ“œλŠ” 정보 및 μžμ›μ„ μ‘°νšŒν•˜λ €λŠ” λͺ©μ μœΌλ‘œ μ‚¬μš©λ˜λ―€λ‘œ μ € 세가지가 쓰일 수 μžˆλ‹€.

 

μ’€ 더 μžμ„Ένžˆ μ•Œμ•„λ³΄μž

 

HTTP GET의 ν˜•νƒœλŠ” μ£Όμ†Œμ°½μ— νŒŒλΌλ―Έν„°κ°€ λ…ΈμΆœλ˜λŠ” νŠΉμ§•μ΄ μžˆλŠ”λ° μ΄λŠ” 무슨 λ§μ΄λ‚˜λ©΄

μ΄λ ‡κ²Œ ?category=738834λΌλŠ” 뢀뢄에 보면 category에 값에 738834 ν•΄λ‹Ήν•˜λŠ” 글을 μ½κ² λ‹€λŠ” λ‚΄μš©μ΄λ‹€.

이 νŠΉμ§•μ„ 보고 μ•Œ 수 μžˆλŠ” HTTP Get λ©”μ„œλ“œμ˜ νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™λ‹€.

 

HTTP GET νŠΉμ§•

 

URL에 νŒŒλΌλ―Έν„°κ°€ λ…ΈμΆœλœλ‹€.

μœ„μ—μ„œ λ‚˜μ™”λ˜ λ‚΄μš©κ³Ό κ°™λ‹€.

λ³΄μ•ˆμ— μ·¨μ•½ν•˜λ‹€.

μš°λ¦¬κ°€ 단지 URL만 보더라도 μ–΄λ–€ 디렉토리에 μ–΄λ–€ 정보가 μžˆλŠ”μ§€ μ•Œ 수 μžˆλ‹€.

 

λ§Œμ•½ μš°λ¦¬κ°€ ID PWλ₯Ό GET으둜 보낸닀면 ?id=jang&pw=wonik 처럼 id pwλ₯Ό url에 λ…ΈμΆœν•˜λŠ” 과정이 생기기 λ•Œλ¬Έμ— λ³΄μ•ˆμ΄ μ·¨μ•½ν•˜λ‹€λŠ” 이야기가 μžˆλ‹€. ν•˜μ§€λ§Œ λ‹€μŒ μ‹œκ°„μ— 배울 λ‚΄μš©μ΄ POST λ°©μ‹μ΄μ§€λ§Œ 단지 URL에 보이지 μ•ŠλŠ” λ‹€λŠ” 점이 λ³΄μ•ˆ Issueλ₯Ό μ—†μ• μ£Όμ§€λŠ” μ•ŠλŠ”λ‹€λŠ” 것이 λ³΄μ•ˆμ— 직접적인 문제의 주체가 μ•„λ‹Œ μ΄μœ κ°€ λœλ‹€. λ‹€μŒμ— κ°€μ„œ μžμ„Ένžˆ μ•Œμ•„λ³΄μž.

 

get은 정보λ₯Ό μ‘°νšŒν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ˜ κ°’μ΄λ‚˜ μƒνƒœλ₯Ό 바꾸지 λͺ»ν•œλ‹€.

 

Springμ—μ„œ μ‚¬μš©ν•΄λ³΄μž!

 

Get λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ Helloλ₯Ό 좜λ ₯μ‹œμΌœλ³΄μž.

 

  1. μ„œλ²„μ—μ„œ λ°μ΄ν„°μ˜ 처리λ₯Ό μœ„ν•΄μ„œ controller클래슀λ₯Ό λ§Œλ“€μ–΄μ€€λ‹€.
@RestController
@RequestMapping("/api") // localhost:8080/api
public void TestGetController {

    @GetMapping("/GetMethod") // http://localhost:8080/api/GetMethod
    public String getRequest(){
        return "hello";
    }

}

 

λΌλŠ” 클래슀λ₯Ό μƒμ„±ν–ˆκ³  λ‹€μŒμ€ μ„œλ²„λ₯Ό κ΅¬λ™μ‹œμΌœμ„œ URL에 μš°λ¦¬κ°€ μ›ν•˜λŠ” νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•΄ helloλ₯Ό 좜λ ₯μ‹œμΌœλ³΄μž.

 

 

λΌλŠ” 경둜λ₯Ό 타고 λ“€μ–΄κ°€λ©΄

 

κ°€ 좜λ ₯λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

 

λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„μ„œ μ½˜μ†”μ— 좜λ ₯ν•΄λ³΄μž!

 

μ£Όμ†Œμ°½μ—μ„œ νŒŒλΌλ―Έν„°λ₯Ό μž…λ ₯λ°›μ•„ κ·Έ 값을 μ„œλ²„μ—μ„œ μ‚¬μš©ν•˜κ³ μ‹Άμ„ λ•Œ, 예λ₯Ό λ“€μ–΄ categeroy의 10번째의 μΉ΄ν…Œκ³ λ¦¬μ˜ 글을 λΆˆλŸ¬μ˜¨λ‹€κ³  ν•œλ‹€λ©΄ μš°λ¦¬λŠ” μ„œλ²„μ—μ„œ μ‚¬μš©μžκ°€ μš”μ²­ν•œ νŒŒλΌλ―Έν„°λ₯Ό 받아와야 ν•œλ‹€.

 

http://localhost:8080/api/category?id=10μ΄λΌλŠ” url을 μ²˜λ¦¬ν•  controllerλ₯Ό λ§Œλ“€μ–΄λ³΄μž.

 

@RestController
@RequestMapping("/api")
public class TestController {
    @GetMapping("/category)
    public String findCategory(@RequestParam String id){
        return "μ‚¬μš©μžκ°€ μ°ΎλŠ” μΉ΄ν…Œκ³ λ¦¬λŠ”: " + id + " μž…λ‹ˆλ‹€.";
    }
}

 

κ²°κ³Ό νŽ˜μ΄μ§€

 

κ²°κ³Ό μ½˜μ†”

 

객체 νƒ€μž…μœΌλ‘œ λ°›μ•„λ³΄μž!

 

λ§Œμ•½ λ°›μ•„μ•Όν•  정보가 λ§Žλ‹€λ©΄?? μ‚¬μš©μžμ˜ 정보λ₯Ό κ²€μƒ‰ν•΄μ£ΌλŠ” μ„œλΉ„μŠ€λ₯Ό λ§Œλ“ λ‹€κ³  ν–ˆμ„ λ•Œ μ‚¬μš©μž 정보λ₯Ό κ²€μƒ‰ν•˜κΈ° μœ„ν•΄μ„œλŠ”

 

  • 이름
  • 생년월일
  • μ£Όμ†Œ
  • λ‚˜μ΄
  • 아이디

λ₯Ό 검색해야 ν•œλ‹€κ³  ν–ˆμ„ λ•Œ λ„ˆλ¬΄ λ§Žμ€ 정보가 λ©”μ„œλ“œμ— μ •μ˜λ˜μ–΄μ•Ό ν•œλ‹€.

 

 

λ”± 봐도 λ„ˆλ¬΄ 뢈-νŽΈν•˜μ§€ μ•Šλ‚˜..?

 

μš°λ¦¬λŠ” 이런 정보λ₯Ό μ‰½κ²Œ μ‚¬μš©ν•  수 있게 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ 정보λ₯Ό λ°›λŠ”λ‹€.

 

μƒˆλ‘œμš΄ UserInfo 클래슀λ₯Ό λ§Œλ“€κ³  이λ₯Ό model(mvc νŒ¨ν„΄μ— m에 ν•΄λ‹Ήν•˜λŠ”)둜 μ •μ˜ν•˜λ©°, ν•„μš”ν•œ 정보λ₯Ό μΆ”κ°€μ‹œν‚¨λ‹€.

 

 

그리고 λ‚˜μ„œ λ‹€μ‹œ controller둜 λŒμ•„μ™€ @RequestParamκ³Ό κΈ°λ³Έ μžλ£Œν˜•μœΌλ‘œ 받지 μ•Šκ³  μ•„κΉŒ model둜 λ§Œλ“€μ—ˆλ˜ κ°μ²΄ν˜•μœΌλ‘œ λ§Œλ“€μ–΄μ€€λ‹€.

 

 

그리고 μ‹€ν–‰μ‹œμΌœμ€€λ‹€λ©΄

 

 

μ΄λŸ¬ν•œ ν˜•νƒœλ‘œ λ‚˜νƒ€λ‚  것이닀.

 

λŒ“κΈ€