Project

General

Profile

Modalita di accesso ai servizi » History » Version 3

Simone Girolimetto, 03/25/2019 04:21 PM

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