learnyounode
Version:
Learn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.
50 lines (32 loc) • 2.09 kB
Markdown
'/api/parsetime' 경로로 받은 GET 요청에 대해 JSON 데이터를 제공하는 HTTP **서버**를 작성하세요. 요청에 포함된 쿼리 문자열은 'iso' 키에 ISO 시간 형식의 값이어야 합니다.
예를 들어,
/api/parsetime?iso=2013-08-10T12:10:15.474Z
이 JSON 응답은 'hour', 'minute', 'second' 속성만 가지고 있어야 합니다. 예를 들어,
```json
{
"hour": 14,
"minute": 23,
"second": 15
}
```
두 번째 엔드 포인트인 '/api/unixtime' 경로를 추가해 같은 쿼리 문자열을 받아 'unixtime' 속성에 UNIX 시간을 밀리 초 단위(1 Jan 1970 00:00:00 UTC부터의 경과 시간의 밀리 초 값)로 반환해야합니다. 예를 들어,
```json
{ "unixtime": 1376136615474 }
```
서버는 프로그램에 첫 번째 인자에서 주어진 포트로 수신해야 합니다.
----------------------------------------------------------------------
## 힌트
HTTP 서버의 `request` 객체는 요청을 두 엔드 포인트로 *"route"*하는데 필요한 `url` 속성을 가지고 있습니다.
Node 핵심 'url' 모듈을 이용해 URL과 쿼리 문자열을 파스할 수 있습니다. `new URL(request.url)`는 request.url의 내용을 구문 해석하고 도움이 되는 속성을 가진 객체를 줄 것입니다.
예를 들어, 커맨드 프롬프트에 다음을 입력하세요.
```sh
$ node -pe "new URL('/test?q=1', 'http://example.com')"
```
`url` 모듈의 문서는 브라우저에 이 주소를 넣으면 볼 수 있습니다.
{rootdir:/docs-nodejs/url.html}
응답은 JSON 문자열 형식이어야 합니다. 더 자세한 정보는 `JSON.stringify()`를 보세요.
또, 좋은 웹 개발자라면 Content-Type 속성을 설정해야 합니다.
```js
res.writeHead(200, { 'Content-Type': 'application/json' })
```
JavaScript `Date` 객체는 ISO 형식으로 날짜를 출력할 수 있습니다.(예를 들면 `new Date().toISOString()`) `Date` 생성자에 문자열을 넘겨준다면 이 형식으로 변환해 줄 수도 있습니다. `Date#getTime()`도 유용할 수 있습니다.