Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 스크럼
- 개발자
- 이벤트 루프
- 스크럼 마스터
- node
- Knowledge Graph
- 자바
- 특징
- express
- Stream
- RDF
- Python
- Router
- java
- nodejs
- node.js
- 지식 그래프
- socket.io
- benchmark
- 소켓
- 파헤쳐보자
- 스레드
- Groovy
- Django
- scrum
- ngrinder
- 노드js
- C++
- 노드
- 예제
Archives
- Today
- Total
라봉이의 개발 블로그
node.js express 4. route paths 라우트 경로, route parameters 라우트 파라미터, response methods 응답 메서드 본문
Node.js/express
node.js express 4. route paths 라우트 경로, route parameters 라우트 파라미터, response methods 응답 메서드
Labhong 2018. 3. 14. 01:08반응형
저번 포스트에서는 static file과 path 객체에 대해서 알아보았다.
express가 어떻게 정적 파일(static file)과 path 객체가 무엇이고 어떻게
사용하는 지 정말 간략하게 살펴보았다.
이번 포스트는 이전 포스트에서 다루었던 router를 좀 더 살펴보도록 하겠다.
Route paths
이전에 Router는 url의 path와 http method로 handler를 달리 할 수 있다고 설명하였다.
이 Route paths에 대해 조금 더 설명을 하고 싶었다.
express 문서를 보면 다음과 같은 구문이 있다.
express 문서: http://expressjs.com/en/guide/routing.html
"Route paths can be strings, string patterns, or regular expressions."
Route paths는 string이나 string 패턴 혹은 정규 표현식이 될 수 있다라고 써져 있다.
보통은 string 그대로 쓰면 되므로 보기 귀찮으신 분들은 이 부분은 건너 뛰셔도 된다.
예제를 보며 살펴보자.
// 일반적 문자열
app.get('/about', function (req, res) {
res.send('about')
})
위의 표현은 주로 우리가 쓰는 방식인 문자열로 Route path를 정하는 방식이다.
다음과 같이 string 패턴이 사용될 수도 있다.
아래의 Route path는 /abd나 /abcd가 될 수 있다.
app.get('/ab?cd', function (req, res) {
res.send('ab?cd')
})
아래의 Route path는 /abcd나 /abbcd /abbbcd가 될 수 있다.
app.get('/ab+cd', function (req, res) {
res.send('ab+cd')
})
string 패턴은 ?, +, *, () 등 정규식 문자의 서브셋을 사용할 수 있다.
string 패턴은 아래 경로에서 사용 방법을 알 수 있다.
또한 Route paths는 정규표현식도 가능하다.
다음 식은 paths에 a가 포함된 모든 항목과 일치한다.
app.get(/a/, function(req, res) {
res.send('/a/');
});
이렇듯 정규 표현식도 가능하지만 솔직히 잘 쓰이는 것은 아닌 것 같다.
(아직 가방끈이 짧아서..)
다음은 Route parameters에 대해 설명하도록 하겠다.
Route parameters
문서에는 Route parameter에 대해 다음과 같은 설명을 붙이고 있다.
"Route parameters are named URL segments that are used to capture the values specified at their position in the URL"
"Route parameter란 url안의 특정 위치에서 변수를 추출하기 위한 URL segment라고 불리는 것이다." 라고 설명하였다.
그냥 예시를 보는 것이 편할 것 같다.
예를 들어 다음과 같은 url이 서버에 도착했다고 가정하자.
http://localhost:3000/users/34/books/8989
그러면 밑의 코드가 캐치하게 된다.
app.get('/users/:userId/books/:bookId', function (req, res) {
res.send(req.params) // { "userId": "34", "bookId": "8989" }
})
딱 보면 알듯이 특정 user의 번호와 특정 책의 번호를 주기 위한 url이며
그 url에서 특정 변수를 추출해내서 사용할 수 있다.
변수 이름은 위와 같이 :변수명 을 이용해서 추출할 수 있다.
또한 하이픈(-)과 점(.)은 문자 그대로 해석되기 때문에 유용하게 사용할 수 있다.
Route path: /flights/:from-:to
Request URL: http://localhost:3000/flights/LAX-SFO
req.params: { "from": "LAX", "to": "SFO" }
Route path: /plantae/:genus.:species
Request URL: http://localhost:3000/plantae/Prunus.persica
req.params: { "genus": "Prunus", "species": "persica" }
이렇게 Route path에 대해서 주구장창 설명하는 이유는
url을 어떻게 만드는 지도 서비스를 구성하는 데에 필요하기 때문이다.
(일을 직접 해보지는 않았지만...)
Route parameters는 많이 쓰이는 것 같다.
그러니 잘 알아두도록 하자.
Response methods
Response 객체(res)의 methods는 클라이언트에게 어떤 방식으로 응답을 제공하는 지에 대한 메서드를 의미합니다.
다음 메서드 중 어느 하나도 호출되지 않는 경우, timeout 시간이 될 때까지 클라이언트 요청은 정지된 채로 방치됩니다.
메소드 |
설명 |
res.download() |
파일이 다운로드되도록 프롬프트합니다. |
res.end() |
응답 프로세스를 종료합니다. |
res.json() |
JSON 응답을 전송합니다. |
res.jsonp() |
JSONP 지원을 통해 JSON 응답을 전송합니다. |
res.redirect() |
요청의 경로를 재지정합니다. |
res.render() |
보기 템플리트를 렌더링합니다. |
res.send() |
다양한 유형의 응답을 전송합니다. |
res.sendFile() |
파일을 옥텟 스트림의 형태로 전송합니다. |
res.sendStatus() |
응답 상태 코드를 설정한 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로서 전송합니다. |
다음 포스트에서는 middleware란 무엇이며 어떻게 쓰는 것인지에 대해 알아보도록 하자.
반응형
'Node.js > express' 카테고리의 다른 글
express-session- cookie 외에 다른 방법으로 인증하는 법 (0) | 2018.08.31 |
---|---|
node.js express 5. middleware란? 미들웨어 정의, 미들웨어 유형 (4) | 2018.03.26 |
node.js express 3. static file 정적 파일 옵션, path 모듈 (4) | 2018.03.04 |
node.js express 2. router 객체, res.render 렌더링 (0) | 2018.03.04 |
node.js express 1. express란??, express generator, directory 구조 (3) | 2018.02.27 |
Comments