-
Notifications
You must be signed in to change notification settings - Fork 1
/
opisStepByStep.txt
110 lines (85 loc) · 4.83 KB
/
opisStepByStep.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
1.
Czy spelnione sa wymagania systemowe dla swaggera:
F:\workspace\swagger\swagger-codegen>mvn --version
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20:41:47+02:00)
Maven home: D:\maven\apache-maven-3.6.0\bin\..
Java version: 11.0.2, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-11.0.2
Default locale: pl_PL, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
2.
Pobranie swaggera:
F:\workspace\swagger>git clone https://github.com/swagger-api/swagger-codegen.git
wersja z 13 marca 2019
3.
dodanie do
F:\workspace\swagger\swagger-codegen\modules\swagger-generator\pom.xml
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
bez tego jest blad kompilacji
4.
F:\workspace\swagger>cd swagger-codegen
5.
budowa swaggera:
F:\workspace\swagger\swagger-codegen>mvn clean package -DskipTests
Testy na windows 10 w tej wersji swaggera nie przechodza dlatego trzeba je wyłączyć.
6.
tutaj możemy zapoznac się z mozliwymi parametrami dla generatora spring:
https://generator.swagger.io/api/gen/servers/spring
7.
wg mnie optymalne parametry generatora sa te:
{
"groupId":"pl.itger.polishAPI",
"artifactId":"PolishAPI_2_1_2_sample",
"basePackage":"pl.itger.polishAPI",
"configPackage":"pl.itger.polishAPI.config",
"modelPackage" : "pl.itger.polishAPI.model",
"apiPackage" : "pl.itger.polishAPI.api",
"sourceFolder" : "F:\workspace\PolishAPI_2_1_2_sample",
"dateLibrary": "java8",
"java8" : "true",
"delegatePattern": "true",
"bigDecimalAsString" : "true",
"useTags" : "true"
}
najwazniejsze są delegatePattern, java8, bigDecimalAsString.
Dzieki Delegation pattern uzyskamy Loose Coupling oraz Separation of Responsibilities.
8.
Po ściągnieciu definicji polish-api przystepujemy do wygenerowania:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i F:\workspace\PolishAPI_2_1_2_sample\ZBP-polish-api-2_1_2-swagger.json -l spring -o F:\workspace\PolishAPI_2_1_2_sample\server -c F:\workspace\PolishAPI_2_1_2_sample\polishAPI_Options.json
polishAPI_Options.json jest to plik zawierający parametry opisane w punkcie 7.
9.
w netbeans : New Project/Maven/Project with Existing POM
10.
Ponieważ wśród parametrów generatora swagger zaznaczyliśmy iz interesuje nas wzorzec Delegate,
wystarczy teraz utworzyć klasy implementujące interfejsy AisApiDelegate, AsApiDelegate, CafApiDelegate, PisApiDelegate. W tych klasach zawrzemy logikę biznesowa i bedziemy
uniezaleznieni od generowanego kodu, tj bedziemy mogli regenerować Polish API nie zmieniając klas
z logika biznesową.
Np. na poczatek moze być jedna klasa:
@Service
public class NewService implements AisApiDelegate, AsApiDelegate,CafApiDelegate,PisApiDelegate{...}
Ważne aby miała adnotację "org.springframework.stereotype.Service"!
nastepnie czyścimy, budujemy mavenem nasz projekt i uruchamiamy go:
w netBeans są to komendy clean and build, a nastepnie run.
Spring boot powinien się odpalić i nasłuchiwać na porcie 8080.
11.
oto przykładowe wywołanie usługi getAccount:
curl -X POST -H "Accept: application/json" -H "Accept-Language: PL-pl" -H "Referer: http://localhost:8080/swagger-ui.html" -H "Content-Type: application/json" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vaXRnZXIucGwvIiwic3ViIjoidXNlcnMvSmFudXN6IGkgR3Jhxbx5bmEiLCJhdWQiOiJzb21ldGhpbmciLCJleHAiOjE1NTE4NjY1OTIsIm5hbWUiOiJKYW51c3ogaSBHcmHFvHluYSBOb3NhY3oiLCJzY29wZSI6InNlbGYgZ3JvdXBzL2FkbWlucyJ9.kfhkYfgXFstJe5Ws4UXGYtEQhh5NBg4Sl6Kqn1wkQH4" -H "X-JWS-SIGNATURE: 123" -H "Accept-Charset: utf-8" -H "X-REQUEST-ID: 1391c93e-45af-11e9-b210-d663bd873d93" -H "DNT: 1" -H "Accept-Encoding: gzip" -H "Connection: keep-alive" -d "{ \"accountNumber\": \"string\", \"requestHeader\": { \"ipAddress\": \"string\", \"isDirectPsu\": false, \"requestId\": \"1391c93e-45af-11e9-b210-d663bd873d93\", \"sendDate\": \"2019-03-13T14:34:03.777Z\", \"token\": \"eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vaXRnZXIucGwvIiwic3ViIjoidXNlcnMvSmFudXN6IGkgR3Jhxbx5bmEiLCJhdWQiOiJzb21ldGhpbmciLCJleHAiOjE1NTE4NjY1OTIsIm5hbWUiOiJKYW51c3ogaSBHcmHFvHluYSBOb3NhY3oiLCJzY29wZSI6InNlbGYgZ3JvdXBzL2FkbWlucyJ9.kfhkYfgXFstJe5Ws4UXGYtEQhh5NBg4Sl6Kqn1wkQH4\", \"tppId\": \"string\", \"userAgent\": \"string\" } }" http://localhost:8080/v2_1_2.1/accounts/v2_1_2.1/getAccount