{"id":27155886,"url":"https://github.com/cloudsteak/trn-go-webservice","last_synced_at":"2025-06-28T05:36:41.950Z","repository":{"id":209462251,"uuid":"712476567","full_name":"cloudsteak/trn-go-webservice","owner":"cloudsteak","description":"WebService - Go lang","archived":false,"fork":false,"pushed_at":"2023-11-28T15:54:17.000Z","size":53,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-08T19:57:08.019Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudsteak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-31T14:44:52.000Z","updated_at":"2023-11-27T13:00:57.000Z","dependencies_parsed_at":"2023-11-27T14:25:10.012Z","dependency_job_id":"29c5dd06-f60a-4532-8251-6063900eb4eb","html_url":"https://github.com/cloudsteak/trn-go-webservice","commit_stats":null,"previous_names":["cloudsteak/trn-go-webservice"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/cloudsteak/trn-go-webservice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-go-webservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-go-webservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-go-webservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-go-webservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudsteak","download_url":"https://codeload.github.com/cloudsteak/trn-go-webservice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-go-webservice/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262382302,"owners_count":23302259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-08T19:57:11.181Z","updated_at":"2025-06-28T05:36:41.928Z","avatar_url":"https://github.com/cloudsteak.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go - Web Szolgáltatás (middleware)\n\nOlyan Web szolgáltatást írunk itt, ahol a képernyőn megjelenítünk valamilyen adatot. Ez esetben a Mentork Klubnál elérhető Felhő képzések adatait írjuk ki a képernyőre JSON formátumban.\nEzáltal már bármilyen webalkalmazás képes lesz ezt az adatot felolvasni és grafikusan megjeleníteni.\n\n## Előfeltételek\n\nAz alábbi helyen megtalálod az előkészületeket a Go-ban való fejlesztéshez: https://github.com/cloudsteak/golang-basics\n\n## Projekt létrehozás\n\n1. Nyiss egy parancssort (CMD)\n2. Navigálj abba a mappába ahol a kódod fogod tárolni a helyi gépeden.\n3. Hozd létre a projekted mappáját. Pl.: `webszolgaltatas`\n\n```bash\nmkdir webszolgaltatas\n```\n\n4. Lépj be a mappába\n\n```bash\ncd webszolgaltatas\n```\n\n5. Készítsd el a projekted alap struktúráját\n\n```bash\ngo mod init webszolgaltatas\n```\n\n6. indítsd el innen a Visual Studio Code-ot.\n\n```bash\ncode .\n```\n\n## Go alkalmazás\n\n1. Hozd létre a `main.go` fájlt a projekt gyökerében\n2. A szerkesztőben a `main.go` fülön, ked el gépelni: `package`\n3. A VS Code felajánl több lehetőséget is. Nekünk jelnleg a `package main` szükséges\n4. Hozzuk létre a megjelenítendő adatokat struktúráját (ez lesz a képzés típusa). Illeszd az alábbi kódot a `package main` alá:\n\n```go\ntype kepzes struct {\n\tID     int     `json:\"id\"`     // Képzés azonosítója\n\tKepzes string  `json:\"kepzes\"` // Képzés neve\n\tFelho  string  `json:\"felho\"`  // Melyik felhővel kaplcsolatos a képzés\n\tSzint  string  `json:\"szint\"`  // Milyen szintű a képzés\n\tTipus  string  `json:\"tipus\"`  // Milyen formátumban elérhető\n\tOra    float64 `json:\"ora\"`    // Milyen kiterjedésű\n}\n```\n\n5. Ez alapján definiáljuk az adatot (jelenleg innen a kódból):\n\n```go\n// Képzések adatai egyben - Jelenleg helyben definiálva\nvar kepzesek = []kepzes{\n\t{ID: 1, Kepzes: \"Cloud alapozó - AWS, Azure\", Felho: \"AWS, Azure\", Szint: \"alap\", Tipus: \"video\", Ora: 3},\n\t{ID: 2, Kepzes: \"Cloud alapozó - Azure\", Felho: \"Azure\", Szint: \"alap\", Tipus: \"egy napos\", Ora: 7},\n\t{ID: 3, Kepzes: \"Cloud alapozó - AWS\", Felho: \"AWS\", Szint: \"alap\", Tipus: \"egy napos\", Ora: 7},\n\t{ID: 4, Kepzes: \"Haladó Cloud - Azure 7 hetes képzés\", Felho: \"Azure\", Szint: \"haladó\", Tipus: \"7 hetes\", Ora: 10.5},\n\t{ID: 5, Kepzes: \"Azure haladó szinten\", Felho: \"Azure\", Szint: \"haladó\", Tipus: \"videó\", Ora: 9},\n}\n```\n\n6. Hozzunk létre egy függvényt, amely lekérdezi a képzéseket az adathalmazból\n\n```go\n// Függvény, amely visszadja a képzések listáját az elérhető adathalmazból\nfunc kepzesLista(c *gin.Context) {\n\tc.IndentedJSON(http.StatusOK, kepzesek)\n}\n```\n\n7. Ez alá a sor alá pedig illeszd be az alábbi fő függvényt, ami már a web szolgáltatás része az alkalmazásunknak:\n\n```go\n// Fő függvény - az alkalmazás belépési pontja.\n// Web alkalmazás definiálása, amely a /kepzesek ág meghívása esetén meghívja a képzések listázása függvényt\nfunc main() {\n\trouter := gin.Default()\n\trouter.GET(\"/kepzesek\", kepzesLista)\n\t// Az alkalmatás elérhető a 8080-as porton\n\trouter.Run(\"localhost:8080\")\n}\n```\n\n8. A `package main` sor alá szúrd be az alábbi függőség kezelést\n\n```go\nimport (\n\t\"net/http\"\n\n\t\"github.com/gin-gonic/gin\"\n)\n```\n\n9. Mentsd el a módosításokat\n\n10. A Go érzékeli, hogy van csomag függőség és pár másodperc múlva jelzi, hogy hiányzik és módosítja a kódot ennek megfeleően. Vagy jelzi ha hiányzik egy csomag és azt telepíteni kell.\n\n11. Futtasd az alábbi parancsot, hogy letöltődjenek a megfelelő csomagok:\n\n```bash\ngo get .\n```\n\n12. Amikor végzett, eltűnik a kódból a figyelmeztetés. Ez lesz a `main.go` tartalma\n\n```go\npackage main\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/gin-gonic/gin\"\n)\n\ntype kepzes struct {\n\tID     int     `json:\"id\"`     // Képzés azonosítója\n\tKepzes string  `json:\"kepzes\"` // Képzés neve\n\tFelho  string  `json:\"felho\"`  // Melyik felhővel kaplcsolatos a képzés\n\tSzint  string  `json:\"szint\"`  // Milyen szintű a képzés\n\tTipus  string  `json:\"tipus\"`  // Milyen formátumban elérhető\n\tOra    float64 `json:\"ora\"`    // Milyen kiterjedésű\n}\n\n// Képzések adatai egyben - Jelenleg helyben definiálva\nvar kepzesek = []kepzes{\n\t{ID: 1, Kepzes: \"Cloud alapozó - AWS, Azure\", Felho: \"AWS, Azure\", Szint: \"alap\", Tipus: \"video\", Ora: 3},\n\t{ID: 2, Kepzes: \"Cloud alapozó - Azure\", Felho: \"Azure\", Szint: \"alap\", Tipus: \"egy napos\", Ora: 7},\n\t{ID: 3, Kepzes: \"Cloud alapozó - AWS\", Felho: \"AWS\", Szint: \"alap\", Tipus: \"egy napos\", Ora: 7},\n\t{ID: 4, Kepzes: \"Haladó Cloud - Azure 7 hetes képzés\", Felho: \"Azure\", Szint: \"haladó\", Tipus: \"7 hetes\", Ora: 10.5},\n\t{ID: 5, Kepzes: \"Azure haladó szinten\", Felho: \"Azure\", Szint: \"haladó\", Tipus: \"videó\", Ora: 9},\n}\n\n// Függvény, amely visszadja a képzések listáját az elérhető adathalmazból\nfunc kepzesLista(c *gin.Context) {\n\tc.IndentedJSON(http.StatusOK, kepzesek)\n}\n\n// Fő függvény - az alkalmazás belépési pontja.\n// Web alkalmazás definiálása, amely a /kepzesek ág meghívása esetén meghívja a képzések listázása függvényt\nfunc main() {\n\trouter := gin.Default()\n\trouter.GET(\"/kepzesek\", kepzesLista)\n\t// Az alkalmatás elérhető a 8080-as porton\n\trouter.Run(\"localhost:8080\")\n}\n\n```\n\nMegjegyzés: Nem minden csomagot tud automatikusan telepíteni a Go. Tehát van amit majd külön parancsok futtatásával kell telepítneni.\n\n## Alkalmazás futtatása\n\n1. A megírt kódot az alábbi paranccsal tudjuk futtani a project fő mappájából: `go run .` vagy `go run main.go`\n2. Ha megjelenik a terminal-ban a `[GIN-debug] Listening and serving HTTP on localhost:8080` az alkalmazás készen áll a használatra\n3. Egy böngésző ablakban nyisd meg a http://localhost:8080\n\nEredmény:\n\n```html\n404 page not found\n```\n\n4. Ez normális, hiszen a képzések listája az alábbi linken érhető el: http://localhost:8080/kepzesek\n\nEredmény:\n\n```json\n[\n  {\n    \"id\": 1,\n    \"kepzes\": \"Cloud alapozó - AWS, Azure\",\n    \"felho\": \"AWS, Azure\",\n    \"szint\": \"alap\",\n    \"tipus\": \"video\",\n    \"ora\": 3\n  },\n  {\n    \"id\": 2,\n    \"kepzes\": \"Cloud alapozó - Azure\",\n    \"felho\": \"Azure\",\n    \"szint\": \"alap\",\n    \"tipus\": \"egy napos\",\n    \"ora\": 7\n  },\n  {\n    \"id\": 3,\n    \"kepzes\": \"Cloud alapozó - AWS\",\n    \"felho\": \"AWS\",\n    \"szint\": \"alap\",\n    \"tipus\": \"egy napos\",\n    \"ora\": 7\n  },\n  {\n    \"id\": 4,\n    \"kepzes\": \"Haladó Cloud - Azure 7 hetes képzés\",\n    \"felho\": \"Azure\",\n    \"szint\": \"haladó\",\n    \"tipus\": \"7 hetes\",\n    \"ora\": 10.5\n  },\n  {\n    \"id\": 5,\n    \"kepzes\": \"Azure haladó szinten\",\n    \"felho\": \"Azure\",\n    \"szint\": \"haladó\",\n    \"tipus\": \"videó\",\n    \"ora\": 9\n  }\n]\n```\n\n## Alkalmazás fordítása (build)\n\nHa szeretnénk az alkalmazásunkat máshol is futtatni, anélkül, hogy minden fejlesztői eszközt és függőséget telepíteni kellene, akkor azt egy csomagba le is tudjuk fordítani (build). Ehhez az alábbi parancsot kell futtatni: `go build`\n\nEredményképpen Windows-on egy exe fájlt kapunk, amit futtathatunk a Go fejlesztői környezewten kívül is.\n\n## Meglévő kód használata\n\n1. Terminalban belépek a projekt mappába\n2. Terminal-ban lefuttatom az alábbi parancsot:\n\n```bash\ngo get .\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudsteak%2Ftrn-go-webservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudsteak%2Ftrn-go-webservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudsteak%2Ftrn-go-webservice/lists"}