|
||
---|---|---|
buisnesslogic | ||
restservice | ||
.gitignore | ||
.gitlab-ci.yml | ||
gettoken.py | ||
init.sql | ||
pom.xml | ||
README.md | ||
stack.yml |
Start aplikacji
Zeby wystartowac aplikacje backendu najpierw nalezy postawic testowa baze danych na naszym komputerze za pomoca dockera. Jesli raz juz go odpalimy przy nastepnym razem bardzo mozliwe, ze wlaczy sie sam. AAby sprawdzic czy docker jesty wystartowany mozna uzyc docker ps
docker-compose -f stack.yml up -d
Następnym krokiem jest odpalenie poniższych komend w terminalu.
cd restservice
mvn spring-boot:run
Token obtaining
Żeby tesotwać API wpełni potrzebny nam jest token który otrzymujemy na podstawie ticketa z systemu autoryzacyjnego CAS. Z tego powodu system autoryzacji działa inaczej niż w "książkowych" restowych aplikacjach i np Postman za nas jej nie dokona. Musimy mu podać już uzyskany token. Aby łatwo go uzyskać odpal skrypt
python gettoken.py
Jeżeli chcesz używać skryptu zmiejaniąc gdzie znajduje się backend wpisz:
python gettoken.py 192.168.0.212
Jeżeli chcesz używać skryptu bez uruchamiania przeglądarki wpisz:
python gettoken.py no-browser
Na koniec w przęglądarce dostaniesz w odpowiedzi token. W samym pliku można zmienić porty aplikacji jeśli to potrzebne.
Profiles
W aplikacji posiadamy dwa profile. dev
i prod
. Dev używamy do testowania aplikacji lokalnie. Pord służy do stworzenia builda na produkcję.
Profil wybieramy w pliku restservice/src/main/resources/application.properties
wpisując odpowiednią nazwę
spring.profiles.active=prod
Jeżeli chcemy zmienić jakieś opcję dla pordukcji to robimy to w tym sammym katalogi w pliku application-prod.properties
i dla dev analogicznie w application-dev.properties
.
W paczce dla proda w protpertiesach poufne dane odczytywane są ze zmiennych środowiskowych systemu na którym odpalana jest aplikacja. Ustawić trzeba następujące zmienne:
PLANNAPLAN_MYSQL_DB_HOST
- host bazy danych nplocalhost
PLANNAPLAN_MYSQL_DB_PORT
- port na którym działa bazaPLANNAPLAN_MYSQL_DB
- nazwa bazy dancyh. W profilu dev jest to np testPLANNAPLAN_MYSQL_DB_USERNAME
- nazwa użytkownika bazyPLANNAPLAN_MYSQL_DB_PASSWORD
- hasło użytkownika bazyPLANNAPLAN_EMAIL_HOST
- host naszego dostawcy maila z którego będziemy wssyłać wiadomościPLANNAPLAN_EMAIL_PORT
- port naszego dostawcy mailaPLANNAPLAN_EMAIL_USERNAME
- login naszego mailaPLANNAPLAN_EMAIL_PASSWORD
- hasło naszego mailaPLANNAPLAN_EMAIL
- nasz adres mailaPLANNAPLAN_CONSUMER_KEY
- nasz klucz do usos apiPLANNAPLAN_CONSUMER_SECRET
- secret naszego klucza
Należy też pamiętać, że zmienne PLANNAPLAN_CONSUMER_KEY
oraz PLANNAPLAN_CONSUMER_SECRET
są potrzebne również w profilu dev
więc trzeba je dodać w celu tesotowania do zmiennych we własnym systemie
Packaging
Zeby spakowac apke do jara
wystarcza dwie komendy zaczynajac z glownego katalogu projektu
mvn clean; mvn install; cd restservice; mvn clean package spring-boot:repackage
Utworzony zostanie jar w restservice/target/restservice-1.0-SNAPSHOT.jar
. Oczywiscie zeby jar zadzialal kontenery dockerowe musza byc odpalone (lub baza danych na serwerze jesli zmienialismy propertisy z localhost)
Generowanie dokumentacji
Javadocs
mvn javadoc:javadoc
Api docs
Żeby zobaczyć dokumentację api trzeba wejść w przeglądarce na http://localhost:1285/swagger-ui.html
po odpaleniu aplikacji.
Nazewnictwo odpowiedzi
Każdą odpowiedź zaczynamy od modelu, który opisuje np. Courses
a kończymy na Response
. Między tymi dwoma członami możemy dodawać modyfikatory opisujące dokładniej odpowiedź np. Default
. W ten sposób możemy otrzymać nazwę CoursesDefaultResponse.java
Troubleshooting
Spring chyba cacheuje jakies dane dotyczace polaczenia wiec jesli spring wywali Ci blad Connection Refused
, a wiesz, ze ta baza stoi na podanym ip i porcie to sprobuj
mvn clean
mvn install
Jeżeli używasz VSCode i testy, które wymagają podanych zmiennych środowiskowych (testy odpytywania usos api) trzeba podać te zmienne w pliku .vscode/settings.json
{
"files.exclude": {
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
},
"java.configuration.updateBuildConfiguration": "disabled",
"java.format.settings.url": "eclipse-formatter.xml",
"java.test.config": [
{
"name": "myConfiguration",
"workingDirectory": "${workspaceFolder}",
"env": {
"PLANNAPLAN_CONSUMER_KEY": "value",
"PLANNAPLAN_CONSUMER_SECRET": "value"
}
}
]
}