How To Structure Your Golang (API) Projects!?

  Рет қаралды 49,988

Anthony GG

Anthony GG

Күн бұрын

Пікірлер: 68
@anthonygg_
@anthonygg_ Жыл бұрын
► Join my Discord community for free education 👉 discord.com/invite/bDy8t4b3Rz ► Become a Patreon for exclusive tutorials👉 www.patreon.com/anthonygg_ ► Buy me a coffee 👉 donate.stripe.com/aEU2a6ayH2uCa3u4gg Thanks for watching
@TheRealisticNihilist
@TheRealisticNihilist Жыл бұрын
I love the way this guy says "structure".
@krislui852
@krislui852 Жыл бұрын
just learnt go recently and trying to build my first project on it. tried different ways to structure my project but found them being quite messy. great video, helps a lot.
@linhnguyen05111999
@linhnguyen05111999 7 ай бұрын
omg amazing! I really needed this. Great example, especially the storage interface.
@robinludan3041
@robinludan3041 9 күн бұрын
- project name - api - server.go (handles http handler methods, routes, etc) - server_test.go - handler.go (if you got many handlers filling up server.go) - storage - storage.go (handles store interface) - sqlite.go etc - types - user.go etc - util (optional) - util.go (helper functions)
@pss_crs
@pss_crs Жыл бұрын
I'm regretting notvdiscovered this channel early thanks.
@mwnkt
@mwnkt Жыл бұрын
loving the consistency in uploads, loving the channel so far
@joshb7001
@joshb7001 Жыл бұрын
You are pumping out golden eggs non stop. Thank you
@Shatterhand16
@Shatterhand16 Жыл бұрын
Watched your "Important Tips On How To Write Idiomatic Code In Golang" just before watching this, and I believe that the interface declared in 8:02 should be Storer instead of Storage, same for module name. Additionally maybe it would be worth to enable screencast mode in vscode with smaller font and offset? I think it'd be great to learn some of the shortcuts that allow you to be that fast just by watching. By the way loving the content, keep it up!
@anthonygg_
@anthonygg_ Жыл бұрын
Yeah storer would maybe more idiomatic. You are right.
@jean-naymar602
@jean-naymar602 Жыл бұрын
This is a common misconception but the "effective go" doc does NOT say that every interface should end in -er. Instead, it says that IF an interface defines only 1 method, then this interface should be named by appending -er to the method's name : "By convention, one-method interfaces are named by the method name plus an -er suffix" That's it. (Admittedly, one method interfaces should be what you aim for anyway but still, you shouldn't bother naming multi-method interfaces with -er...)
@Shatterhand16
@Shatterhand16 Жыл бұрын
@@jean-naymar602 That's cool to know, thanks for detailed explanation!
@scarthebadguy
@scarthebadguy Жыл бұрын
Hey mate these are great videos. I love how verbose you are as you type. I learn more from you talking than I have from any udemy course
@jondoe79
@jondoe79 Жыл бұрын
Super clean, it's grouped by feature.
@terriprifti5069
@terriprifti5069 Жыл бұрын
This is a gem 💎
@frozenn00b
@frozenn00b 11 ай бұрын
Breaking all the Golang project structure conventions for "reasons". Convention is to use cmd, internal, pkg, test for sorting your packages... arbitrary folder structures introduce additional hurdles for newcomers to the project to figure out what you're doing.
@Incolent
@Incolent Жыл бұрын
Just stumbled upon your channel. Amazing content for students! Keep it coming!
@anthonygg_
@anthonygg_ Жыл бұрын
Welcome aboard!
@andreimikhalkevich5633
@andreimikhalkevich5633 Жыл бұрын
go ahead Anthony, very helpful skills
@Leon-cj8hd
@Leon-cj8hd Жыл бұрын
Your coding speed is insane, even while talking. Viewed some videos, I think the content is great, thanks a lot :)
@cothromachd
@cothromachd Жыл бұрын
anthony the sigma
@davidhtorres
@davidhtorres Жыл бұрын
These videos are awesome! Thank you! Very clear!
@blazinglyfaster9935
@blazinglyfaster9935 Жыл бұрын
Perfect timing 🚀🚀🚀
@ThePandaGuitar
@ThePandaGuitar Жыл бұрын
I don't know Go and that flag string is awesome. I can see why making CLIs in Go is sweet.
@mitchymagic
@mitchymagic Ай бұрын
As someone coming from Django, Go project structure has been a real headache. One question for you AGG, if you were building a web app would you change your api directory to web ?
@tintin537
@tintin537 Жыл бұрын
Thank you. as always superb.
@anonymous-sk9li
@anonymous-sk9li 4 ай бұрын
Sir can you make a tutorial on function being define inside a interface why it is necessary and how to use it and also on method receiver where and where not to use it . Your content is always quality worth it will be great help for noob developers like me
@Noudapi
@Noudapi 8 ай бұрын
Hey Anthony thank you for your video. I just don't understand how you implement the storage interface. Do you add all the functions to implement for all entities of your database?
@JanPhilippHeinrich
@JanPhilippHeinrich Жыл бұрын
Hey Anthony, basically this is a good video but could you explain why you put the interface for store right there where it is implemented? I learned that we use duck typing / structural typing which means we would put the interface were it is used.
@anthonygg_
@anthonygg_ Жыл бұрын
In have a video explaining interfaces and why you should use them
@jed271
@jed271 Жыл бұрын
What are your thoughts on hexagonal architecture?
@anthonygg_
@anthonygg_ Жыл бұрын
Thats a scam
@jed271
@jed271 Жыл бұрын
@@anthonygg_ can you elaborate more? I really like your contents
@anthonygg_
@anthonygg_ Жыл бұрын
@@jed271 I think that people are inventing new ways of doing things because they have nothing better to do. My advice is to just solve the problem and do what works for you. The folder structure I showed you worked very well for me and I think it's a structure that is also highly adopted by a lot of big open-source projects. Don't make it too complex.
@andrewcathcart
@andrewcathcart Жыл бұрын
Random, but can you export your vscode setup? Theme looks v clean
@anthonygg_
@anthonygg_ Жыл бұрын
github.com/anthdm/vscode-config
@jorisjansen2892
@jorisjansen2892 Жыл бұрын
🚀🚀
@maximilianlang7175
@maximilianlang7175 Жыл бұрын
If you have more than one route, maybe something like /users and /books. Would you implement one store for all or would you have one store for all your types?
@anthonygg_
@anthonygg_ Жыл бұрын
Depends. You could make more interfaces for each domain if you want. Otherwise your storage interface will be a raidboss
@maximilianlang7175
@maximilianlang7175 Жыл бұрын
@@anthonygg_ Thanks! So you would have a user and a book interface and then several implementations for mongo oder mysql
@anthonygg_
@anthonygg_ Жыл бұрын
@@maximilianlang7175 Yes. UserStorage, bookStorage and so on.
@maximilianlang7175
@maximilianlang7175 Жыл бұрын
@@anthonygg_ and do you plan to make a video about mongo?
@anthonygg_
@anthonygg_ Жыл бұрын
@@maximilianlang7175 good idea, will note that.
@rafaelcordoba13
@rafaelcordoba13 Жыл бұрын
How would you organize all the other go files based on application features? For a game server for example, you have a shop, daily quests, daily login, clans, events, wallet, etc. How do you see that scaling?
@anthonygg_
@anthonygg_ Жыл бұрын
Just separate handlers, data, and business logic
@bmitch3020
@bmitch3020 Жыл бұрын
"package util" oh no, Oh no no no no no.
@MaheshKumar-tc3gn
@MaheshKumar-tc3gn 8 ай бұрын
Do you keep everything in server package. Server package will handle user requests, in future it will handle all the separate modules? I think it is bad idea and bad structure
@soufta5872
@soufta5872 Жыл бұрын
Hi there. Is golang a good thing for sysadmin and autmation projects ? I don't want to use python especially when it comes to third party librairies that are hard to install on production ! Thanks
@kamalkamals
@kamalkamals Жыл бұрын
so the storage it s look like session of connection to mongodb, but is that a best practice to inject it as params in every function of the services ?? why no use it like a global variable !
@anthonygg_
@anthonygg_ Жыл бұрын
Yup. Im using that approach right now.
@kamalkamals
@kamalkamals Жыл бұрын
@@anthonygg_ greate i use with graphql and works good, are u test before upload file with graphql ?? sorry if that is not the topic of this video
@JohnDoe-ji1zv
@JohnDoe-ji1zv Жыл бұрын
Anthony thanks for the video! Would like to get your opinion on di frameworks like Uber fx. Do you use dependency injection frameworks in your applications ?
@pavelastraukh9905
@pavelastraukh9905 Жыл бұрын
Is there a reason why store is passed by value and not by reference?
@niconc.gr.youtube
@niconc.gr.youtube Жыл бұрын
Hello Anthony, A while ago, I just watch the "How To Build And Structure A JSON API Project In Golang!?" video, in which you're following a sightly different approach concerning the folders/packages structure (which I love very much BTW). "Everything on root" you're saying, "unless it's really needed". I'd like to ask you why? Does this happen because the videos are from different time? Thank you.
@anthonygg_
@anthonygg_ Жыл бұрын
My personal opinion is to keep things very simple and with as less folders possible. Because soon or later you will end up with circular dependencies. But I know that this is very hard for a lot of people to switch to due to the fact that the meta is to folderize like a mad men. So, I try to switch things up and give people multiple approaches on "how they could structure Golang applications".
@niconc.gr.youtube
@niconc.gr.youtube Жыл бұрын
@@anthonygg_ Got it! I'm just starting and I'm friend of the minimalistic approach. You've right though.
@2gbeh
@2gbeh 8 ай бұрын
🇳🇬 Is Go a high level language ? This syntax looks sick (in a bad way).
@insert-name1500
@insert-name1500 Жыл бұрын
What's the name of this VS Code theme?
@anthonygg_
@anthonygg_ Жыл бұрын
Gruvbox
@pedrohenriquebufulindealme5763
@pedrohenriquebufulindealme5763 Жыл бұрын
Do you have any video that extends on the Storage pattern you showed?
@anthonygg_
@anthonygg_ Жыл бұрын
Hmm. Not sure. I use it in a lot of streams and projects
@VeereshPatel15
@VeereshPatel15 Жыл бұрын
Hi bro, how to learn golang --->>>Please explain learning path about golang & solidity -- >>>> how to learn / build /test/ deploy frontend for web 3 projects
@gustavogoncalves2101
@gustavogoncalves2101 Жыл бұрын
At interface storage can we make a gerenic interface with the default CRUD methods to work with N models?
@Laflamablanca969
@Laflamablanca969 Жыл бұрын
Yes. Use generics for this.
@rezaneyrami7944
@rezaneyrami7944 11 ай бұрын
Hello . I wish you would speak more slowly. I can hardly communicate with your language. If possible, speak more slowly... Thank you
@samess_
@samess_ Жыл бұрын
Please create a cli app that generates the template of your structured project...🥲
@Gertozzz
@Gertozzz Жыл бұрын
When are you going to code a Shalien server? Request.get.go
@anthonygg_
@anthonygg_ Жыл бұрын
Thats a BIG task
How You Should Use Mutexes And Atomic Values In Golang?!
15:49
Anthony GG
Рет қаралды 14 М.
This Is The BEST Way To Structure Your GO Projects
11:08
Melkey
Рет қаралды 81 М.
小路飞还不知道他把路飞给擦没有了 #路飞#海贼王
00:32
路飞与唐舞桐
Рет қаралды 86 МЛН
How To Use The Context Package In Golang?
17:03
Anthony GG
Рет қаралды 66 М.
How To Build And Structure A Microservice In Golang?!
23:03
Anthony GG
Рет қаралды 54 М.
How I Write an API Client in Golang (with testing)
19:52
devtool
Рет қаралды 1,9 М.
The Most Efficient Struct Configuration Pattern For Golang
11:10
How to create your Golang APIs from now on with v1.22
12:51
Five of my favorite project ideas to learn Go.
11:31
Dreams of Code
Рет қаралды 80 М.
THIS is the BEST Way to Write HTTP Services in Golang
13:53
Creating custom struct tags in Golang is awesome!
24:42
Flo Woelki
Рет қаралды 9 М.
Mastering Dependency Injection In Golang
14:29
Anthony GG
Рет қаралды 51 М.
The BEST Tool to Structure Golang Projects
7:58
Melkey
Рет қаралды 38 М.