Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: hueG 30. 05. 2017, 21:42:14

Název: Webový framework pro HTTP v Go
Přispěvatel: 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?
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: zboj 30. 05. 2017, 23:55:35
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.
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: hueG 31. 05. 2017, 00:19:21
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.
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: zboj 31. 05. 2017, 00:41:12
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í.
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: hueG 31. 05. 2017, 01:18:45
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í?
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: . 31. 05. 2017, 07:14:46
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
Kód: [Vybrat]
func middleware(next http.Handler) http.Handler
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: zboj 31. 05. 2017, 08:46:37
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ě.
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: . 31. 05. 2017, 22:21:33
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.
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: Ondrej 31. 05. 2017, 23:13:23
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.
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: hueG 31. 05. 2017, 23:57:43
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.
Název: Re:Webový framework pro HTTP v Go
Přispěvatel: boris 01. 06. 2017, 06:50:55
Najdi si na githube uzivatela ehmo a kukni co ohviezdickoval

https://github.com/ehmo?tab=stars