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.04 kB
Markdown
Scrivi un **server** HTTP che serva dati JSON quando riceve una richiesta GET al percorso '/api/parsetime'. Aspettati una richiesta contenente una query string con una chiave 'iso' e un valore di tempo in formato ISO come valore.
Ad esempio:
/api/parsetime?iso=2013-08-10T12:10:15.474Z
La risposta JSON deve contenere soltanto le proprietà 'hour', 'minute' e 'second'. Ad esempio:
```json
{
"hour": 14,
"minute": 23,
"second": 15
}
```
Aggiungi un secondo endpoint per il percorso '/api/unixtime' che accetta la stessa query string, ma restituisce un tempo in formato UNIX epoch time in millisecondi (il numero di millisecondi dal 1 Gennaio 1970 00:00:00 UTC) sotto la proprietà 'unixtime'. Ad esempio:
```json
{ "unixtime": 1376136615474 }
```
Il tuo server deve ascoltare sulla porta fornita come primo argomento al tuo programma.
----------------------------------------------------------------------
## SUGGERIMENTI
L'oggetto `request` di un server HTTP possiede una proprietà `url` di cui avrai bisogno per *"instradare"* le tue richieste ai due endpoint.
Puoi decodificare l'URL e la query string usando il modulo Node core 'url'. `new URL(request.url)` decodificherà il contenuto di request.url e ti restituirà un oggetto con proprietà utili.
Ad esempio, scrivi sulla riga di comando:
```sh
$ node -pe "new URL('/test?q=1', 'http://example.com')"
```
La documentazione sul modulo `url` può essere ottenuta puntando il tuo browser all'indirizzo:
{rootdir:/docs-nodejs/url.html}
La tua risposta deve essere in formato stringa JSON. Dài un'occhiata a `JSON.stringify()` per maggiori informazioni.
Il tuo server deve anche essere un buon cittadino del web e impostare il Content-Type in modo appropriato:
```js
res.writeHead(200, { 'Content-Type': 'application/json' })
```
L'oggetto JavaScript `Date` può produrre date in formato ISO, ad es. `new Date().toISOString()`. Può anche decodificare questo formato se gli passi una stringa al costruttore `Date`. `Date#getTime()` tornerà anch'esso utile.