React+axios로 Laravel API에서 JSON 가져오기
하고 싶은 일
환경
절차
React+axios
React 프로젝트 만들기
npx create-react-app react-axios
cd react-axios
yarn start
npx create-react-app react-axios
cd react-axios
yarn start
create-react-app
에 의해 호스트 환경을 더럽히지 않고 npx
명령을 사용할 수 있다 axios 도입
yarn add axios
React 코드
src/App.js
import React, { Component, Fragment } from 'react';
import axios from 'axios';
import logo from './logo.svg';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
tasks: []
};
this.getData = this.getData.bind(this);
}
getData() {
axios
.get('http://localhost:8000/test')
.then(results => {
const data = results.data;
console.log(data);
this.setState({
tasks: [...data]
});
});
}
render() {
const tasks = this.state.tasks.map(task => {
return <li key={task.id}>{task.title}</li>;
});
return (
<Fragment>
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
<div>
<button onClick={this.getData}>getData</button>
<ul>
{tasks}
</ul>
</div>
</Fragment>
);
}
}
export default App;
CORS 설정
Failed to load http://localhost:8000/test: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3001' is therefore not allowed access.
createError.js:16 Uncaught (in promise) Error: Network Error
at createError (createError.js:16)
at XMLHttpRequest.handleError (xhr.js:87)
Nginx로 설정하는 경우
여기 참고로 설정 파일에 아래에 추가
/etc/nginx/conf.d/default.conf
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "POST, GET, OPTIONS";
add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
add_header Access-Control-Allow-Credentials true;
Laravel에서 설정하는 경우
create-react-app
에서 개발하는 경우 Laravel 측에서 설정할 수있을 것 같습니다 동작 확인
참고
Reference
이 문제에 관하여(React+axios로 Laravel API에서 JSON 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dyoshikawa/items/c8b09cde728388c8feec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)