Modalita di accesso ai servizi » History » Revision 2
Revision 1 (Simone Girolimetto, 02/26/2019 08:30 AM) → Revision 2/4 (Simone Girolimetto, 02/26/2019 08:31 AM)
h1. Modalita di accesso ai servizi h2. Introduzione p(wiki-class-MsoNormal). Le API saranno HTTP con risposte JSON e gli HTTP STATUS CODE p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpMiddle). Le risposte hanno sempre questo formato: p(wiki-class-MsoListParagraphCxSpMiddle). { p(wiki-class-MsoListParagraphCxSpMiddle). "<notextile></notextile>*version*<notextile></notextile>": "1.0.0" // versione API p(wiki-class-MsoListParagraphCxSpMiddle). "<notextile></notextile>*result_code*<notextile></notextile>":int%<notextile></notextile>%{font-size: 7pt;}, // codice che indica se la risposta ha avuto successo o meno. Sono gli stessi http status code% % p(wiki-class-MsoListParagraphCxSpMiddle). "<notextile></notextile>*error_message*<notextile></notextile>": string %{font-size: 7pt;}// eventuale messaggio di errore per debug% p(wiki-class-MsoListParagraphCxSpMiddle). "<notextile></notextile>*data*<notextile></notextile>": {}; %{font-size: 7pt;}// la risposta del server% p(wiki-class-MsoListParagraphCxSpLast). } p(wiki-class-MsoNormal). Per "result_code" vengono riutilizzati per semplicità gli status code HTTP; i seguenti codici valgono per tutte le chiamate, codici specifici saranno disponibili per alcune chiamate e verranno specificati nella documentazione: * *200*<notextile></notextile>: successo * *500*<notextile></notextile>: in caso di eccezione interna del programma * *400*<notextile></notextile>: in caso di DTO o parametri della richiesta null h2. Ambiente di test p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). Url: http://webapitest.duebit.com/ p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). User: 2bit@2bit.it p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). Password: *2bit* p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). Help: http://webapitest.duebit.com/help p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). A questo indirizzo si trova la lista di tutte le API Disponibili. h2. Autenticazione p(wiki-class-MsoSubtitle). Per ottenere il token: p(wiki-class-MsoListParagraph). "http://":http://webapi.duebit.com/Token<notextile></notextile><notextile></notextile>"webapitest":http://webapi.duebit.com/Help<notextile></notextile><notextile></notextile>".duebit.com/Token":http://webapi.duebit.com/Token p(wiki-class-MsoSubtitle). Verb: *POST* p(wiki-class-MsoSubtitle). Header: *Content-Type: application/x-www-form-urlencoded* p(wiki-class-MsoSubtitle). Body: *x-www-form-urlencoded* p(wiki-class-MsoListParagraphCxSpFirst). grant_type: *password* p(wiki-class-MsoListParagraphCxSpMiddle). username: * 2bit@2bit.it * username: *2bit@2bit.it* p(wiki-class-MsoListParagraphCxSpMiddle). password: *2bit* p(wiki-class-MsoListParagraphCxSpMiddle). clientId: *identificatore univoco del client* (stringa) p(wiki-class-MsoListParagraphCxSpMiddle). appName: passare una delle stringhe previste, tipo: *DueMobileRetail* o *EasyPosMobile*, o WebAppSelfOrder p(wiki-class-MsoListParagraphCxSpMiddle). appVersion: *versione Major.Minor (<notextile></notextile>%{font-size: 7pt;}separate da punto) %<notextile></notextile>* punto) %* p(wiki-class-MsoListParagraphCxSpLast). _%{font-size: 7pt;} %_ p(wiki-class-MsoSubtitle). Esempio: !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-090733-739.png!!http://redmine.duebit.com/attachments/download/74/20190221-090733-739.png! p(wiki-class-MsoSubtitle). Response - 200 Ok: p(wiki-class-MsoSubtitle). Response - 400 Bad Request: p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpFirst). !http://redmine.duebit.com/attachments/download/75/20190221-090925-427.png! !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-090925-427.png! p(wiki-class-MsoNoSpacing). Se il clientid è vuoto: p(wiki-class-MsoListParagraphCxSpFirst). { p(wiki-class-MsoListParagraphCxSpMiddle). "error": "invalid_grant", p(wiki-class-MsoListParagraphCxSpMiddle). "error_description": " Il clientID è vuoto" p(wiki-class-MsoListParagraphCxSpMiddle). } p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpMiddle). Numero massimo di client raggiunto p(wiki-class-MsoListParagraphCxSpMiddle). { p(wiki-class-MsoListParagraphCxSpMiddle). "error": "invalid_grant", p(wiki-class-MsoListParagraphCxSpMiddle). "error_description": " Accesso non consentito. Slot terminati." p(wiki-class-MsoListParagraphCxSpMiddle). } p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpMiddle). Il client è già registrato e attivo con token valido. Non viene emanato il token. p(wiki-class-MsoListParagraphCxSpMiddle). { p(wiki-class-MsoListParagraphCxSpMiddle). "error": "already_granted", p(wiki-class-MsoListParagraphCxSpMiddle). "error_description": " Il client è già autorizzato. Il token è già stato staccato." p(wiki-class-MsoListParagraphCxSpMiddle). } p(wiki-class-MsoListParagraphCxSpMiddle). Altri errori possibili: * -19: L'appName è vuoto * -20: L'appName non è stato riconosciuto: {0}. [I nomi previsti: AppRetail, AppRistorazione, altri] * -21: L'appVersion è vuota. * -22: L'appVersion non è stata riconosciuto: {0}. [Formato accettato: major.minor] * -23: L'appVersion non è compatibile con le WebApi. [Versione app accettata: {0}, Versione app attuale: {1}] h2. Verifica compatibilità web api h1. VERIFICA COMPATIBILITA' WEBAPI APP p(wiki-class-MsoNormal). Una volta ottenuto il token lanciare la chiamata di verifica della compatibilità tra WebApi e Client: p(wiki-class-MsoSubtitle). API: p(wiki-class-MsoNormal). GET api/CheckCompatibility?clientId={clientId} p(wiki-class-MsoSubtitle). Response: p(wiki-class-MsoNormal). True se ok, altrimenti 500 con messaggio di errore. p(wiki-class-MsoNormal). !http://redmine.duebit.com/attachments/download/72/20190221-090315-006.png! !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-090315-006.png! * Se AppVersion ha come major version 0 il controllo di versione viene saltato perché si assume che sia l'app in versione beta. * Viene confrontata la major version spedita dall'app con il il numero inserito nel file di configurazione del server. * La minor version per adesso viene ignorata, quindi prestare attenzione all'utilizzo. h2. h1. Interrogazione WebApi WebAPi p(wiki-class-MsoNormal). Una volta ottenuto il token si possono fare le chiamate. p(wiki-class-MsoNormal). Esempio: p(wiki-class-MsoSubtitle). API: p(wiki-class-MsoListParagraph). http://webapi.duebit.com/Api/Cliente p(wiki-class-MsoSubtitle). Verb: GET p(wiki-class-MsoSubtitle). Header: Content-Type: application/json p(wiki-class-MsoListParagraphCxSpLast). Authorization: Bearer Zsxw5sypHKs4ljbj9hsAmDXJwwZkx3VFkUL p(wiki-class-MsoSubtitle). Response example: p(wiki-class-MsoSubtitle). !http://redmine.duebit.com/attachments/download/73/20190221-090401-526.png! !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-090401-526.png! p(wiki-class-MsoSubtitle). Altro esempio: p(wiki-class-MsoSubtitle). !http://redmine.duebit.com/attachments/download/76/20190221-091143-370.png! !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-091143-370.png!