Project

General

Profile

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!