-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
90 lines (70 loc) · 3.58 KB
/
README
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
REST API do pobierania zdjęć z NASA zrobionych w trakcie polskich świąt w 2019.
Projekt jest rozwiązaniem następującego zadania rekrutacyjnego:
https://github.com/hellodigers/recruitment-task-junior-symfony-developer
.1. Wymagania:
.1.1. serwer HTTP (korzystałem z Symfony Development Server)
.1.2. serwer MySQL (korzystałem z MySQL Community Server 8.0.20 GPL)
.1.3. Composer (do instalacji paczek Symfony)
.1.4. przeglądarka i połączenie z Internetem
.2. Struktura projektu:
.2.1. mySQL z bazą danych `nasa_data`a
.2.2. uruchomiony Symfony Development Server
.2.3. MarsDige (sklonowany projekt)
.3. Szczegóły projektu:
Odniosę się teraz do trzech punktów z zadania.
.3.1. Lista polskich świąt w 2019 roku się nie zmieni. Dlatego nie stworzyłem
komendy do odświeżania tej listy (a było takie polecenie w zadaniu).
W zamian za to stworzyłem następujący endpoint z listą polskich świąt z mojej
bazy danych:
`127.0.0.1:8000/polish_holidays`
.3.2. "Komenda" do odświeżania danych o zdjęciach
zrobionych w czasie polskich świąt:
`127.0.0.1:8000/refresh_database`
.3.3. Korzystanie z "anonymous API with two endpoints",
szczegółowo opisane jest w FrontController.php:
`src/Controller/FrontController.php`
.3.3.1. Pierwszy endpoint to następujący URL:
`127.0.0.1:8000/query`
Dzięki niemu możemy uzyskać dane o wszystkich zdjęciach.
Aby uzyskać dane o obrazach spełniających pewne warunki,
należy dodać do URL parametry opisane w FrontController.php.
.3.3.2. Drugi endpoint to następujący URL:
`127.0.0.1:8000/single_photo?id=`
Po `=` należy wpisać `id` np. `677817`.
Jeśli w `nasa_data` jest zdjęcie o takim `id`, to w odpowiedzi uzyskamy JSON
z informacjami o tym zdjęciu. Wraz z URLem zdjęcia.
`id` można uzyskać, korzystając z pierwszego endpoint:
`127.0.0.1:8000/query`
Jeśli wpiszemy w pierwszym endpoint datę lub zakres dat w których
odbyło się polskie święto, w czasie którego jakikolwiek z łazików zrobił zdjęcie
to uzyskamy `id` tego zdjęcia w JSON.
.4. Aby przetestować projekt na własnym serwerze należy:
.4.1. Sklonować całe repozytorium `https://github.com/damianut/MarsDige`
.4.2. W folderze ze sklonowanym repozytorium wykonać komendę `composer install`,
czyli zainstalować zależności.
.4.3. Utworzyć na swoim serwerze mySQL bazę danych `nasa_data` z metodą
porównywania napisów: `utf8mb4_polish_ci`
.4.4. Utworzyć użytkownika, który będzie miał wszystkie uprawnienia do
`nasa_data`
.4.5. Zaimportować do tej bazy plik `nasa_data.sql` z pobranego repozytorium.
To może trochę potrwać.
Ten plik zawiera tylko część tabeli, aby móc przetestować pobieranie zdjęć -
reszta zostanie utworzona po uruchomieniu odpowiedniej "komendy".
.4.6. Utworzyć plik '.env.local' i zapisać w nim następujące dane:
DB_HOST={adres hosta, np: 127.0.0.1}
DB_USER={login}
DB_PASS={hasło}
DB_NAME={nazwa bazy danych}
Gdzie '{login}' to nazwa utworzonego użytkownika z wszystkimi uprawnieniami
do bazy danych `nasa_data`/
.4.7. Uruchomić Symfony Developer Server. Powinien on nasłuchiwać adres i port:
`127.0.0.1:8000`
.4.8. Wejść na stronę `127.0.0.1:8000/refresh_database` w celu aktualizacji
bazy danych (to może trochę potrwać)
.4.9. Wysłać zapytanie zgodnie z opisem z FrontController.php lub README
(o ile serwer nasłuchuje adres i port podany w .4.6.)
.5. Uwagi:
.5.1. Nie skorzystałem z 'curl_multi_init', bo NASA blokuje za dużą liczbę
połączeń w krótkim czasie.
.5.2. Ze względu na powyższe (.5.2.), aktualizacja bazy danych trochę trwa.
/*............................................................................*/