본문 바로가기

프로젝트 회고/1) study(project)

HTTP 메서드 사용하기

서버에 있는 리소스를 사용하기 위해 , 어떤 동작을 원하는 지 요청해야한다.

우리는 HTTP 메서드를 사용하여 서버에게 원하는 바를 요청하게 된다.

 

 

💡 HTTP 메서드가 어떤건가요?

  HTTP 메서드는 클라이언트와 서버 사이에 이뤄지는 요청과 응답 데이터를 전송하는 방식 입니다. 

     총 9가지의 메서드가 있으나, 자주 사용하는 메서드는 POST, GET, PUT, PATCH, DELETE 입니다.

  • GET : 리소스 조회
  • POST:  요청 데이터 처리, 리소스 추가(등록)
  • PUT : 리소스 대체 , 해당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

 

 

1) GET 사용하기

데이터를 조회하는 과정에서 사용합니다.
url에 쿼리스트링을 이용하여 원하는 데이터를 조회할 수 있으며, 헤더에 데이터를 추가해서 전송할 수 있습니다.

 

// 정적 데이터 조회 (쿼리 X)
// 쿼리를 사용하지 않은 GET/members/100 형태로 정적 데이터 조회가 가능하다.
// GET 요청을 보낸 후, 서버에게 200코드와 함께 요청에 맞는 응답이 오면 사용할 수 있다.

		axios
			.get(`/members/${memberId}`, {
				headers: {
					'Content-Type': 'application/json',
				},
			})
			.then((res) => {
				return res.data;
			})
			.then((data) => {
				setUserDisplayName(data.displayName);
				// console.log(userDisplayName);
			});

 

// 동적 데이터 조회
// 해당 형식과 같이 파라미터를 사용하여 ?q=today 와 같이 해당 부분을 필터하여 동적으로
// 데이터를 취합하여 정보를 제공하는 방식
   
https://www.google.com/search?q=%EC%8A%A4%ED%81%AC%EB%A1%A4+%EC%8B%9C+fixed

 

 

 

 

2) POST 사용하기

데이터를 전달, 등록 하기 위해 사용합니다.
바디에 데이터를 넣어 서버로 전달하여 서버가 데이터를 새로 등록하거나, 다른 처리를 할 수 있도록 합니다.

 

axios
			// 데이터가 JSON 이라는 것을 헤더로 알려준다.
			.post(`/questions/${memberId}`, JSON.stringify(submitData), {
				headers: {
					'Content-Type': `application/json`,
				},
			})
			.then(() => setResultText('제출 완료되었습니다.'))
			.then(() => {
				setIsResultOpen(true);
				setTimeout(() => {
					setIsResultOpen(false);
					navigate('/');
				}, 1000);
			})
			.catch(() => {
				setResultText('제출에 실패했습니다. 잠시 후 다시 시도해주세요.');
				setIsResultOpen(true);
				setTimeout(() => {
					setIsResultOpen(false);
					setIsOpen(false);
				}, 1000);
			});

 

  데이터는 JSON, HTML-form, 파일 형태로만 전달 가능합니다. 

 

 

 

 

3) PUT 사용하기

저장된 데이터를 수정하기 위해 사용합니다.

해당 url에 데이터가 있다면, 덮어씌워 지금 요청한 데이터로 바꿉니다.

해당 url에 데이터가 없다면 새로 생성합니다.

  데이터를 덮어씌우기 때문에 정확한 url 값이 중요합니다. 구체적인 경로를 지정해야합니다.

 

axios
			// 정확한 경로 지정이 중요합니다.
			.put(`/answers/${targetId}`, JSON.stringify(newAnswer), {
				headers: {
					'Content-Type': `application/json`,
				},
			})
			.then((res) => console.log(res.data));

 

 

 

 

4) PATCH 사용하기

저장된 데이터를 수정하기 위해 사용합니다.
데이터를 덮어씌우는 것이 아닌 해당 리소스의 일부분 만을 변경합니다.

  전체 데이터가 아닌 일부분만 변경하고 싶다면, PUT이 아닌 PATCH로 변경해야합니다. 

 

axios
			// 해당 member_id 를 갖은 유저의 displayName, title, aboutMe 만 변경한다.
			.patch(`/members/${member_id}`, {
				displayName: data.displayName,
				title: data.title,
				aboutMe,
			})
			.then((response) => {
				setUserData(response.data);
				navigate(`/myprofile/${member_id}`);
			})
			.catch((error) => {
				console.error(error);
				navigate(`/`);
			});

 

 

 

 

5) DELETE 사용하기

데이터를 삭제 하기 위해 사용합니다.
요청한 url의 정보를 삭제합니다.

 

const deleteData = async () => {
		try {
			await axios.delete(`/members/${member_id}`); // 해당 id에 해당하는 문서 삭제
			alert('문서가 삭제되었습니다.');
			navigate(`/`);
		} catch (error) {
			console.error();
		}
	};

 

 

💡 HTTP 메서드를 사용하면 항상 데이터를 이용할 수 있나요?

  올바르게 작성했고, 서버가 올바르게 설정되어있다면 이용할 수 있습니다.

     하지만, 다양한 에러들이 발생할 수 있습니다.

     상태코드를 확인할 수 있다면, 어떤 에러인지 혹은 정상적으로 작동중인지 파악할 수 있습니다.
    https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

 

'프로젝트 회고 > 1) study(project)' 카테고리의 다른 글

CI / CD 를 통한 Github Action, Netlify  (0) 2023.07.14