node.js 에서 api요청하기

Mingtorr·2021년 1월 23일
6
post-thumbnail

보통 클라이언트 단에서 fetch를 통해 api를 요청하지만 서버단에서 api를 요청해야 하는 상황에 직면했다. 방법을 stackoverflow에서 열심히 검색했고 본 문서에서 정리해 보고자 한다.

우선 node.js에서 api를 요청하기 위해서는 request 모듈이 필요하다. 설치는 npm을 통해 가능하다.

추가로 네이티브에서 개발을 진행할 경우 안드로이드는 okhttp 아이폰은 alamofire모듈을 사용할 수 있다고 한다.

npm i --s request

GET


아래와 같은 방식으로 node.js에서 get 요청을 전송할 수 있다.

 var url = `http://www.kma.go.kr/wid/queryDFS.jsp?gridx=${nx}&gridy=${ny}`;

 request({url: url,method: "GET"},

하지만 위와 같은 방식은 가독성이 매우 떨어지는 코드라 추천하지 않는다.
아래 코드가 가독성이 훨씬 좋다. 위와 아래는 똑같은 결과를 내는 소스 코드이다.

const options = {
  uri: "http://www.kma.go.kr/wid/queryDFS.jsp",
  qs:{
    gridx:nx,
    gridy:ny
  }
};
request(options,function(err,response,body){
  //callback
})

POST


post 방식일 경우 options 객체에 method를 추가한다.

const options = {
  uri:'https://fcm.googleapis.com/fcm/send', 
  method: 'POST',
  body: {
    priority:'high',
    to:...,
  }
}
request.post(options, function(err,httpResponse,body){ //callback})

json형태로 전송하기

body: JSON.stringify(box), 를 적용하는 방법은 options에 json을 추가한다.

const options = {
  uri:'https://fcm.googleapis.com/fcm/send', 
  method: 'POST',
  body: {
    priority:'high',
    to:...,
  }
  json:true
}
request.post(options, function(err,httpResponse,body){ //callback})

header가 있는 경우

header를 적용해야 하는 경우 options 탭에 headers를 추가한다.

const options = {
  uri:'https://fcm.googleapis.com/fcm/send', 
  method: 'POST',
  body: {
    priority:'high',
    to:...,
  }
  json:true,
  headers: { Authorization: `key=${fcmKey}` },
}
request.post(options, function(err,httpResponse,body){ //callback})

마치며


본 문서에서는 가장 대표적인 request 모듈을 사용했지만 추가로 4가지의 방법이 더 존재한다고 한다.
HTTP – 표준 라이브러리, Axios, SuperAgent, Got이 그 방법이다. 각각의 방법을 설명하는 페이지가 있어 링크를 첨부한다.

https://www.twilio.com/blog/2017/08/http-requests-in-node-js.html

profile
츄르 값 벌기 위해 코딩하는 아키텍쳐

1개의 댓글

comment-user-thumbnail
2021년 11월 19일

const options = {
uri:'https://fcm.googleapis.com/fcm/send',
method: 'POST',
body: {
priority:'high',
to:...,
}
json:true
}
request.post(options, function(err,httpResponse,body){ //callback})

JSON을 POST 로 호출하는 코드 잘 썼습니다!
다만 조금 에러가 됬던 부분이 json 앞에 , 를 붙여야했었습니다.

그리고 to:..., 이 부분이 어떤 내용이 들어갈지 불명확했었습니다.
priority 도 꼭 필요한 내용으로 착각할 수 있을 것 같습니다.
JSON 바디에 들어갈 내용들이라는게 명시되어있으면 좋을 것 같습니다.

도움 받았습니다.
고맙습니다!

답글 달기