Project

General

Profile

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!