카테고리 없음

JS Fetch 사용법

abccoco 2022. 7. 12. 21:50

JS Fetch 에서 method: POST, GET, DELETE 사용법을 알아보자

 

POST

post는 무언가 내가 작성한 글, 이미지, url등을 저장할때 사용한다.

 

가장 먼저 function 함수명()을 작성한 다음 내가 보내주고 싶은 데이터를 변수에 넣어준다.

const contentData = {
        // 내가 post로 보내주고 싶은 data의 .value
        content: document.getElementById('guestBookData').value,
    }

다음으로는 fetch와 url을 넣어준다.

// 내가 사용한 코드의 틀
const response = await fetch(`"URL 백엔드에서 작성한 주소를 넣어준다"`, {
    headers: {
        Authorization: '',
        Accept: ''
    },
    withCredentials: true,
    method: 'POST',
    body: JSON.stringify(contentData)
}
)

// 채워 놓은 코드
const response = await fetch(`"URL 백엔드에서 작성한 주소를 넣어준다"`, {
        headers: {
            // 이번 프로젝트의 경우 pyload의 access에 토큰이 저장되므로 로그인한 유저의 토큰을 Authorization을 통해 가져온다.
            Authorization: 'Bearer ' + localStorage.getItem('access'),
            // post 형식으로 보내줄 경우에는 데이터를 json화 해 주어야 한다.
            Accept: "application/json",
            'Content-type': 'application/json'
        },
        withCredentials: true,
        // 어떤 method 인지 지정해 준다. 디폴트 값은 GET mothod이다.
        method: 'POST',
        // body에 contentData의 data를 json 형식으로 데이터를 보내준다.
        body: JSON.stringify(contentData)
    }
    )

마지막

// 모든 데이터를 헤더 바디에 담아준 다음 json()한 다음 response_json에 넣어준다
response_json = await response.json()

	// 결과를 alert를 통해 확인할 수 있다.
    if (response.status == 200) {
        alert('정상')
    } else {
        alert('비정상')
    }
}

 

전체 코드

async function 함수명() {
    const contentData = {
        // 내가 post로 보내주고 싶은 data의 .value
        content: document.getElementById('guestBookData').value,
    }
    const response = await fetch(`"URL 백엔드에서 작성한 주소를 넣어준다"`, {
        headers: {
            // 이번 프로젝트의 경우 pyload의 access에 토큰이 저장되므로 로그인한 유저의 토큰을 Authorization을 통해 가져온다.
            Authorization: 'Bearer ' + localStorage.getItem('access'),
            // post 형식으로 보내줄 경우에는 데이터를 json화 해 주어야 한다.
            Accept: "application/json",
            'Content-type': 'application/json'
        },
        withCredentials: true,
        // 어떤 method 인지 지정해 준다. 디폴트 값은 GET mothod이다.
        method: 'POST',
        // body에 contentData의 data를 json 형식으로 데이터를 보내준다.
        body: JSON.stringify(contentData)
    }
    )
    response_json = await response.json()

    if (response.status == 200) {
        alert('정상')
    } else {
        alert('비정상')
    }
}

 

 

GET

get은 무언가 내가 작성한 글, 이미지, url등을 조회할때 사용한다.

post 방식에서의 feach 사용법과 중복된 내용이 많아서 이미 설명한 점을 제외하도록 하겠다.

async function show_guest_book() {
    const response = await fetch(`"URL 백엔드에서 작성한 주소를 넣어준다"`, {
        method: 'GET',
        // get은 조회만 하면 되기 때문에 post를 할때처럼 여러 데이터를 헤더와 바디에 보내지 않는다.
        headers: {
        	// 플젝에서 simple jwt를 사용해서 user 정보가 localStorage의 access에 있기 때문에 그 정보를 가져와야 한다.
            Authorization: 'Bearer ' + localStorage.getItem('access'), // 'Bearer ' 꼭 꼭 엔터 쳐줘야 한다.
        },
    })
        .then(response => response.json())
        // data 안에 html을 작성해서 보여주고 싶으 데이터를 html 안에 보여줄 수 있다.
        // 물론 그냥 html을 작성하면 안 나온다.
        .then(data => {
            // JSON.parse() 데이터를 실제 json화 시켜준다.
            // payloda에 있는 user_id 가져오려고 작성한것일 뿐 get 조회를 위한 코드는 아니다.
            const login_user = JSON.parse(localStorage.getItem("payload")).user_id
            }
        )
}

 

 

DELETE

delete는 무언가 내가 작성한 글, 이미지, url등을 삭제 할때 사용한다.

그냥 백엔드에서 만든 url만 method 'delete'로 보내주면 된다.

async function delete_guest() {
    const response = await fetch(`"URL 백엔드에서 작성한 주소를 넣어준다"`, {

        method: 'DELETE',
        headers: {
            Authorization: 'Bearer ' + localStorage.getItem('access'),
        },
    })
    response_json = await response.json()

    if (response.status == 200) {
        alert('삭제 되었습니다.')
    } else {
        alert('삭제 안됨.')
    }
}