axios ν΅μ μ http μνμ½λ λ°μμ€κΈ°
μΌκ° λλμ§ νμΆκΈ° (λΆμ . μ½μ§ λ©μΆ°!β¦)
HappyHouse νλ‘μ νΈλ₯Ό μ§ννλ©° λ°μν μλ¬λ₯Ό μ 리ν©λλ€.
νμ¬ μ§ννλ HappyHouse νλ‘μ νΈλ Spring Boot
νκ²½μ λ°±μλ μλ²μ vue cli
νκ²½μ νλ‘ νΈλ‘ ꡬμ±λμ΄ μλ€. vueμ κ°μ μ΄λΌκ³ μκ°νλ μ»΄ν¬λνΈ κΈ°λ° SPA(Single Page Application) νλ‘μ νΈλ₯Ό μ§ννκΈ° μν΄μλ λΉλκΈ° ν΅μ μ΄ νμμ μΈλ°, μ΄ λ axios
λ₯Ό μ΄λ€.
JQuery λΌμ΄λΈλ¬λ¦¬λ‘ νλ‘ νΈλ₯Ό λ§λ€ λ ajax
λ‘ ν΅μ νμ§λ§, vueμμλ axiosλ₯Ό κ°λ ₯ κΆμ₯νκ³ μκΈ° λλ¬Έμ νμ¬ νλ‘μ νΈλ‘ axiosλ‘ ν΅μ νλλ‘ κ΅¬ννκ³ μλ€.
SPA νλ‘μ νΈμμ λΉλκΈ° ν΅μ κ³Ό ν¨κ» λ°λΌμ€λ μ§κΆμ΄ μλλ°, λ°λ‘ REST API
μ΄λ€. REST API
μ λν΄ μλ κ²μ μμ£Ό κ°λ¨νκ² λ§νλ©΄ ν΄λΌμ΄μΈνΈμ μμ²μ λ°λ₯Έ μλ΅μ λ°μ΄ν°λ‘ μ μ‘νλ λ°©μμ΄λ€. HTTP URI
μ ν΅ν΄ μμ(λ°μ΄ν°)μ μ μνκ³ , HTTP method
λ₯Ό ν΅ν΄ μμ(λ°μ΄ν°)μ λν νμλ₯Ό μ μνμ¬ μμ²κ³Ό μλ΅μ μ£Όκ³ λ°λλ€.
RESTful
νκ² λ°μ΄ν°λ₯Ό ν΅μ νλ€λ©΄ λ μ΄μ μλ²λ¨μμ νλ©΄(λ·°)μ μ μ΄νκ±°λ μ 곡(jsp
λ°©μ)νμ§ μμλ λκ³ , νλ©΄μ νλ‘ νΈλ¨μ μ μ 리μμ€(css, html, js)λ§μΌλ‘ ꡬμ±νμ¬ νλ‘ νΈμ λ°±, νλ©΄κ³Ό λ‘μ§μ μλ²½νκ² λΆλ¦¬ν μ μλ€!
λ€μ axiosλ‘ λμμμ, μλ²λ¨μμ ν΄λΌμ΄μΈνΈ μμ²μ λν λ‘μ§ μ²λ¦¬λ₯Ό λ§μΉκ³ μλ΅μ λ°νν λλ λ°μ΄ν° λΏλ§ μλλΌ ν΅μ κ³Όμ μ΄ μ΄λ νλμ§λΌλ μλ―Έλ₯Ό λ΄μ μνμ½λλ₯Ό ν¨κ» λ°ννλ€. μ¬μ μ μ μν΄λ μνμ½λλ₯Ό ν΅ν΄ μλ΅μ΄ μ μλμ§, μμ²νλ λ°μ΄ν°κ° μ‘΄μ¬νλμ§, μλ²λ¨μμ λ¬Έμ κ° μμλμ§ λ± μ¬λ¬ μ±κ³΅/μλ¬ μν©μ λν μ΄ν΄κ° κ°λ₯ν΄μ§λ€. (λκ΅°κ° λ¬΄μ¨ μΌμ μμ²νλλ° κ·Έλ₯ μνλ κ²λ³΄λ¨, μ μνλμ§ μ€λͺ νλκ² μ’μΌλκΉ)
λ°λΌμ μλ²λ¨μμ μνμ½λλ₯Ό λ°ννκ³ νλ‘ νΈμμ μ΄ μνμ½λμ λ°λΌ λΆκΈ°μ²λ¦¬λ₯Ό νλ€λ©΄ ν¨μ¬ ꡬ쑰μ μΈ μ ν리μΌμ΄μ μ λ§λ€ μ μμ κ² κ°μ μλ²μμλ μνμ½λλ₯Ό ν¨κ» λ°ννκ³ μλ€. axios ν΅μ μ ꡬ체μ μΈ κ΅¬ν λ°©λ²μ μ 리ν΄λλ€.
BackEnd (controller λΆλΆ)
@GetMapping
public ResponseEntity<List<Post>> retrievePosts() {
List<Post> posts = postService.retrievePosts();
if (posts.size()!=0) return ResponseEntity.ok(posts); // 200
else return ResponseEntity.noContent().build(); // 204
}
μμ κ°μ΄ Builder ν¨ν΄μ μ΄μ©νμ¬ μνμ½λλ₯Ό λ©μλ νμμΌλ‘ μμ±νμ¬ λ°νν μ μλ€.
FrontEnd
http
.get("/board")
.then((response) => {
if (response.status === 200) {
this.data = response.data;
} else if (response.status === 204) {
alert("μ μ₯λ κ²μκΈμ΄ μμ΅λλ€.");
}
});
μ΄μ μλ .then(({data}) => { ... }
μ κ°μ΄ responseμμ λ°λ‘ dataλ₯Ό κ°μ Έλ€ μΌλλ°, μνμ½λκΉμ§ ν¨κ» νμΈνκ³ μΆλ€λ©΄ μ€κ΄νΈλ₯Ό λΉΌκ³ μκ΄νΈλ‘ ꡬμ±λ response
맀κ°λ³μλ₯Ό λ°μμμΌ νλ€. μ΄λ μ±κ³΅ μ μνμ½λλ response.status
, λ°μ΄ν°λ response.data
λ‘ νμΈν μ μλ€.
λ!