Files
freeCodeCamp/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.md
Nicholas Carrigan (he/him) c4fd49e5b7 chore: manual translations (#42811)
2021-07-10 09:53:54 +05:30

4.3 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
bd7158d8c443edefaeb5bdef Microservizio Timestamp 4 301508 timestamp-microservice

--description--

Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: https://timestamp-microservice.freecodecamp.rocks/. Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi:

  • Clonare questa repository GitHub e completare il tuo progetto localmente.
  • Usare il nostro progetto di avvio Replit per completare il tuo progetto.
  • Usare un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository GitHub.

Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata da qualche parte di pubblico. Quindi invia l'URL nel campo Solution Link. Facoltativamente, invia anche un link al codice sorgente dei tuoi progetti nel campo GitHub Link.

--hints--

È necessario fornire il proprio progetto, non l'URL di esempio.

(getUserInput) => {
  assert(
    !/.*\/timestamp-microservice\.freecodecamp\.rocks/.test(getUserInput('url'))
  );
};

Una richiesta a /api/:date? con una data valida dovrebbe restituire un oggetto JSON con una chiave unix che è un timestamp Unix della data di input in millisecondi

(getUserInput) =>
  $.get(getUserInput('url') + '/api/2016-12-25').then(
    (data) => {
      assert.equal(
        data.unix,
        1482624000000,
        'Should be a valid unix timestamp'
      );
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

Una richiesta a /api/:date? con una data valida dovrebbe restituire un oggetto JSON con una chiave utc che è una stringa della data di immissione nel formato: Thu, 01 Jan 1970 00:00:00 GMT

(getUserInput) =>
  $.get(getUserInput('url') + '/api/2016-12-25').then(
    (data) => {
      assert.equal(
        data.utc,
        'Sun, 25 Dec 2016 00:00:00 GMT',
        'Should be a valid UTC date string'
      );
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

Una richiesta a /api/1451001600000 dovrebbe restituire { unix: 1451001600000, utc: "Fri, 25 Dec 2015 00:00:00 GMT" }

(getUserInput) =>
  $.get(getUserInput('url') + '/api/1451001600000').then(
    (data) => {
      assert(
        data.unix === 1451001600000 &&
          data.utc === 'Fri, 25 Dec 2015 00:00:00 GMT'
      );
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

Il tuo progetto può gestire date che possono essere lette con successo da new Date(date_string)

(getUserInput) =>
  $.get(getUserInput('url') + '/api/05 October 2011').then(
    (data) => {
      assert(
        data.unix === 1317772800000 &&
          data.utc === 'Wed, 05 Oct 2011 00:00:00 GMT'
      );
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

Se la stringa della data di input non è valida, l'api restituisce un oggetto con la struttura { error : "Invalid Date" }

(getUserInput) =>
  $.get(getUserInput('url') + '/api/this-is-not-a-date').then(
    (data) => {
      assert.equal(data.error.toLowerCase(), 'invalid date');
    },
    (xhr) => {
      assert(xhr.responseJSON.error.toLowerCase() === 'invalid date');
    }
  );

Un parametro data vuoto dovrebbe restituire l'ora corrente in un oggetto JSON con una chiave unix

(getUserInput) =>
  $.get(getUserInput('url') + '/api').then(
    (data) => {
      var now = Date.now();
      assert.approximately(data.unix, now, 20000);
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

Un parametro data vuoto dovrebbe restituire l'ora corrente in un oggetto JSON con una chiave utc

(getUserInput) =>
  $.get(getUserInput('url') + '/api').then(
    (data) => {
      var now = Date.now();
      var serverTime = new Date(data.utc).getTime();
      assert.approximately(serverTime, now, 20000);
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

--solutions--

/**
  Backend challenges don't need solutions, 
  because they would need to be tested against a full working project. 
  Please check our contributing guidelines to learn more.
*/