Manipulatoare de rute generate automat, RESTful, CRUDdy

pentru a fi folosit cu hapi 8 (si 7) si pluginul Waterline, dogwater.

Ce face

Bedwetter inregistreaza manipulatorii de rute in functie de metoda si calea traseului dvs. Le transforma in puncte finale RESTful API care interactioneaza automat cu modelul definit folosind dogwater. Manipulatorul rutei se bazeaza pe una dintre cele opt panze de pat:

  • POST este utilizat pentru crearea, adaugarea cand adaugarea este utilizata pentru a crea o inregistrare, apoi adaugati-o la o relatie si pentru actualizare
  • PATCH este, de asemenea, utilizat pentru actualizare
  • PUT este folosit pentru adaugare atunci cand este folosit pentru a adauga pur si simplu o inregistrare la o relatie
  • GET este utilizat pentru cautare, gasireOne si populare (obtineti inregistrari conexe sau verificati o asociatie)
  • DELETE este folosit pentru distrugere si eliminare (eliminati o inregistrare dintr-o relatie)

Pentru moment, consultati documentatia SailsJs despre Blueprints pentru informatii despre parametrii pentru bedwetters. O portiune din cod este adaptata din acest carlig SailsJs.

Bedwetter va permite, de asemenea, sa gestionati resurse / inregistrari cu proprietarii. Exista optiuni pentru a actiona in numele unui utilizator prin autentificarea hapi. Puteti seta proprietarii automat pe inregistrari noi, puteti afisa inregistrari numai atunci cand sunt detinute de utilizatorul autentificat si puteti face ca bedwetters sa se comporte ca si cum inregistrarea principala ar fi utilizatorul autentificat.

Modele de udare a patului

Sa presupunem ca utilizatorii sunt asociati cu comentarii prin intermediul dogwater / Waterline. Modelul de utilizator asociaza comentariile intr-un atribut numit comentarii. Iata cateva exemple cu privire la modul in care pluginul va deduce care dintre cele opt bedwetters sa foloseasca, pe baza metodei rutei si a definitiei caii.

  • GET / utilizatori ↦ gasiti

    Returneaza o serie de utilizatori cu un raspuns HTTP 200 OK.

  • GET / users / count ↦ gasi cu / count

    Returneaza numarul intreg de utilizatori potrivite cu un raspuns HTTP 200 OK.

  • GET / users / {id} ↦ findOne

    Returneaza ID-ul utilizatorului cu un raspuns HTTP 200 OK. Raspunde cu un raspuns HTTP 404 Not Found daca utilizatorul nu este gasit.

  • GET / users / {id} / comments ↦ populate

    Returneaza o serie de comentarii asociate cu ID-ul utilizatorului. Returneaza HTTP 200 OK daca este gasit acel utilizator. Returneaza un raspuns HTTP 404 Not Found daca acel utilizator nu este gasit.

  • GET / users / {id} / comments / count ↦ populeaza cu / count

    Returneaza numarul intreg de comentarii asociate cu ID-ul utilizatorului. Returneaza HTTP 200 OK daca este gasit acel utilizator. Returneaza un raspuns HTTP 404 Not Found daca acel utilizator nu este gasit.

  • GET / users / {id} / comments / {childId} ↦ populate

    Returneaza HTTP 204 fara continut daca comentariul childId este asociat cu ID-ul utilizatorului. Returneaza un raspuns HTTP 404 Not Found daca acel utilizator nu este gasit sau comentariul nu este asociat cu utilizatorul.

  • POST / utilizatori ↦ creeaza

    Creeaza un utilizator nou folosind solicitarea de sarcina utila si il returneaza cu un raspuns HTTP 201 Creat.

  • POST / utilizatori / {id} / comentarii ↦ adaugati

    Creeaza un comentariu nou folosind solicitarea de sarcina utila si asociaza acel comentariu cu ID-ul utilizatorului. Returneaza acel comentariu cu un raspuns HTTP 201 Creat. Daca acel utilizator nu este gasit, returneaza un raspuns HTTP 404 Not Found.

  • PUT / users / {id} / comments / {childId} ↦ add

    Asociaza comentariul childId cu identificatorul de utilizator Returneaza un raspuns HTTP 204 fara continut la succes. Daca utilizatorul sau comentariul nu sunt gasite, returneaza un raspuns HTTP 404 Not Found.

  • DELETE / users / {id} ↦ destroy

    Distruge ID-ul utilizatorului. Returneaza un raspuns HTTP 204 fara continut la succes. Daca utilizatorul nu exista, returneaza un raspuns HTTP 404 Not Found.

  • DELETE / users / {id} / comment / {childId} ↦ elimina

    Elimina asocierea intre ID-ul utilizatorului si comentariul childId. Returneaza un raspuns HTTP 204 fara continut la succes. Daca utilizatorul sau comentariul nu exista, returneaza un raspuns HTTP 404 Not Found.

  • Actualizare PATCH / users / {id} sau POST / user / {id}

    Actualizeaza ID-ul utilizatorului utilizand sarcina utila a cererii (care de obicei va contine numai atributele de actualizat) si raspunde cu utilizatorul actualizat. Returneaza un raspuns HTTP 200 OK la succes. Daca utilizatorul nu exista, returneaza un raspuns HTTP 404 Not Found.

Optiuni

Optiunile pot fi transmise pluginului atunci cand sunt inregistrate sau definite direct pe handler-ul rutei. Cele definite in handlerul rutei le inlocuiesc pe cele transmise pluginului pe baza de ruta.

Actionand ca utilizator

Aceste optiuni va permit sa actionati in numele utilizatorului autentificat. De obicei, informatiile despre utilizator sunt luate direct de pe obiectul acreditarii fara a verifica steagul Request.auth.isAuthenticated. Acest lucru va permite sa utilizati modurile de autentificare oricum doriti. Pentru exemple, pentru moment va rugam sa consultati testele la test / options / actAsUser.js.

  • actAsUser (boolean, implicit fals). Se aplica pentru findOne, gasiti, creati, actualizati, distrugeti, adaugati, eliminati si completati.

    Acest lucru trebuie setat la adevarat pentru ca urmatoarele optiuni din sectiune sa aiba efect. Utilizatorul care actioneaza este definit de acreditarile de autentificare hapi si de optiunea userIdProperty.

  • userIdProperty (sir, implicit „id”). Se aplica pentru findOne, gasiti, creati, actualizati, distrugeti, adaugati, eliminati si completati.

    Cand actAsUser este adevarat, aceasta optiune intra in vigoare. Acesta defineste o cale in Request.auth.credentials pentru a determina ID-ul utilizatorului care actioneaza. De exemplu, daca obiectul acreditarii este egal cu {user: {info: {id: 17}}}, atunci „user.info.id” ar prelua id-ul utilizatorului 17. A se vedea Hoek.reach, care este folosit pentru a converti sirul intr-un deep proprietate in obiectul acreditarii hapi.

  • userUrlPrefix (sir, valorile implicite „/ user”). Se aplica pentru findOne, actualizare, distrugere, adaugare, eliminare si completare.

    Cand actAsUser este adevarat, aceasta optiune intra in vigoare. Aceasta optiune functioneaza in tandem cu userModel. Cand o cale de ruta incepe cu userUrlPrefix (dupa ce orice alt prefix inert a fost eliminat prin optiunea de prefix), adresa URL este transformata pentru a incepe /: userModel /: actingUserId inainte de a se potrivi cu un bedwetter; in esenta, stabileste inregistrarea primara pentru utilizatorul care actioneaza.

  • userModel (sir, implicit „utilizatori”). Se aplica pentru findOne, actualizare, distrugere, adaugare, eliminare si completare.

    Cand actAsUser este adevarat, aceasta optiune intra in vigoare. Aceasta optiune functioneaza in tandem cu userUrlPrefix. Cand o cale de ruta incepe cu userUrlPrefix (dupa ce orice alt prefix inert a fost eliminat prin optiunea de prefix), adresa URL este transformata pentru a incepe /: userModel /: actingUserId inainte de a se potrivi cu un bedwetter; in esenta, stabileste inregistrarea primara pentru utilizatorul care actioneaza. De exemplu, in mod implicit atunci cand actAsUser este activat, calea de rutare PUT / user / following / 10 ar fi considerata intern ca PUT / users / 17 / following / 10, care corespunde adaugarii bedwetter aplicata utilizatorului autentificat.

  • requireOwner (boolean, implicit fals). Se aplica pentru findOne, gasiti, creati, actualizati, distrugeti, adaugati, eliminati si completati.

    Cand actAsUser este adevarat, aceasta optiune intra in vigoare. Optiunea obliga orice inregistrare care este vizualizata sau modificata (inclusiv asociatiile) sa fie detinuta de utilizator. Proprietatea este determinata prin potrivirea id-ului utilizatorului in functie cu atributul inregistrarii determinat de ownerAttr sau childOwnerAttr.

  • setOwner (boolean, valorile implicite sunt false). Se aplica pentru a crea, actualiza, adauga.

    Cand actAsUser este adevarat, aceasta optiune intra in vigoare.

    follando con mi amante porno gratis anal
    follando en el campo me follo a mi madrastra
    comic porno en español rusas desnudas
    me follo a mi tia maduras en grupo
    porno peludas orgias rusas
    corridas en la garganta videos actrices españolas desnudas
    gitanas follando chicas corriendose a chorros
    como folla mi mujer sobar tetas
    brutal tops follando en tenerife
    sexo español gratis tetas en publico
    descargar pelis pornos porno español años 70
    milf camara oculta pollas corriendose
    hentai en castellano videos x incesto
    bbw abuelas mi mujer follando
    travestis jovencitas abuelas ardientes
    incestos lesbicos transexual española follando
    muy jovencitas porno mamadas por dinero
    tetonas delgadas maria patiño desnuda
    follando en tenerife milfs españolas
    folladas en el metro mamada a caballo

    Optiunea obliga orice inregistrare care este creata sau actualizata (inclusiv inregistrarile asociate) sa fie detinuta de utilizatorul care actioneaza. Proprietarul este setat pe atributul inregistrarii determinat de ownerAttr sau childOwnerAttr.

  • ownerAttr (sir sau fals, implicit “proprietar”). Se aplica pentru findOne, gasiti, actualizati, distrugeti, adaugati, eliminati si completati.

    Cand actAsUser este adevarat, aceasta optiune intra in vigoare. Daca este fals, requireOwner si setOwner sunt dezactivate in inregistrarea primara. In caz contrar, optiunile requireOwner si setOwner actioneaza folosind atributul inregistrarii primare cu numele specificat de ownerAttr.

  • childOwnerAttr (sir sau fals, implicit „proprietar”). Se aplica pentru adaugare, eliminare si completare.

    Cand actAsUser este adevarat, aceasta optiune intra in vigoare. Daca este fals, requireOwner si setOwner sunt dezactivate in inregistrarea copilului. In caz contrar, optiunile requireOwner si setOwner actioneaza folosind atributul inregistrarii copil cu numele specificat de childOwnerAttr.

Alte optiuni

  • prefix (sir). Se aplica pentru findOne, gasiti, creati, actualizati, distrugeti, adaugati, eliminati si completati.

    Permite sa specificati un prefix la calea rutei care va fi ignorat atunci cand se determina ce apa de pat trebuie aplicata.

  • createdLocation (sir). Se aplica pentru a crea si, uneori, pentru a adauga.

    Cand acest set (de obicei ca o optiune la nivel de traseu, mai degraba decat ca optiune la nivel de plugin), un antet de locatie va fi adaugat la raspunsuri cu o adresa URL care indica inregistrarea creata. Aceasta optiune va actiona ca primul argument pentru util.format atunci cand este setata si ar trebui sa existe un singur substituent pentru ID-ul inregistrarii create.

  • model (sir). Se aplica pentru findOne, gasiti, creati, actualizati, distrugeti, adaugati, eliminati si completati.

    Numele identitatii liniei de plutire a modelului. Daca nu este furnizat ca optiune, este dedus din calea traseului.

    Ex: / user / 1 / files / 3 are modelul utilizator.

  • associationAttr (sir). Se aplica pentru adaugare, eliminare si completare

    Numele atributului Waterline al asociatiei. Daca nu este furnizat ca optiune, se deduce din calea traseului.

    Ex: / user / 1 / files / 3 are fisierele de atribut de asociere (adica, utilizatorul modelului Waterline are un atribut, fisiere care contin inregistrari intr-o relatie de la unu la multi).

  • criterii (obiect). Se aplica pentru a gasi si a completa.

    • lista neagra (matrice)

      O serie de nume de atribute. Lista neagra a criteriilor interzice cautarea dupa anumite criterii de atribut.
  • unde (obiect). Se aplica pentru a gasi si a completa. Cand se specifica where.id, se aplica si pentru findOne, actualizare, distrugere, adaugare si eliminare.

    Seteaza de obicei criteriile implicite pentru inregistrarile dintr-o lista. Cheile reprezentate sunt nume de atribute, iar valorile reprezinta valori pentru aceste atribute. Acest lucru poate fi suprascris de parametrii de interogare. Cand unde.id este setat, acesta este utilizat in locul parametrului principal al caii cheii (similar optiunii id), dar nu suprascrie optiunea id.

  • id (sir sau numar intreg). Se aplica pentru findOne, actualizare, distrugere, adaugare, eliminare si completare.

    Fixeaza o cheie primara furnizata la o anumita valoare. De obicei, aceasta cheie primara ar fi extrasa din parametrul rutei. In majoritatea cazurilor, acest lucru va cauza o implementare confuza, dar poate merita pastrat pentru a interactiona cu functiile viitoare.

  • limita (numar intreg pozitiv). Se aplica pentru a gasi si a completa.

    Setati limita implicita a inregistrarilor returnate intr-o lista. Daca nu este furnizat, aceasta valoare implicita este 30.

  • maxLimit (numar intreg pozitiv). Se aplica pentru a gasi si a completa.

    Daca un utilizator solicita returnarea unui anumit numar de inregistrari intr-o lista (folosind parametrul de interogare limita), acesta nu poate depasi aceasta limita maxima.

  • populeaza (boolean). Se aplica pentru a gasi si a gasi One.

    Determina daca toate atributele de asociere sunt populate in mod implicit (suprascris de parametrul de interogare de completare, care contine o lista de atribute separate prin virgule). Implicit la false.

  • skip (intreg pozitiv). Se aplica pentru a gasi si a completa.

    Seteaza numarul implicit de inregistrari de omis intr-o lista (suprascris de parametrul de interogare saritura). Valori implicite la 0.

  • sortare (sir). Se aplica pentru a gasi si a completa.

    Seteaza criteriile de sortare implicite (adica createdDate ASC) (suprascris de parametrul de interogare sortare). Valorile implicite nu sunt aplicate.

  • valori (obiect). Se aplica pentru a crea, actualiza si, uneori, pentru a adauga. Seteaza valorile implicite ale atributelor in perechi cheie-valoare pentru inregistrari care trebuie create sau actualizate. Include, de asemenea, un parametru pe lista neagra:

    • lista neagra (matrice)

      O serie de nume de atribute care trebuie omise la crearea sau actualizarea unei inregistrari.
  • deletedFlag (boolean, valorile implicite sunt false). Se aplica pentru a distruge.

    In loc sa distruga obiectul, acesta va seta pur si simplu un semnal pe obiect folosind optiunile deletedAttr si deletedValue.

  • deletedAttr (sir, implicit „sters”). Se aplica pentru a distruge.

    Atributul de model care urmeaza sa fie actualizat cu sters valoarea.

  • DeleteValue (sir | int, valorile implicite 1). Se aplica pentru a distruge.

    Valoare care urmeaza sa fie actualizata pe atributul model specificat deletedAttr cand optiunea deletedFlag este activata.

  • omite (sir | matrice, implicit []). Se aplica pentru a adauga, a crea, a gasi, a gasi unul, a completa si a actualiza.

    Cand returnati o inregistrare sau o serie de inregistrari, lista campurilor nu va fi inclusa in raspunsul pentru fiecare inregistrare. Cand completati o asociere de inregistrari, puteti utiliza [Hoek.reach] (https://github.com/hapijs/hoek#reachobj-chain-options identificatorii cheii de stil pentru a omite proprietatile profunde. Daca proprietatea detine o matrice, omisiunile profunde vor fi omiteti proprietatea din fiecare inregistrare din matrice.

  • pkAttr (sir sau fals, valorile implicite sunt false). Se aplica pentru adaugare, distrugere, gasireOne, completare, eliminare, actualizare.

    Aceasta inlocuieste atributul utilizat pentru cautarea inregistrarii primare / parinte. In mod implicit, bedwetter foloseste cheia primara a modelului. Aceasta optiune poate fi utilizata pentru a cauta inregistrari de catre un identificator unic, altul decat cheia primara.

    De exemplu: pentru a cauta utilizatorii in functie de atributul lor de nume de utilizator, mai degraba decat de codul numeric al cheii primare, setati pkAttr la „nume de utilizator”. Apoi GET / users / john-doe va returna utilizatorul cu numele de utilizator „john-doe”.

  • childPkAttr (sir sau fals, implicit fals). Se aplica pentru adaugare, completare, eliminare.

    Aceasta suprascrie atributul utilizat pentru cautarea inregistrarii secundare / secundare. In mod implicit, bedwetter foloseste cheia primara a modelului. Aceasta optiune poate fi utilizata pentru a cauta inregistrari de catre un identificator unic, altul decat cheia primara.

Statul cererii

Starea solicitarii bedwetter poate fi accesata pe Request.plugins.bedwetter. Este un obiect care contine urmatoarele proprietati:

  • actiune (sir). Indica care dintre cele opt actiuni de udare a patului a fost folosita. Este unul dintre gasiti, gasiti, actualizati, creati, distrugeti, completati, adaugati sau eliminati.
  • optiuni (obiect). Acestea sunt optiuni active de bedwetter utilizate pentru cerere. Daca vreun carlig a modificat optiunile, acesta va fi reflectat aici.
  • primaryRecord (modelul liniei de plutire). Aceasta ofera acces la orice inregistrare principala asociata acestei cereri. Acest lucru nu va fi setat daca nu exista nicio inregistrare primara.
  • secondaryRecord (modelul liniei de plutire). Aceasta ofera acces la orice inregistrare secundara asociata acestei cereri. Acest lucru nu va fi setat daca nu exista nicio inregistrare secundara.

Utilizare

Iata un fel de exemplu nenorocit.

// Sa presupunem ca „server” este un server hapi cu pluginul bedwetter inregistrat. // Modele cu identitati „gradina zoologica” si „tratare” exista prin dogwater. // gradinile zoologice si delicii se afla intr-o corespondenta intre multe. // Va sugerez sa verificati ./test server.route ([{// metoda findOne: ‘GET’, cale: ‘/ zoo / {id}’, handler: {bedwetter: options}}, {// metoda find: ‘GET’, cale: ‘/ treat’, handler: {bedwetter: options}}, {// find with prefix method: ‘GET’, path: ‘/ v1 / treat’, handler: {bedwetter: {prefix: ‘ / v1 ‘}}}, {// metoda destroy:’ DELETE ‘, cale:’ / treat / {id} ‘, handler: {bedwetter: options}}, {// create method:’ POST ‘, path:’ / gradina zoologica ‘, handler: {bedwetter: options}}, {// metoda de actualizare: [‘ PATCH ‘,’ POST ‘], cale:’