-
Vue.js - Spring Restful API 활용하기 [CrossOrigin(cors) 해결]IT/Vue.js 2020. 7. 13. 13:46반응형
Vue.js를 공부하면서,
RestAPI를 이용하기 위해서 Spring Boot를 이용하여 Restful API를 활용해보도록 하겠습니다.
프로젝트를 새로 만들어야 하지만,
현재 갖고 있는 웹 프로젝트로 한번 해보도록 하겠습니다.
Spring Boot와 통신하면서 CrossOrigin(cors) 오류가 나서 조금 시간이 걸렸는데요.
해결방법도 공유하겠습니다.
구조 :
- Vue : localhost:8088
- Spring : localhost:8000
1. Vue.js
axios를 통해 Spring 으로 작성된 컨트롤러를 호출하겠습니다.
console.log(result)를 통하여 결과 값을 확인하겠습니다.
Script 소스를 아래와 같이 작성하였는데,
header 부분에 아래와 같이 작성해주세요.
getTodos () { this.$http.get('http://localhost:8080/controller/getTICKET_LIST', { headers: { 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset = utf-8' } })
method 부분에 axios를 이용하여 함수를 만들어 주고,
mounted 는 Vue 구성된 후 호출할 함수를 작성하면 됩니다.
위에서 만든 getTodos 함수를 호출하도록 하였습니다.
<script> export default { name: 'todoPage', data () { }, methods: { deleteTodo (i) { this.todos.splice(i, 1) }, createTodo (name) { if (name != null) { this.todos.push({name: name}) this.name = null } }, getTodos () { this.$http.get('http://localhost:8080/controller/getTICKET_LIST', { headers: { 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset = utf-8' } }) .then((result) => { console.log(result) }) .catch(e => { console.log('error:', e) }) } }, mounted () { this.getTodos() } } </script>
2. Spring
Spring에는 간단하게 Cross Origin을 해결할 수 있는 어노테이션을 갖고 있는데요. 참 여기서 중요한 것이 있습니다.
전제조건이 있다는 것을 아무도 알려주지 않아 왜 오류가 나지? 계속 한참을 헤매었네요.
- @RestController : Spring 4.x 이상
- @CrossOrigin : Spring 4.2 이상
위 조건을 찾는데 시간이 조금 걸렸네요.
이 조건이 갖추어져 있지 않으면 어노테이션을 생성하라고 나옵니다.
삽질하는 사람들이 없길..
위 두 개의 어노테이션만 입력해주면 Cross Origin 오류를 간단히 해결할 수 있습니다.
Vue.js 에서 호출해보도록 하겠습니다.
짜잔 ! 정상적으로 호출되어 조회하고 싶은 값을 전달받았습니다.
전달받은 값으로 이제 웹페이지를 구성해보도록 하겠습니다.
즐코딩 :)
반응형'IT > Vue.js' 카테고리의 다른 글
Vue.js - 하위 컴포넌트에서 상위 컴포넌트 통신 ($emit) (0) 2020.07.24 Vue.js - 컴포넌트 통신 동적 props 사용하기 (Daynamic props) (1) 2020.07.23 Vue.js - 상위에서 하위 컴포넌트 데이터 전달 방법 (props) (0) 2020.07.22 Vue.js - 전역/지역 컴포넌트 개념 및 생성 (0) 2020.07.20 Vue.js - Vue CLI 이용하여 프로젝트 생성 및 설정 파일 확인 (0) 2020.07.09 댓글