This repository is the sample of web application using golang. This sample uses Echo, Gorm and Zap logger. This sample application provides only functions via Web APIs. So, if you would like to use web UI, I will recommend using vuejs-webapp-sample with this application.
If you would like to develop a web application using golang, please feel free to use this sample.
Perform the following steps:
- Download and install MinGW(gcc).
- Download and install Visual Studio Code(VS Code).
- Download and install Golang.
- Get the source code of this repository by the following command.
go get -u github.com/ybkuroki/go-webapp-sample
Perform the following steps:
- Starting this web application by the following command.
go run main.go
- When startup is complete, the console shows the following message:
http server started on [::]:8080
- Access http://localhost:8080/api/health in your browser and confirm that this application has started.
healthy
- Login with the following username and password.
- username :
test
- password :
test
- username :
Build this source code by the following command.
go build main.go
The follwing figure is the map of this sample project.
- go-webapp-sample
+ config … Define configurations of this system.
+ logger … Provide loggers.
+ middleware … Define custom middleware.
+ migration … Provide database migration service for development.
+ router … Define routing.
+ controller … Define controllers.
+ model … Define models.
+ repository … Provide a service of database access.
+ service … Provide a service of book management.
+ session … Provide session management.
+ test … for unit test
- main.go … Entry Point.
This sample provides 3 services: book management, account management, and master management.
There are the following services in the book management.
Service Name | HTTP Method | URL | Parameter | Summary |
---|---|---|---|---|
Get Service | GET | /api/book/get?id=[BOOK_ID] |
Book ID | Get a book data. |
List Service | GET | /api/book/list?page=[PAGE_NUMBER]&size=[PAGE_SIZE] |
Page | Get a list of books. |
Regist Service | POST | /api/book/new |
Book | Regist a book data. |
Edit Service | POST | /api/book/edit |
Book | Edit a book data. |
Delete Service | POST | /api/book/delete |
Book | Delete a book data. |
Search Title Service | GET | /api/book/search?query=[KEYWORD]&page=[PAGE_NUMBER]&size=[PAGE_SIZE] |
Keyword, Page | Search a title with the specified keyword. |
There are the following services in the Account management.
Service Name | HTTP Method | URL | Parameter | Summary |
---|---|---|---|---|
Login Service | POST | /api/account/login |
Session ID, User Name, Password | Session authentication with username and password. |
Logout Service | POST | /api/account/logout |
Session ID | Logout a user. |
Login Status Check Service | GET | /api/account/loginStatus |
Session ID | Check if the user is logged in. |
Login Username Service | GET | /api/account/loginAccount |
Session ID | Get the login user's username. |
There are the following services in the Master management.
Service Name | HTTP Method | URL | Parameter | Summary |
---|---|---|---|---|
Category List Service | GET | /api/master/category |
Nothing | Get a list of categories. |
Format List Service | GET | /api/master/format |
Nothing | Get a list of formats. |
This sample uses the following libraries.
Library Name | Version |
---|---|
Echo | 4.1.17 |
Gorm | 1.9.16 |
go-playground/validator.v9 | 9.31.0 |
Zap/logger | 1.16.0 |
Please read CONTRIBUTING.md for proposing new functions, reporting bugs and submitting pull requests before contributing to this repository.
The License of this sample is MIT License.