Name ӂ (MinJae Kwon) Nickname @mingrammer Email [email protected] Who ইҮ ࣗਝযҗ 3֙ / Backend Developer Blog https://mingrammer.com Facebook https://facebook.com/mingrammer Github https://github.com/mingrammer Eng Blog https://medium.com/@mingrammer
API Design & Architecture /projects • GET : Get all projects • POST : Create a new project /projects/:title • GET : Get a project • PUT : Update a project • DELETE : Delete a project /projects/:title/archive • PUT : Archive a project • DELETE : Restore a project Projects API Design
API Design & Architecture /projects/:title/tasks • GET : Get all tasks of a project • POST : Create a new task in a project /projects/:title/tasks/:id • GET : Get a project of a project • PUT : Update a project of a project • DELETE : Delete a project of a project /projects/:title/tasks/:id/complete • PUT : Archive a project of a project • DELETE : Restore a project of a project Tasks API Design
API Design & Architecture /projects • GET : Get all projects • POST : Create a new project /projects/:title • GET : Get a project • PUT : Update a project • DELETE : Delete a project /projects/:title/archive • PUT : Archive a project • DELETE : Restore a project /projects/:title/tasks • GET : Get all tasks of a project • POST : Create a new task in a project /projects/:title/tasks/:id • GET : Get a project of a project • PUT : Update a project of a project • DELETE : Delete a project of a project /projects/:title/tasks/:id/complete • PUT : Archive a project of a project • DELETE : Restore a project of a project API Design
Implementation of REST API ├── app │ ├── app.go │ ├── handler │ │ ├── common.go │ │ ├── projects.go │ │ └── tasks.go │ └── model │ └── model.go ├── config │ └── config.go └── main.go app/app.go Initialize the app Set all routers to app Register all handlers to app Run the app
3. /projects/:title ೩ٜ۞ ࢿ Implementation of REST API handler/projects.go GET : /projects/:title : Get a project PUT : /projects/:title : Update a project DELETE : /projects/:title : Delete a project
4. /projects/:title/archive ೩ٜ۞ ࢿ Implementation of REST API handler/projects.go PUT : /projects/:title/archive : Archive a project DELETE : /projects/:title/archive : Restore a project
2. /projects/:title/tasks ೩ٜ۞ ࢿ Implementation of REST API GET : /projects/:title/tasks: Get all tasks of a project POST : /projects/:title/tasks: Create a new task in a project handler/tasks.go
3. /projects/:title/tasks/:id ೩ٜ۞ ࢿ Implementation of REST API GET : /projects/:title/tasks/:id : Get a task of a project PUT : /projects/:title/tasks/:id: Update a task of a project DELETE : /projects/:title/tasks/:id : Delete a task of a project handler/tasks.go
3. /projects/:title/tasks/:id ೩ٜ۞ ࢿ (continue) Implementation of REST API GET : /projects/:title/tasks/:id : Get a task of a project PUT : /projects/:title/tasks/:id: Update a task of a project DELETE : /projects/:title/tasks/:id : Delete a task of a project handler/tasks.go
4. /projects/:title/tasks/:id/complete ೩ٜ۞ ࢿ Implementation of REST API PUT : /projects/:title/tasks/:id/complete : Complete a task of a project DELETE : /projects/:title/tasks/:id/complete : Undo a task of a project handler/tasks.go
├── app │ ├── app.go │ ├── handler │ │ ├── common.go │ │ ├── projects.go │ │ └── tasks.go │ └── model │ └── model.go ├── config │ └── config.go └── main.go Implementation of REST API model/model.go Define the model structs with Gorm Provide some methods of models Provide a DB migration function