Modalita di accesso ai servizi » History » Version 2
Simone Girolimetto, 02/26/2019 08:31 AM
1 | 1 | Simone Girolimetto | h1. Modalita di accesso ai servizi |
---|---|---|---|
2 | |||
3 | h2. Introduzione |
||
4 | |||
5 | p(wiki-class-MsoNormal). Le API saranno HTTP con risposte JSON e gli HTTP STATUS CODE |
||
6 | |||
7 | p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpMiddle). Le risposte hanno sempre questo formato: |
||
8 | |||
9 | p(wiki-class-MsoListParagraphCxSpMiddle). { |
||
10 | |||
11 | p(wiki-class-MsoListParagraphCxSpMiddle). "<notextile></notextile>*version*<notextile></notextile>": "1.0.0" // versione API |
||
12 | |||
13 | 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% % |
||
14 | |||
15 | p(wiki-class-MsoListParagraphCxSpMiddle). "<notextile></notextile>*error_message*<notextile></notextile>": string %{font-size: 7pt;}// eventuale messaggio di errore per debug% |
||
16 | |||
17 | p(wiki-class-MsoListParagraphCxSpMiddle). "<notextile></notextile>*data*<notextile></notextile>": {}; %{font-size: 7pt;}// la risposta del server% |
||
18 | |||
19 | p(wiki-class-MsoListParagraphCxSpLast). } |
||
20 | |||
21 | 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: |
||
22 | |||
23 | * *200*<notextile></notextile>: successo |
||
24 | * *500*<notextile></notextile>: in caso di eccezione interna del programma |
||
25 | * *400*<notextile></notextile>: in caso di DTO o parametri della richiesta null |
||
26 | |||
27 | h2. Ambiente di test |
||
28 | |||
29 | p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). Url: http://webapitest.duebit.com/ |
||
30 | |||
31 | p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). User: 2bit@2bit.it |
||
32 | |||
33 | p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). Password: *2bit* |
||
34 | |||
35 | p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). Help: http://webapitest.duebit.com/help |
||
36 | |||
37 | p{font-size: 14px; font-weight: 400;}(wiki-class-MsoNormal). A questo indirizzo si trova la lista di tutte le API Disponibili. |
||
38 | |||
39 | h2. Autenticazione |
||
40 | |||
41 | p(wiki-class-MsoSubtitle). Per ottenere il token: |
||
42 | |||
43 | 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 |
||
44 | |||
45 | p(wiki-class-MsoSubtitle). Verb: *POST* |
||
46 | |||
47 | p(wiki-class-MsoSubtitle). Header: *Content-Type: application/x-www-form-urlencoded* |
||
48 | |||
49 | p(wiki-class-MsoSubtitle). Body: *x-www-form-urlencoded* |
||
50 | |||
51 | p(wiki-class-MsoListParagraphCxSpFirst). grant_type: *password* |
||
52 | |||
53 | 2 | Simone Girolimetto | p(wiki-class-MsoListParagraphCxSpMiddle). username: * 2bit@2bit.it * |
54 | 1 | Simone Girolimetto | |
55 | p(wiki-class-MsoListParagraphCxSpMiddle). password: *2bit* |
||
56 | |||
57 | p(wiki-class-MsoListParagraphCxSpMiddle). clientId: *identificatore univoco del client* (stringa) |
||
58 | |||
59 | p(wiki-class-MsoListParagraphCxSpMiddle). appName: passare una delle stringhe previste, tipo: *DueMobileRetail* o *EasyPosMobile*, o WebAppSelfOrder |
||
60 | |||
61 | 2 | Simone Girolimetto | p(wiki-class-MsoListParagraphCxSpMiddle). appVersion: *versione Major.Minor (<notextile></notextile>%{font-size: 7pt;}separate da punto) %<notextile></notextile>* |
62 | 1 | Simone Girolimetto | |
63 | p(wiki-class-MsoListParagraphCxSpLast). _%{font-size: 7pt;} %_ |
||
64 | |||
65 | p(wiki-class-MsoSubtitle). Esempio: |
||
66 | |||
67 | !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! |
||
68 | |||
69 | p(wiki-class-MsoSubtitle). Response - 200 Ok: |
||
70 | |||
71 | p(wiki-class-MsoSubtitle). Response - 400 Bad Request: |
||
72 | |||
73 | p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpFirst). !http://redmine.duebit.com/attachments/download/75/20190221-090925-427.png! |
||
74 | !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-090925-427.png! |
||
75 | |||
76 | p(wiki-class-MsoNoSpacing). Se il clientid è vuoto: |
||
77 | |||
78 | p(wiki-class-MsoListParagraphCxSpFirst). { |
||
79 | |||
80 | p(wiki-class-MsoListParagraphCxSpMiddle). "error": "invalid_grant", |
||
81 | |||
82 | p(wiki-class-MsoListParagraphCxSpMiddle). "error_description": " Il clientID è vuoto" |
||
83 | |||
84 | p(wiki-class-MsoListParagraphCxSpMiddle). } |
||
85 | |||
86 | p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpMiddle). Numero massimo di client raggiunto |
||
87 | |||
88 | p(wiki-class-MsoListParagraphCxSpMiddle). { |
||
89 | |||
90 | p(wiki-class-MsoListParagraphCxSpMiddle). "error": "invalid_grant", |
||
91 | |||
92 | p(wiki-class-MsoListParagraphCxSpMiddle). "error_description": " Accesso non consentito. Slot terminati." |
||
93 | |||
94 | p(wiki-class-MsoListParagraphCxSpMiddle). } |
||
95 | |||
96 | p{margin-left: 0cm;}(wiki-class-MsoListParagraphCxSpMiddle). Il client è già registrato e attivo con token valido. Non viene emanato il token. |
||
97 | |||
98 | p(wiki-class-MsoListParagraphCxSpMiddle). { |
||
99 | |||
100 | p(wiki-class-MsoListParagraphCxSpMiddle). "error": "already_granted", |
||
101 | |||
102 | p(wiki-class-MsoListParagraphCxSpMiddle). "error_description": " Il client è già autorizzato. Il token è già stato staccato." |
||
103 | |||
104 | p(wiki-class-MsoListParagraphCxSpMiddle). } |
||
105 | |||
106 | p(wiki-class-MsoListParagraphCxSpMiddle). Altri errori possibili: |
||
107 | |||
108 | * -19: L'appName è vuoto |
||
109 | * -20: L'appName non è stato riconosciuto: {0}. [I nomi previsti: AppRetail, AppRistorazione, altri] |
||
110 | * -21: L'appVersion è vuota. |
||
111 | * -22: L'appVersion non è stata riconosciuto: {0}. [Formato accettato: major.minor] |
||
112 | * -23: L'appVersion non è compatibile con le WebApi. [Versione app accettata: {0}, Versione app attuale: {1}] |
||
113 | |||
114 | 2 | Simone Girolimetto | h2. Verifica compatibilità web api |
115 | 1 | Simone Girolimetto | |
116 | p(wiki-class-MsoNormal). Una volta ottenuto il token lanciare la chiamata di verifica della compatibilità tra WebApi e Client: |
||
117 | |||
118 | p(wiki-class-MsoSubtitle). API: |
||
119 | |||
120 | p(wiki-class-MsoNormal). GET api/CheckCompatibility?clientId={clientId} |
||
121 | |||
122 | p(wiki-class-MsoSubtitle). Response: |
||
123 | |||
124 | p(wiki-class-MsoNormal). True se ok, altrimenti 500 con messaggio di errore. |
||
125 | |||
126 | p(wiki-class-MsoNormal). !http://redmine.duebit.com/attachments/download/72/20190221-090315-006.png! |
||
127 | !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-090315-006.png! |
||
128 | |||
129 | * Se AppVersion ha come major version 0 il controllo di versione viene saltato perché si assume che sia l'app in versione beta. |
||
130 | * Viene confrontata la major version spedita dall'app con il il numero inserito nel file di configurazione del server. |
||
131 | * La minor version per adesso viene ignorata, quindi prestare attenzione all'utilizzo. |
||
132 | |||
133 | 2 | Simone Girolimetto | h2. Interrogazione WebApi |
134 | 1 | Simone Girolimetto | |
135 | p(wiki-class-MsoNormal). Una volta ottenuto il token si possono fare le chiamate. |
||
136 | |||
137 | p(wiki-class-MsoNormal). Esempio: |
||
138 | |||
139 | p(wiki-class-MsoSubtitle). API: |
||
140 | |||
141 | p(wiki-class-MsoListParagraph). http://webapi.duebit.com/Api/Cliente |
||
142 | |||
143 | p(wiki-class-MsoSubtitle). Verb: GET |
||
144 | |||
145 | p(wiki-class-MsoSubtitle). Header: Content-Type: application/json |
||
146 | |||
147 | p(wiki-class-MsoListParagraphCxSpLast). Authorization: Bearer Zsxw5sypHKs4ljbj9hsAmDXJwwZkx3VFkUL |
||
148 | |||
149 | p(wiki-class-MsoSubtitle). Response example: |
||
150 | |||
151 | p(wiki-class-MsoSubtitle). !http://redmine.duebit.com/attachments/download/73/20190221-090401-526.png! |
||
152 | !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-090401-526.png! |
||
153 | |||
154 | p(wiki-class-MsoSubtitle). Altro esempio: |
||
155 | |||
156 | p(wiki-class-MsoSubtitle). !http://redmine.duebit.com/attachments/download/76/20190221-091143-370.png! |
||
157 | !http://redmine.duebit.com/projects/web_app_self_order/wiki/Introduzione/20190221-091143-370.png! |