O biblioteca agnostica cadru Node.js pentru (de) serializarea datelor dvs. catre API JSON (compatibil 1.0).

psst: Daca aveti nevoie de un panou de administrare pentru aplicatia dvs., verificati ce creez in jobul meu de zi cu zi la forestadmin.com – foloseste jsonapi-serializer pentru a de / serializa datele de date provenind de la / catre API-uri.

  • Migrati de la 2.0 la 3.0
  • Migrati de la 1.x la 2.0

Instalare

$ npm instalati jsonapi-serializer

Documentatie

Serializare

var JSONAPISerializer = require (‘jsonapi-serializer’). Serializer; new JSONAPISerializer (type, opts) .serialize (data);

Functia JSONAPISerializer ia doua argumente:

  • tip: tipul de resursa.
  • opts: Optiunile de serializare.

Apelarea metodei de serializare pe obiectul returnat va va serializa datele (obiectul sau matricea) intr-un document JSONAPI conform.

Optiune de serializare disponibila (opts argument)

Exemple

  • Exemplu expres
  • Utilizare simpla
  • Mai multe exemple in teste

Utilizare simpla:

var data = [{id: 1, firstName: ‘Sandro’, lastName: ‘Munda’}, {id: 2, firstName: ‘John’, lastName: ‘Doe’}];
var JSONAPISerializer = require (‘jsonapi-serializer’). Serializer; var UserSerializer = new JSONAPISerializer (‘utilizatori’, {atribute: [‘firstName’, ‘lastName’]}); var utilizatori = UserSerializer.serialize (date); // „utilizatorii” aici sunt compatibili cu JSON API.

Rezultatul va fi ceva de genul:

{“data”: [{“type”: “utilizatori”, “id”: “1”, “atribute”: {“first-name”: “Sandro”, “last-name”: “Munda”}}, {“type”: “utilizatori”, “id”: “2”, “atribute”: {“first-name”: “John”, “last-name”: “Doe”}}]}

Deserializarea

var JSONAPIDeserializer = require (‘jsonapi-serializer’). Deserializer; nou JSONAPIDeserializer (opteaza) .deserialize (date);

Functia JSONAPIDeserializer are un argument:

  • opts: Optiunile de deserializare.

Apelarea metodei de deserializare pe obiectul returnat va deserializa datele dvs. (document JSONAPI) la un obiect javascript simplu.

Optiunea de deserializare disponibila (opts argument)

  • keyForAttribute : O functie sau un sir pentru a personaliza atributele. Functiilor sunt transmise atributul ca un singur argument si se asteapta sa fie returnat un sir. Sirurile sunt pseudonime pentru functii incorporate pentru conversii de cazuri obisnuite. Optiunile includ: dash-case (implicit), lisp-case, spinal-case, kebab-case, underscore_case, snake_case, camelCase, CamelCase.
  • AN_ATTRIBUTE_TYPE : numele acestei optiuni corespunde tipului unei relatii din documentul dvs. JSONAPI.
    • valueForRelationship : O functie care returneaza orice vrei pentru o relatie (vezi exemplele de mai jos) poate returna o Promisiune (vezi testele)
    • transformare : o functie pentru a transforma fiecare inregistrare dupa deserializare.

Exemple

  • Utilizare simpla
  • Relatie
  • Mai multe exemple in teste

Utilizare simpla:

{data: [{type: ‘utilizatori’, id: ‘1’, atribute: {‘prenume’: Sandro, ‘prenume’: Munda}}, {type: ‘utilizatori’, id: ‘2’ , atribute: {‘first-name’: ‘John’, ‘last-name’: ‘Doe’}}]}
var JSONAPIDeserializer = require (‘jsonapi-serializer’). Deserializer; new JSONAPIDeserializer (). deserialize (jsonapi, function (err, users) {// `users` is …});
[{id: 1, firstName: ‘Sandro’, lastName: ‘Munda’}, {id: 2, firstName: ‘John’, lastName: ‘Doe’}];

Relatie:

{data: [{type: ‘users’, id: ‘54735750e16638ba1eee59cb’, atribute: {‘first-name’: ‘Sandro’, ‘last-name’: ‘Munda’}, relatii: {address: {data: { tip: ‘adrese’, id: ‘54735722e16620ba1eee36af’}}}}, {type: ‘utilizatori’, id: ‘5490143e69e49d0c8f9fc6bc’, atribute: {‘prenume’: ‘Lawrence’, ‘prenume’: ‘Bennett ‘}, relatii: {address: {data: {type:’ address ‘, id:’ 54735697e16624ba1eee36bf ‘}}}}]}
var JSONAPIDeserializer = require (‘jsonapi-serializer’). Deserializer; nou JSONAPIDeserializer ({adrese: {valueForRelationship: functie (relatie) {return {id: relation.id, ‘address-line1’: ‘406 Madison Court’, ‘zip-code’: ‘49426’, tara: ‘SUA’}) ;}}}). deserialize (jsonapi, function (err, users) {// `users` is …});
[{id: ‘54735750e16638ba1eee59cb’, ‘prenume’: ‘Sandro’, ‘prenume’: ‘Munda’, adresa: {id: ‘54735722e16620ba1eee36af’, ‘address-line1’: ‘406 Madison Court’, ‘ cod postal ‘:’ 49426 ‘, tara:’ SUA ‘}}, {id:’ 5490143e69e49d0c8f9fc6bc ‘,’ prenume ‘:’ Lawrence ‘,’ prenume ‘:’ Bennett ‘, adresa: {id:’ 54735697e16624ba1eee36bf ‘,’ address-line1 ‘:’ 406 Madison Court ‘,’ cod postal ‘:’ 49426 ‘, tara:’ SUA ‘}}]

Note despre promisiuni

Optiunea de deserializare valueForRelationship accepta returnarea unei promisiuni si astfel aceasta biblioteca foloseste promisiuni sub capota. bluebird a fost folosit anterior ca dependenta, dar din cauza problemelor legate de dimensiunea pachetului atat pe nod cat si pe web, a fost inlocuit cu promisiuni native.

Bluebird este cu siguranta mai performant decat Promisiunile native. Daca performanta este o preocupare majora Promisiunea poate fi poliamplificata la nivel global

  • nod – prin global.Promise = require (‘bluebird’)
  • web – Global Promise este atribuit automat atunci cand se utilizeaza eticheta script pentru a incarca bluebird

Eroare in serializare

var JSONAPIError = require (‘jsonapi-serializer’). Eroare; var error = new JSONAPIError (opts);

Functia JSONAPIError ia un argument:

  • opts: Optiunile de eroare. Toate optiunile sunt optionale.

Optiunea de eroare disponibila (optiunea argumentului)

  • id : un identificator unic pentru aceasta aparitie speciala a problemei.
  • status : codul de stare HTTP aplicabil acestei probleme, exprimat ca valoare sir.
  • cod : un cod de eroare specific aplicatiei, exprimat ca valoare sir.
  • titlu : un rezumat scurt, lizibil de catre om al problemei care NU TREBUIE sa se schimbe de la aparitia la aparitia problemei, cu exceptia scopurilor de localizare.
  • detaliu : o explicatie lizibila de om specifica acestei aparitii a problemei. Ca si titlul, valoarea acestui camp poate fi localizata.
  • sursa : un obiect care contine referinte la sursa erorii, incluzand optional oricare dintre urmatorii membri:
    • indicator : un indicator JSON [RFC6901] catre entitatea asociata din documentul de cerere [de exemplu „/ date” pentru un obiect de date primar sau „/ data / attribute / title” pentru un atribut specific].
    • parametru : un sir care indica parametrul de interogare URI care a provocat eroarea.
  • links : un obiect de linkuri care contine urmatorii membri:
    • despre : un link care duce la detalii suplimentare despre aceasta aparitie speciala a problemei.
  • meta : un obiect meta care contine meta-informatii non-standard despre eroare.

Exemple

  • Utilizare simpla
  • Mai multe exemple

Utilizare simpla:

var JSONAPIError = require (‘jsonapi-serializer’). Eroare; var errors = new JSONAPIError ({cod: ‘123’, sursa: {‘pointer’: ‘/ data / attribute / prenume’}, title: ‘Valoarea este prea scurta’, detail: ‘Prenumele trebuie sa contina cel putin trei caractere. ‘}); // „erori” aici sunt compatibile cu JSON API.

Rezultatul va fi ceva de genul:

{“errors”: [{“code”: “123”, “source”: {“pointer”: “/ data / attribute / prenume”}, “title”: “Valoarea este prea scurta”, “detail” : “Prenumele trebuie sa contina cel putin trei caractere.” }]}

MIT