res.send와 res.json은 뭐가 다른걸까?

deeno_0yong·2021년 12월 8일
1

개발환경 세팅

npm install express-generator -g

pakage가 깔려있다면 패스

express --view=pug '파일명'

routes/index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

프로젝트 생성 시, 끄적여져 있는 소스코드이다.
우리는 여기서 테스트를 위한 간단한 소스코드를 삽입해줄거다.

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

//test code
router.get('/:name', function (req, res) {
	let params = req.params;
	console.log('req.params : ' + JSON.stringify(params));
    res.end();
});

module.exports = router;

1. path parameter

test code에서 res.end();부분을 res.send();로 변경해줄건데,
이 때 데이터는 path 파라미터값으로 받은 데이터를 반환해준다.

res.send();

test code

//test code
router.get('/:name', function (req, res) {
	let params = req.params;
	console.log('req.params : ' + JSON.stringify(params));
    res.send(params);
});

이렇게 코드를 짜놓은 상태에서 API 테스트를 위해 서버를 열어준다.
필자는 프로세스 관리툴인 PM2를 사용했다.

node app.js

반환 데이터 확인

res.json();

test code에서 res.end();부분을 res.send();로 변경해줄건데,
이 때 데이터는 path 파라미터값으로 받은 데이터를 반환해준다.

//test code
router.get('/:name', function (req, res) {
	let params = req.params;
	console.log('req.params : ' + JSON.stringify(params));
    res.json(params);
});

반환 데이터 확인

❗️확인 가능한점

1) res.send Method는 기본적으로 json 형태로 반환한다.

2.function을 반환할 경우

res.send();

'hello nodejs'를 반환하는 함수 작성

const Test = () => {
	return 'hello nodejs!!';
};

반환 데이터 확인

음..? 아 이거 json으로 보내고 싶은데...🥺

res.set();

res.set Method로 response Header내 Content-Type을 수동으로 정의 가능.

res.set('Content-type', 'text/json');

반환 데이터 확인

res.json();

❗️확인 가능한점

1) res.send에서 json으로 반환 가능한 데이터가 아니라면 다른 Content-Type으로 반환
2) res.json은 반환받은 텍스트를 json으로 반환

❓유추 가능한점

1) res.set로 Content-Type를 지정하면 res.send는 함수를 호출한 후, 반환 텍스트를 지정된 Content-Type으로 변환 후 반환

끄적이다보니 생각난건데 'res.send는 왜 text로 반환을 안하고 기본적으로 json을 반환할까?'하고 생각해봤는데 실무에서 거의 대부분이 json http api를 사용해서 그렇지 않을까..? 라고 생각중이다. ㅎ.ㅎ

profile
목표가 생겨 개발을 시작한, 아직은 미성숙한 학생이라 합니다

0개의 댓글