Přístup k www aplikaci, API

maxlink

Přístup k www aplikaci, API
« kdy: 08. 10. 2015, 13:31:05 »
Zdravím osazenstvo,

pár měsíců se plácam s app pro Android, už to začíná fungovat k světu, věci jdou dobřé, nyní bych chtěl udělat stranu serveru, ted web aplikaci, API.

Mám vcelku zkušenoti s PHP, přes 5 let spolu nějak válčíme, takže bych uvítal řešení na PHP, k dispozici mám vlastní server.

Dotaz: Existuje nějaký "best practise" postup jak vytvořit API na serveru pro Android aplikaci ? Mám API dělat v PHP nebo je to nesmysl a jaký PHP framework případně pro API použít, jaký PHP framework se ve 2015 má smysl učit (nechci nic české kotliny).

Nebo se API v PHP úplně vykašlat a udělat ho třeba v node.js nebo něco pro python, data ukládat do nějaký mezi db (mongo např.) a z druhé strany na ně šahat z PHP app?

Díky za nakopnutí. Max.


DK

Re:Přístup k www aplikaci, API
« Odpověď #1 kdy: 08. 10. 2015, 13:43:46 »
REST

Re:Přístup k www aplikaci, API
« Odpověď #2 kdy: 08. 10. 2015, 13:52:19 »
Nejdriv si ujasni, co po tom API vlastne chces a pak zacni resit REST/RPC/neco jineho a az na konci v cem to naprgat a nad cim.

awerqewrqwer

Re:Přístup k www aplikaci, API
« Odpověď #3 kdy: 08. 10. 2015, 14:10:00 »
REST

presne tak, nastuduj si REST API, samo URI je API.

Re:Přístup k www aplikaci, API
« Odpověď #4 kdy: 08. 10. 2015, 14:26:17 »
REST

presne tak, nastuduj si REST API, samo URI je API.

URI neni API (stejne jako trebas nazvy metod nejsou API). URI je jenom lokace zdroje, abys to mohl pouzivat jako API, musis jeste minimalne neco vedet o reprezentaci dat, povolenych hodnotach...


maxlink

Re:Přístup k www aplikaci, API
« Odpověď #5 kdy: 08. 10. 2015, 14:56:13 »
Nejdriv si ujasni, co po tom API vlastne chces a pak zacni resit REST/RPC/neco jineho a az na konci v cem to naprgat a nad cim.

Tak představu mám, udělal jsem si model (nákres) toho co po tom chci,
pro základní test.
- registrace přímo z aplikace (username [email], passwd) // není nutné implementovat
- sebrat geolokační údaje, přidat popis, odeslat na server s idenfikací uživatele

Prostuduji ten REST.
Myslel jsem, jestli neexistuje nějaký obecný postup(lešení) jak stavět API serveru pro Android zařízení, tak abych znovu nedělal kolo, zkusím ještě podusit google.

Díky Max.





Re:Přístup k www aplikaci, API
« Odpověď #6 kdy: 08. 10. 2015, 15:04:55 »
Pokud mas takhle minimalisticke pozadavky, tak muzes zvazit https://orchestrate.io/ nebo nejaky jiny REST as a Service... Ale samozrejme zalezi na dalsich okolnostech typu "moje nabozenstvi mi zakazuje cloud" nebo "budu mit bambilion uzivatelu a nedoplatil bych se"

Re:Přístup k www aplikaci, API
« Odpověď #7 kdy: 08. 10. 2015, 15:10:51 »
Drupal 8 + GraphQL - zabijes dve mouchy jednou ranou: REST API a zaroven web.
Děkuji za možnost editace příspěvku.

j

Re:Přístup k www aplikaci, API
« Odpověď #8 kdy: 08. 10. 2015, 17:22:44 »
Nejdriv si ujasni, co po tom API vlastne chces a pak zacni resit REST/RPC/neco jineho a az na konci v cem to naprgat a nad cim.

Tak představu mám, udělal jsem si model (nákres) toho co po tom chci,
pro základní test.
- registrace přímo z aplikace (username [email], passwd) // není nutné implementovat
- sebrat geolokační údaje, přidat popis, odeslat na server s idenfikací uživatele

Prostuduji ten REST.
Myslel jsem, jestli neexistuje nějaký obecný postup(lešení) jak stavět API serveru pro Android zařízení, tak abych znovu nedělal kolo, zkusím ještě podusit google.

Díky Max.

A na neco takovyho je nejlepsi si nainstalovat par stovek MB nejakyho frameworku ....

Re:Přístup k www aplikaci, API
« Odpověď #9 kdy: 08. 10. 2015, 19:30:16 »
Dělal jsem v php API pro komunikaci s mobilní aplikaci (Android+iOS). Používal jsem ORM Propel http://www.propelorm.org, který považuju v rámci php zvyklostí za kvalitní, pro některé operace jsem psal vlastní sql (Propel to umožňuje). Requesty i response se posílaly v xml, běžné chybové stavy, na které mobilní aplikace uměla reagovat, se posílaly uvnitř xml odpovědi s http kódem 200, kód byl odlišný od 200 jen v případě fatálních chyb - těch, které vylučovaly smysluplné pokračování v akci. Pro čtení a vytváření xml jsem používal Simplexml. Xml se validovalo proti ručně psanému dtd. Databáze byla Postgres, bylo tam poměrně dost uložených procedur. Fungovalo to, ale s vrstvícími se požadavky a rozšířeními se množily různé neobratnosti, které vyplývaly hlavně z nedokonalostí simplexml a php. Modulárnost a znovupoužitelnost nic moc.

Když to hodnotím s odstupem, nevymýšlel bych dnes vlastní formát xml, použil bych hotové řešení. Knihovny pro php nejsou žádný zázrak. Osobně bych to psal v javě a pro samotnou komunikaci použil nějakou knihovnu pro messaging nebo RPC - takovou, které funguje na Androidu i na serveru. Pokud by uměla víc jazuků, vzal bych to, protože nikdy nevíš, kde všude se bude služba dál používat. Pokud bych na serveru potřeboval ORM, použil bych http://javalite.io/activejdbc a pokud bych potřeboval i web připojil bych http://javalite.io/activeweb Nezahrnuje to ale administrační rozhraní. Pokud bych ho potřeboval, použil bych http://www.brightspot.com/ tam se podle datového modelu automaticky generuje administrační rozhraní, pro persistenci je použita sql databáze - ale jen jako storage, nepracuje se tam běžným sql stylem. S Brightspot bych nicméně udělal nejdřív nějakou pilotní verzi, kód toho frameworku otevřeli teprve nedávno a podpora a komunikace autorů je asi tak nějak „jak zbyde čas“. Na druhou stranu to ušetří spoustu času právě s tím administračním rozhraním a framework je evidentně používaný už delší dobu a to i na větších projektech.

Nicméně, jestli to API má mít jen dvě metody iniciované z klienta a jestli nebudou přibývat další metody, tak stačí poslat dva http požadavky a není třeba vstřebávat nějaké frameworky nebo budovat nějaké velké API. Takže záleží hlavně na požadavcích a komplexnosti - kolik metod, push nebo pull? data budou binární nebo textová? bude to synchroní nebo asynchroní? kolik klientů to má zvládnout, bude nějaký load balancing? atd...

Tož nevím jetli jsem pomohl  :-)