node.js 유용한 모듈 (4) – request

오늘은 node.js modules you should know about 연재의 네 번째 시간이다.

첫 번째 연재에서는 node.js용 RPC 라이브러리인 dnode에 대해 다뤘고, 두 번째는 간결한 node용 옵션 파서 모듈인 optimist에 대해 살펴봤다. 그리고 세번째 연재는 node용 lazy 리스트 모듈인 lazy를 알아봤다.

이번에 내가 소개할 모듈은 Mikeal Rogers가 개발한 아주 훌륭한 request라는 놈이다.  request는 HTTP 스트림 처리를 위한 만능 모듈이다.

다음 예제를 살펴보자.

var fs = require('fs')
var request = require('request');

request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))

여러분은 방금 http://google.com/doodle.png 으로 HTTP 요청에 대한 응답을 받아 doodle.png로컬 파일을 생성했다.

다음은 더 놀라운 예제다.

var fs = require('fs')
var request = require('request');

fs.readStream('file.json').pipe(request.put('http://mysite.com/obj.json'))

와우! 위 코드는 여러분의 로컬 파일 file.jsonhttp://mysite.com/obj.json으로 HTTP PUT 요청을 통해 보내는 것이다.

var request = require('request');

request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))

와우! 위 예제 코드는 http://google.com/img.png의 내용을 HTTP GET으로 읽어서 http://mysite.com/img.png 위치에 HTTP PUT를 통해 보내는 것이다.

Browserling (역자주: 저자가 세운 스타트업 회사)에서는 couchdb로 데이터를 보내거나 받을 때, 이 모듈을 사용한다. 다음은 mikea의 테스트 couchdb에 JSON 문서를 저장하는 예제이다.

var request = require('request')
var rand = Math.floor(Math.random()*100000000).toString()

request({
  method: 'PUT',
  uri: 'http://mikeal.iriscouch.com/testjs/' + rand,
  multipart: [
    {
      'content-type': 'application/json',
      'body': JSON.stringify({
        foo: 'bar',
        _attachments: {
          'message.txt': {
            follows: true,
            length: 18,
            'content_type': 'text/plain'
           }
         }
       })
    },
    { body: 'I am an attachment' }
  ]
}, function (error, response, body) {
  if(response.statusCode == 201){
    console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand);
  } else {
    console.log('error: '+ response.statusCode);
    console.log(body);
  }
})

늘 그랬던 것처럼, 다음과 같이 npm을 통해 request 모듈을 설치해라.

npm install request

[역자주 - 이 모듈은 HTTP 처리를 하는데 굉장히 유용한 모듈이다. 비슷한 작업을 하고 있다면, node.js의 http 코어 모듈을 사용하는 것 대신에 사용해 볼것을 고려해 볼 만하다.]

If you love these articles, subscribe to my blog for more, follow me on Twitter to find about my adventures, and watch me produce code on GitHub!

1 Response

  1. yujeong Jeon 2013-08-24 / 8:31 오후

    안녕하세요. 저는 대학교 1학년인 학생입니다. 저희 동아리에서 학과게시판 웹앱을 만들고 있습니다. 제가 맡은 역할이 로그인과 회원가입 인데 회원정보를 db에 넣어야 합니다. db로는 mongoDB를 사용하고 있구요. 모듈은 mongoose를 사용합니다. 그런데 정보가 제대로 들어가지가 않습니다.. html에 입력한 정보를 nodejs를 이용하여 어떻게 db에 넣을수 있을까요???

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.

다음의 HTML 태그와 속성을 사용할 수 있습니다: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>