Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: hueG 30. 05. 2017, 21:42:14
-
Zdravím,
Má někdo zkušenosti s http servery napsanými v GO? Používáte nějaký framework nebo všechno píšete sami nad net/http?
-
Zdravím,
Má někdo zkušenosti s http servery napsanými v GO? Používáte nějaký framework nebo všechno píšete sami nad net/http?
net/http většinou stačí, jde o to, co to má dělat.
-
Chtěl bych v tom napsat rest api, která by sloužila jako feed pro webové rozhraní, případně android app. V net/http mi chybí spíše minoritní věci (např. parametry v url/middlewary/routování podle http metody/route groupy). Otázka je jestli mám dopsat co mi chybí a nebo použít hotové řešení ve formě frameworku.
-
Chtěl bych v tom napsat rest api, která by sloužila jako feed pro webové rozhraní, případně android app. V net/http mi chybí spíše minoritní věci (např. parametry v url/middlewary/routování podle http metody/route groupy). Otázka je jestli mám dopsat co mi chybí a nebo použít hotové řešení ve formě frameworku.
Parametry v URL to má. U routování asi není problém napsat vlastní. Obecně je lepší frameworky nepoužívat, čím méně cizího kódu, tím lépe. Standardní knihovna je dobře otestovaná a vyladěná. Jen databáze musí být externí, nejlépe nějaká přímo v Go, jinak to nebude zcela optimální.
-
Net/http defaultně podporuje parametry v URL? V dokumentaci sem o tom nenašel zmínku. Můžu tedy vytvářet routy typu /user/{user-id} a url se mi budou správně matchovat pokud to chápu dobře? Chtěl jsem použít MySQL, možná Postgre. Myslel jsem že optimálnost použití zajišťuje hlavně knihovna. V čem přesně by to nebylo optimální?
-
A už je to i na rootu... :)
Osobně doporučuji používat jen knihovny, které by se daly nazvat spíš helpery nebo nadstavbou, než frameworkem a které umožňují fungovat spolu s net/http.
Prvním z nich by byl router. Osobně používám Chi, ale pokud jsou potřeba regulární výrazy pro parametry v URL, tak je potřeba použít Gorilla router. Ze základních věci pro middleware používám mix Chi (id, IP, panic), Gorilla (sessions, cookies, websockety) a net/http. A pro rendrování JSON a templatů používám renderer z Chi. Pro embeding statických dat pak go-bindata.
Gorilla je léty prověřená sada knihoven, Chi router je sice relativně nový, ale hojně používaný, všude využívá Context a hlavně nemění parametry a použití HandlerFunc, takže nezavádí nic nového a fungují i všechny standardní návody na internetu (třeba pro testování). Podobně všechny middleware mají standardní tvar func middleware(next http.Handler) http.Handler
-
Chtěl jsem použít MySQL, možná Postgre. Myslel jsem že optimálnost použití zajišťuje hlavně knihovna. V čem přesně by to nebylo optimální?
Jde-li o malou aplikaci, je vhodné mít vše v jednom procesu, a pak nemá cenu volat knihovny v C, s tím je spojený jistý overhead. DB knihoven přímo v Go je k dispozici několik (vesměs ale NoSQL). Pokud to ale má vše běžet na jednom serveru a požadavků bude málo, tak je to pochopitelně jedno a nějaký DB server přes síť bude naprosto v pohodě.
-
Chtěl jsem použít MySQL, možná Postgre. Myslel jsem že optimálnost použití zajišťuje hlavně knihovna. V čem přesně by to nebylo optimální?
Jde-li o malou aplikaci, je vhodné mít vše v jednom procesu, a pak nemá cenu volat knihovny v C, s tím je spojený jistý overhead. DB knihoven přímo v Go je k dispozici několik (vesměs ale NoSQL). Pokud to ale má vše běžet na jednom serveru a požadavků bude málo, tak je to pochopitelně jedno a nějaký DB server přes síť bude naprosto v pohodě.
Tak v Go se pro přístup k sql db (a i některým nosql) používá univerzální balík database/sql a jen se připojí driver a nejpoužívanější drivery jak k MySQL, tak i PostgreSQL jsou pure Go. Jediné, co je samozřejmě v C, je driver pro SQLite3.
Pokud nechcete použít ORM, pak je dobré se ještě podívat na jmoiron/sqlx.
-
Používám knihovny, nepřijde mě že by v GO bylo něco alá Django atp kde má smysl framework používat.
Knihovny od gorilla jsou super, na middlware používám negroni, co se týče DB tak gorm... Nemá smysl si psát něco vlastního když je mraky prověřenejch knihoven a zrovna na to API používám právě proto go rád.
-
Nemyslel jsem frameworky z kategorie Django/Rails, ale spíš Flask/Sinatra. Více mi sedí k golangu. Zkusím si asi nakonec něco poskládat z knihoven co jsou k dispozici.
-
Najdi si na githube uzivatela ehmo a kukni co ohviezdickoval
https://github.com/ehmo?tab=stars