본문 바로가기
Back-End Frameworks/Node.js

GET과 POST

by Downy_J 2023. 9. 23.
728x90
반응형
SMALL

이 개념부터 잡혀있지 않으면

뭘 하기가 너무 애매해진다

 

그래서 공부한걸 정리 해놓으려 한다

 

POST 내가 쓴거를 서버에 던지고 그에 해당하는 값을 가져오는거

GET 서버에 쿼리나 파라메터를 던져 그에 해당하는 값을 가져오는거

 

둘다 갖고 오는거긴 하지만 뭘 어떻게 가져오냐로 차이가 갈라짐

특징 POST GET
용도 데이터 생성, 수정 데이터 조회
데이터 전송법 HTTP Body URL, 쿼리 파라미터
보안 상대적으로 안전 url에 다 노출되있어 안전하진 않음
예시 게시물 작성, 회원가입, 제품 주문 등.. 뭐가 됬든 조회하는짓은 전부

GET은 주소창에 데이터 담아 다 던지고

POST는 내부적으로 body에 담아 던지는걸 말

 

node 처음 배울때 그냥 아~ 그렇구하 하고 넘어가서 이해를 잘 못했던 부분인

app.get() 라우팅 콜백 함수
HTTP 메소드 중에 get메소드로 들어온값을 받을게 "/" () => {}
    req는 리퀘스트 요청하는거
res는 리스폰스 내보내는거

콜백 함수 나중에 실행될걸 저 함수에 넣는다는 정도로 알면

 

저 코드 읽으면 app.get()해서 "/"주소로의 값을 라우팅 할건데 나중에 (req, res) => { res.send("Hello World!")}를 실행해서 보여줘!

요청에 대한 정보는 req에 담겨있고

응답에 대한 정보는 res에 담겨있다

 

 GET 방식으로 접근 했기 때문에 이렇게 가져오는것

주소창을 이용한 데이터전송 방식은 모두 GET임

 

 

 

 

 


JSON 데이터를 라우팅 해서 GET 방식으로 표현 해보겠음

그전에 라우팅 부터 보자면

이거고JSON으로 보내는건

GET 방식으로 /dog 했더니 { "🐶": "나는 개" } 가 나옴


변수로 값 줘보자

GET은 주소창 이용한거라 했다

그리

파리미터 방식과 쿼리 방식이 있음

 

파라미터 방식 : 같은화면 유저별로 부여를 해야한다면 변수로 담아 보여줘야 한다

방금한 저걸 유저 100만명이라치면 그 숫자만큼 만들건 아니잖음

 뭐 이런식으로하면 저거 하나만있으면 user에 id값만 넣음 되니까

코드가 저거 하나만 있으면 되잖음

 

id를 받을땐 : 이걸 달아주고

이걸 받은걸 어떻게 출력을 하냐면

주소창에 /user/:id 아이디 값이 뭔가 들어온다 파라미터 값으로 downy를 넣어주니 값이 나옴

자 그럼 저 파라미터값이 뭐냐

내가 주소창에 넣었던 바로 그 파라미터 값 downy가 바로 이거다

그럼 생각해봐야 할거

만약 db랑 연결해서 값을 넣는거라면. .?

저기 :id는 에 id는 내가 임의로 막 써도 되는걸까

아니면 지정된 DB컬럼명을 넣어야 할까?

 

답은 상관 없다

q.id를 해주고 그 값을 userId 에 넣었더니 결과가 저렇게 나온다

자 생각 해보자.. 저기 앞에 userId 저거만 DB쪽과 같으면 된다 나머진 딱히 상관은 읎는듯. .


쿼리로 값 줘보자

url의 예를 보면

 

 

q=downy

이거 키와 밸류로 작동한다

이런식으로 작성하면 이렇게 나온다

이런식으로 나온다는 말은

이런식으로 불러와 이런식으로 해당것만 출력이 된다는 말

근데 계속 화면이

공백으로 나온다... 그 이유..? 지정된 값이 읎잖음. .

만약 안나온다면 지정된 값연결이 안된거임

저 위 코드 봐도 id 라는 키값은 없음

userId는 아니지만 q.name을 해주니 값이 나온다

자 이걸 다시 DB로 생각해 보자

저러면 에러난다

왜? userId 자리에 id값이 들어가야지 네임이 들어가면 당연 에러나지...

쿼리 방식은 ? 쓰고 뒤에  A=a&B=b&...식으로 하는걸 말함


POST 방식으로 값 받기

이건 body 와 파라메터로 받을수있다

얘는 주소창으로 값 던지는게 아닌 직접 쓴거 던지는거

 

Axios나 Fetch 같은걸 사용할때 이 PSOT 쓴다

이땐 body 에 값이 담긴다

입력된 파라미터를 받아서 그걸 보여준다 라고 생각하면됨

/user/:id 값에 downy 라면 post 했을때 해당 유저 정보 가져온다랄지 하는

 

POST는 이렇게 주소로 값을 넣어 쓰는게 아니라

포스트맨을 사용해 값을 던져보면 알수 있다

 

이건 나중에. .


get으로 서버 함 만들어보자

이렇게 하는거야 뭐 아까 앞에서 했던거다

근데 이걸

 

바로 지정해 줘도 된다

이거 처음에 왜 이렇게 코드 짜는건지 이해 못했었는데

이젠 알거 같음

이 메커니즘만 이해하면 백엔드는 끝남!

그럼 저기 downy를 jerry로 바꾸면?

당연 jerry가 나옴

 

그럼 DB 연결할때 이런식으로 연결하면 해당 id값의 사람이 연결 되는거네?

조건으로 해당하는 사용자 불러오기 가능!

에러 처리 까지 완벽


cors 이슈

이게 뭔데?

npm i cors 로 모듈 설치 해주고

 2번으로 불러오고

5번으로 사용하겠다 하면 준비는 

 

 

 

자 이제 저 괄호안에 설정을 해 줄수가 있다

어디서 요청한건 거절하고 어디서 요청한건 승락하겠다 뭐 이런거

거름망 같은거

 

근데 저렇게 비워두면 모든 요청을 허락하겠단 말

 

728x90