API methods - Gpaquola/recupero_lab_integrato GitHub Wiki

Testing API

Creazione di un eveto

Inviare una richiesta POST al server di testing come nell'esempio

127.0.0.1:8000/api/event/create

Inserendo i dati nel body:

 name:accadimento
 note:nel mezo del cammin di nostra vita
 begin:2019-05-02 23:00:00
 end:2019-06-02 00:00:00
 priority:1

I dati inseriti devono risultare positivi alla validazione, diversamente verrà restituino un json contentente gli errori relativi al matching dei parametri.

ad esempio:
{
    "message": "The given data was invalid.",
    "errors": {
        "begin": [
            "The begin does not match the format Y-m-d H:i:s."
        ]
    }
}

Di seguito le validation rules:

[
   'name' => 'required|string',
   'begin' => 'required|date_format:Y-m-d H:i:s',
   'note' => 'string|nullable',
   'end' => 'date_format:Y-m-d H:i:s|nullable',
   'priority ' => 'digits:1'
]

Se non comprendi la formattazione della data consulta la documentazione del metodo date() su php.net

nota: il valore di default della priority e impostato ad 1.

In caso di successo verrà restituito un json:

{
    "id": 29,
    "status": 200
}

contentete l'id dell'evento appena generato con status 200. In caso di fallimento il server ritornerà un 404.

Selezionare uno o più eventi

Tramite attributo

Effettuando una richiesta con verbo GET come nell' esempio,

127.0.0.1:8000/api/event/{event_attribute}

nota:{event_attribute} è da sostituire ad un attributo dell'evento, ad esempio name o id.

specificando nel body della richiesta {event_attribute} come chiave e il contenuto attraverso il quale filtrare la ricerca come valore, verrà restituito un json contentente tutti gli eventi che presentano lo stesso valore. Ad esempio:

127.0.0.1:8000/api/event/name

poi inserisco nel body

name:accadimento

risposta:

[
    {
        "id": 27,
        "name": "accadimento",
        "note": null,
        "priority": 1,
        "begin": "2019-05-02 23:00:00",
        "end": "2019-06-02 00:00:00",
        "created_at": "2019-04-03 23:38:03",
        "updated_at": null
    },
    {
        "id": 28,
        "name": "accadimento",
        "note": null,
        "priority": 1,
        "begin": "2019-05-05 23:00:00",
        "end": null,
        "created_at": "2019-04-03 23:50:07",
        "updated_at": null
    },
    {
        "id": 29,
        "name": "accadimento",
        "note": "nel mezzo del cammin di nostra vita",
        "priority": 1,
        "begin": "2019-05-02 11:00:00",
        "end": null,
        "created_at": "2019-04-04 00:57:59",
        "updated_at": null
    }
]

In caso di fallimento verrà restituto un errore 404.

nota: le regole di validazione precedentemente elencate si applicano anche a questo caso ad eccezione della regola require.

Per periodo di tempo

Le seguenti tre funzioni rispondono tutte a metodo GET nella forma:

  • per anno

127.0.0.1:8000/api/event/year/{year}

dove {year} è da sostituire con l'anno attraverso cui filtrare in formato a quattro cifre

  • per mese

127.0.0.1:8000/api/event/year/{year}/month/{month}

dove {month} è da sostituire con il mese dell'anno a due cifre(es. 03, 09)

  • per settimana

127.0.0.1:8000/api/event/year/{year}/week/{week}

dove {week} è da sostituire con la settimana dell'anno in formato adue cifre

  • per giorno

127.0.0.1:8000/api/event/year/{year}/month/{month}/day/{day}

dove {day} è da sostituire con il girno del mese in formato a due cifre.

La richiesta ritorna un json contente gli eventi attinenti alla ricerca, come nell'esempio:

127.0.0.1:8000/api/event/year/2018/month/10

[
    {
        "id": 15,
        "name": "consequatur",
        "note": "Sit aut magnam molestias magnam.",
        "priority": 8,
        "begin": "2018-10-03 10:51:42",
        "end": "1988-10-14 09:08:52",
        "created_at": "2019-03-31 21:34:02",
        "updated_at": "2019-03-31 21:34:02"
    }
]

In caso non venisse trovato alcun elemento verrà restituito un 404.

modificare un evento

Effenduando una richiesta con verbo POST nella forma

127.0.0.1:8000/api/event/modify/{id}

dove {id} è da sostituire all' id dell' evento che si desidera modificare.

Nel body della richiesta è sufficente specificare i campi che si desidera modificare, ma valgono le regole di validazione come nella ricerca per attributo. Di seguito l'esempio:

127.0.0.1:8000/api/event/modify/18

La risposta sarà un json contentente l'evento nella nuova versione in caso di successo,

{
    "6": {
        "id": 18,
        "name": "scendere il cane",
        "note": "Magnam qui suscipit voluptatem.",
        "priority": 3,
        "begin": "2019-04-04 23:20:28",
        "end": "1980-08-30 05:18:57",
        "created_at": "2019-04-03 22:36:34",
        "updated_at": "2019-04-03 22:36:34"
    }
}

oppure un 404 in caso di fallimento, ad esempio se la risorsa non esiste o è già stata modificata.

Eliminare un evento

Tramite id

Inviare una richiesta nella forma

127.0.0.1:8000/api/event/drop/{id}

dove {id} è da sostituire con l'id dell'evento desiderato.

In caso di successo verà tornato un json simile a quello ritornato creando un evento:

{"id":"{id}","status":200}

in caso contrario verrà restituito un 404.

Per lasso di tempo

Inviare una richiesta nella forma

127.0.0.1:8000/api/event/drop/year/{year}

dove {year} è da sostituire con l'anno attraverso cui filtrare in formato a quattro cifre

  • per mese

127.0.0.1:8000/api/event/drop/year/{year}/month/{month}

dove {month} è da sostituire con il mese dell'anno a due cifre(es. 03, 09)

  • per giorno

127.0.0.1:8000/api/event/drop/year/{year}/month/{month}/day/{day}

dove {day} è da sostituire con il girno del mese in formato a due cifre.

La richiesta ritorna un json contente gli eventi eliminati alla ricerca, come nell'esempio:

127.0.0.1:8000/api/event/drop/year/1976

[
    {
        "id": 25,
        "name": "ipsa",
        "note": "Non temporibus eum rerum delectus quis non tenetur.",
        "priority": 7,
        "begin": "1976-10-24 01:09:34",
        "end": "1976-05-14 15:54:31",
        "created_at": "2019-04-03 22:36:34",
        "updated_at": "2019-04-03 22:36:35"
    }
]

In caso non venisse trovato alcun elemento verrà restituito un 404.