- Published on
Socket 서버 구현 6 (http Request)
1. request 모듈
-
HTTP Request를 생성하는 모듈로 request 모듈을 사용하였다.
-
request 모듈은 Node 내장모듈인 http 모듈을 사용하기 쉽게 wrapping 하였다.
-
request option에는 url, method, headers, form 이 있다.
-
아래와 같이 request(options, callback) 또는 request.get(options, callback), request.post(options, callback) 등으로 사용할 수 있다.
request(
{
url: "https://www.xxx.com",
method: "GET"
headers: {
'content-type': 'application/json',
'Cache-Control': 'no-cache'
}
}, function (error, response, body) {
console.log('status : ' + response.statusCode);
console.log(JSON.parse(body));
}
);
request.post(
{
url: "https://www.xxx.com",
form : {
email: 'xxx@email.com',
password: 'xxxx'
}
}, callback);
2. stream 연결
- 각 request method는 http 요청의 response가 사이즈가 큰 경우 stream으로 pipe시킬 수 있다.
var fileStream = fs.createWriteStream('xxx.png');
request('https://xxx/images/white.png').pipe(fileStream);
3. SwiftStack Authentication
- request를 통한 SwiftStack Authentication을 요청하고, 파일을 업로드하였다.
request.get(
{
headers:{
"X-Auth-User": 'Username',
"X-Auth-Key": 'Password',
"Accept": "application/json"
},
url: 'http://www.xxx.com/auth/v1.0'
}, function(error, response, body) {
authToken = response.headers['x-auth-token'];
storageURL = response.headers['x-storage-url'];
}
);
file.pipe(
request.put(
{
headers: {
"X-Auth-Token": authToken,
"Content-Type": "image/jpeg",
"Content-Length" : length
},
url: uploadURL
}, function (error, response, body) {
console.log(response.statusCode);
}
);
);