De cateva zile stau si citesc atent fiecare problema disputata aici si tot imi zic ca ar trebui sa postez, vreau sa postez si eu punctul meu de vedere doar ca ajung la lucru si probleme, probleme, task-uri si uit sau nu am pur si simplu timpul fizic necesar sa scriu aceste randuri.
Dar azi, e duminica si nu e lucru asa ca sper sa fie cu folos!
Ma bucur ca lucrurile incep sa prinda contur, sa se aseze. As vrea totusi sa aduc niste clarificar in importanta acelui api de care toata lumea discuta acu o vreme, si mai nou dinnou.
E clar ca in "perioada de tranzitie", in care serverul RATT mai poate sa isi traga sufletul de la numarul urias de requesturi care aplicatiile facute de mine, de Mihai si de Cristi le faceau multe persoane au avut de suferit datorita faptului ca, probabil, se bazau pe buna functionare a acestor aplicatii care brusc nu a mai fost. Dar clar asta e trecut si e bine sa ne concentram pe viitor.
Problema: Florin ziceai ca vreti sa aveti o aplicatie ce nu trebuie actualizata asa des, contentul ei sa fie web based astfel orice modificare o faceti sa fie pe server.
Solutia cu api: Acceasi abordare este disponibila si daca folositi un api. Sa presupunem existenta unui api care sa fie accesibil in felul urmator:
/api/v1/mijloace - acesta va scoate in exterior mijloacele de transport disponibile in prezent
[
data: [{
name: "Autobuz 40"
icon: "url to icon"
id: "identificator"
type: "3"
},
{
name: "Tramvai 1"
icon: "url to icon"
id: "identificator"
type: "1"
}],
"message": "Data retrieved successfully",
"success": true
]
/api/v1/mijloace/xxxx - acesta va returna in format json traseele cu statiile si cu timpi
[
data: {
"id": xxxx,
"operator_id": xxxx,
"name": "40",
"type": "Bus",
"available": true,
"agency_id": "1",
"routes": [
{
"id": 19,
"name": "Posta Mare - Stuparilor",
"stations" : [
{
"id": 3220,
"name": "Posta Mare",
"latitude": 45.754741,
"longitude": 21.2337
},
{
"id": 3225,
"name": "Popa Sapca",
"latitude": 45.760793,
"longitude": 21.232873
},
]
},
{
"id": 20,
"name": "Stuparilor - Posta Mare"
}
]
},
"message": "Data retrieved successfully",
"success": true
]
Deci fiecare aplicatie cand se va deschide va face 1 request, pentru update-ul de route, unde va da pe langa informatia legata de mijloacele disponibile, si destinatia care asset-urile grafice care le propune "regia" pentru utilizare (aici vine vointa developerului sa i-a in considerare sau nu acele asset-uri grafice). Mai apoi dai click pe un mijloc de transport, alt request este facut pentru a obtine timpi pentru acea ruta.
Toate aceste informatii, pot fi cache-uite pentru ca e clar ca timpi nu se schimba mai des de 1 minut si e ineficient sa fie facut cate un request la baza de date de fiecare data.
E clar ca sa transferi niste text, care e si ala foarte putin e multi mai bine decat sa transferi o pagina intreaga
Problema: Cristi zicea ca ar fi util ca utilizatorul sa isi poata vedea informatiile soldului de pe cardul de ratt
Solutia api: E clar ca ce am prezentat mai sus poate fi extins cu usurinta
/api/v1/informatii-card - facut un request de tip POST cu datele confidentiale ale utilizatorului (aici fiecare utilizator de card ratt va primi un user si o parola sau ceva de genul cu care sa poata sa isi verifice datele)
Problema: Ratt nu poate controla accesul la aplicatiile ce ii consuma feed-ul de date.
Solutie Api: toate aplicatiile ce fac sau vor face requesturi care feed-ul ratt se vor autentifica printr-un asa zis token primit de la administratorul de system RATT. Se poate astfel gestiona accesul, dar si numarul de requesturi pe care o aplicatie il poate face /minut /ora ... s.a.m.d.. Daca aplicatia sau administratorul aplicatiei nu intelege sa respecte termeni si conditiile de functionare ale ratt, i se revoca tokenul si practic aplicatia nu mai poate sa consume feed-ul de date RATT.
In cele ce le-am prezentat mai sus am enumerat doar o parte a posibilelor beneficii.
Tin sa precizez ca asa cum am facut si pana acum va fi si de acum incolo, free of charge. Daca credeti ca va intereseaza ideea va pot prezenta ce am facut pana acum, va pot explica ce/cum am facut pana acum si va pot ajuta oricand punem sistemul pe picioare si astfel sa se stabilizeze odata situatia.
Atat eu, cat si alte persoane, cred, din comunitate pot sa se implice si vor vrea sa o faca daca se doreste acest lucru. Modul de lucru sunt sigur ca se va gasi ceva eficient, putem lua modelul govithub-ului ce au reusit foarte multe proiecte cu voluntari.
P.S. 1: De ceva vreme lucrez la asa ceva pentru a vi-l prezenta, dar in ultima perioada cu modificarile ce s-au facut e tot mai greu sa duc la bun sfarsit planul
![:(](http://www.ratt.ro/forum/public/style_emoticons/default/sad.gif)
datorita faptului ca nu apuc sa fac o modificare pana cand iar se schimba ceva si tot asa. E clar necesar aportul vostru ca si regie pentru a face conexiunile cu baza de date pentru obtinerea timpilor.
P.S. 2: Datele prezentate mai sus sunt in format "json" orice server php stie sa le genereze foarte simplu si mai mult decat atat orice aplicatie (limbaj) stie sa consume datele respective la fel de simplu.
Aceasta postare a fost editata de Vlad Vesa: 12 martie 2017 - 17:54