Axios란 node.js와 브라우저를 위한 Promise기반 HTTP 클라이언트
http를 이용하여 서버와 통신하기 위해 사용하는 패키지
⭐ API 서버는 json-server를 사용합니다.
const [todos, setTodos] = useState;
const fetchTodos = async () => {
const { data } = await axios.get("http://localhost:3001/todos");
setTodos(data);
}
useEffect(()=>{
fetchTodos();
console.log(todos);
}, [])
Plural routes
/posts
Plural routes / :id
//posts의 :id
/posts/1
// 해당하는 모든 정보 필터
/posts?title=react
// and 필터
/posts?title=react&id=3
// 메소드 값으로 필터
/todos?option.good=very-good
const [todo, setTodo] = useState({
title: "",
})
...
const onSubmitHandler = (todo) => {
axios.post("http://localhost:3001/todos", todo);
};
...
<form
onSubmit = {(e)=>{
e.preventDefault();
onSubmitHandler(todo);
}}
>
<input
type="text"
onChange={(e)=>{
const { value } = e.target; target에서 value 뽑기
setTodo({
...todo,
title: value,
})
}}
>
<button>추가</button>
</form>
const onClickDeleteButtonHandler = (todoId) => {
axios.delete(`http://localhost:3001/todos/${todoId}`);
};
...
<button
type="button"
onClick={() => onClickDeleteButtonHandler(todo.id)};
>
삭제
</button>
const [targetId, setTargetId] = useState(null);
const [editTodo, setEditTodo] = useState({
title: "",
})
...
const onClickEditButtonHandler = (todoId) => {
axios.patch(`http://localhost:3001/todo/${todoId}`)
};
...
<div>
<input
type="text"
placeholder="수정하고 싶은 Todo ID"
onChange={(e) => {
setTargetId(e.target.value);
}}
>
<input
type="text"
placeholder="수정할 값"
onChange={(e) => {
setEditTodo({
...editTodo,
title: e.target.value,
});
}}
>
<button
type="button" // form의 영향에서 벗어남
onClick={() => onClickEditButtonHandler(targetId, editTodo)}
>
수정하기
</button>
</div>
axios(config)
axios({
url: '/user/12345',
method: 'put',
data: {
firstName: 'Fred',
lastName: 'Flooooooo'
}
})
HTTP 메소드 별칭으로 요청