Project structure for API service
Follow the MVC design pattern, there are 3 main folders:
-
controllers:
-
each group router will be devided as 1 file, ex:
/user
->user_controller.go
,/log
->log_controller.go
-
only parsing request parameters/request body, then pass to
services
layer. Don’t doing business logic at this layer.
-
-
services:
- Doing business logic with input from controller layer
-
repositories:
- Provide function to access database, normally expose basic CRUD operations.
Note: [Controller] calls [Service(s)] who calls [repository(ies)]
Remaining folders:
-
models:
-
define data model
-
each table will be stored as 1 file
-
-
routers:
- define routing path
-
dtos:
- short form of
data transfer objects
, this folder containing request and response struct for each api route
- short form of
-
mappers:
- convert request struct (defined in dtos) to model object and vice versa
-
conf:
- listing of variables which loaded from environment