일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 우분투 시간 변경
- 단어 제거
- 중복 문자열
- 5.3.8 Modifying Queries
- lastIndexOf()
- @Moditying @Query
- 중복단어제거
- 중복된 단어
- 시퀄 문법
- 프론트엔드 스쿨
- 재귀스왑
- 스프링 데이타 JPA
- 문자열 중복
- indexOf()
- 중첩배열평탄화
- 코딩 어?
- js 문자열을 문자배열로
- 중첩배열
- ubuntu타임존
- 제로베이스
- sql like연산자
- 문자열순서바꾸기
- 객체의 밸류값만 찾기
- 배엘에서 스왑
- ...점점점문법
- 객체의키값만 찾기
- sql 문자열 패턴 검색
- 레디스 확인
- 깃 토큰 만료
- 중복문자제거
- Today
- Total
코딩기록
항해 23일) Node.js- 라우팅 본문
express에서 라우팅이라는 개념은 클라이언트로부터 요청받은 URL과 뷰를 매칭시키는 것이라고 할 수 있습니다. 라우팅이라는 사전적인 의미 그대로 특정한 URL에 대해 특정한 뷰로 연결하는 역할입니다.
URL이라고 했지만 실제로 라우팅에 사용되는 정보는 호스트 이름을 제외하고 나머지 경로를 표시한 문자입니다.
예를 들어 다음과 같은 URL로 접속하면 라우팅 대상은 '/hello'라는 문자열이 됩니다.
http://localhost:3000/hello
다음은 express를 이용하여 웹 사이트 프로젝트를 만들면 생성되는 app.js의 일부분으로, 페이지 라우팅의 기본적인 구조를 보여줍니다.
app.get('/', function(req,res) {
res.render('index.jade');
});
app.get 함수는 GET 방식으로 들어오는 경로를 연결하여, 이에 대응하는 동작을 콜백 함수로 기술할 수 있도록 합니다. 지정된 Path '/'으로, 웹 사이트의 루트(root) 페이지로 연결합니다. 루트 페이지란, 제일 처음 보이게 되는 메인 페이지를 의미합니다.
콜백 함수의 req는 요청객체(Request Object)이고 res는 응답객체(Response Object)입니다. 요청객체에는 클라이언트에서 보낸 여러 정보가 포함되어 있습니다. 응답 객체에는 우리가 클라이언트에 응답할 수 있게 하는 객체인데, 위에서 render() 이라는 함수로 뷰를 렌더링하게 되어 있습니다.
코드를 보면 쉽게 알 수 있듯이, 렌더링할 내용은 index.jade이고 이는 jade 형식으로 표현된 뷰파일입니다. jade는 외부모듈로, 템플릿 엔진 모듈입니다. jade는 후반부 강의에서 자세히 설명하도록 하겠습니다.
즉 한마디로 쉽게 설명하자면, 위 코드는 설정된 경로의 루트 페이지('/')로 접속했을 때, index.jade 페이지를 보여준다는 뜻입니다.
app.post 함수는 POST 방식으로 들어오는 경로를 연결합니다. POST 방식은 express Configuration에서 bodyParser를 포함해서 요청 객체의 body 속성을 통해 클라이언트에서 HTML Form으로 작성한 데이터를 읽어올 수 있습니다.
app.post('/post', function(req, res){
res.render('write.jade', {
id: req.body.id,
name: req.body.name
});
})
위의 코드는 write.jade로 랜더링하면서 id, name이라는 HTML Form의 Item으로 넘어온 값을 전달하여 출력하는 것입니다. 렌더링할 때에 id, name의 값이 jade 템플릿 엔진(현재는 pug로 이름 변경)을 통해 write.jade 파일에 넘겨지고 write.jade에는 이를 출력합니다.
express의 페이지 라우팅의 장점 중 하나는 라우팅을 유연하게 할 수 있다는 점입니다. app.get, app.post의 첫번째 매개변수에는 정규 표현식 등 특정 표현식을 사용할 수 있습니다.
app.get('/hello/:id', function(req, res) {
var id = req.params.id;
~~
});
위 경우 http://localhost:3000/hello/world로 요청을 받았다면 req.params.id에는 'world'라는 문자열이 들어가게 됩니다.
URL을 이용해 값을 넘겨줄 수 있다는 뜻이지요.
만약 methodOverride를 설정에 추가하면 get, post 말고도 put 등의 REST 방식도 사용할 수 있습니다.
(REST 방식이란 Representational State Transfer의 약자로 데이터 전송 방식 중 하나를 의미합니다.)
참고
*라우팅
페이지 라우팅 - 한 눈에 끝내는 Node.js (goorm.io)
'항해99 > 챕터3 주특기 Node.js' 카테고리의 다른 글
항해 25일) Node.js E11000 에러 (0) | 2022.02.03 |
---|---|
항해 25일) Node.js- 몽고디비-로보3티에서 직접 문서추가, 수정하기 mongoDB, mongoose, Robo3T (0) | 2022.02.03 |
항해 24일) Node.js- 프론트 정적 파일 지정 (webRoot) (0) | 2022.02.02 |
항해 23일) Node.js- new Date 날짜 포맷 (YYYY-MM-DD hh:mm:ss) (0) | 2022.02.01 |
MongoDB Client: Robo3T 폰트 변경, 키우기 (0) | 2022.01.22 |