Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "github.com/jkrovnl/golearn2/app"
- func main() {
- app.StartApp()
- }
- // ====================================== // app/app.go
- package app
- import (
- "net/http"
- "github.com/jkrovnl/golearn2/controllers"
- )
- func StartApp() {
- http.HandleFunc("/users", controllers.GetUser)
- if err := http.ListenAndServe(":8080", nil); err != nil {
- panic(err)
- }
- }
- // ====================================== // controllers/user_controllers.go
- package controllers
- import (
- "encoding/json"
- "net/http"
- "strconv"
- "github.com/jkrovnl/golearn2/utils"
- "github.com/jkrovnl/golearn2/services"
- )
- func GetUser(w http.ResponseWriter, req *http.Request) {
- userId, err := strconv.ParseInt(req.URL.Query().Get("user_id"), 10, 64)
- if err != nil {
- apiErr := &utils.ApplicationError{
- Message: "user_id must be a number",
- StatusCode: http.StatusBadRequest,
- Code: "bad_request",
- }
- jsonValue, _ := json.Marshal(apiErr)
- w.WriteHeader(apiErr.StatusCode)
- w.Write(jsonValue)
- return
- }
- user, apiErr := services.GetUser(userId)
- if apiErr != nil {
- jsonValue, _ := json.Marshal(apiErr)
- w.WriteHeader(apiErr.StatusCode)
- w.Write([]byte(jsonValue))
- return
- }
- jsonValue, _ := json.Marshal(user)
- w.Write(jsonValue)
- }
- // ====================================== // services/user_services.go
- package services
- import (
- "github.com/jkrovnl/golearn2/domain"
- "github.com/jkrovnl/golearn2/utils"
- )
- func GetUser(userId int64) (*domain.User, *utils.ApplicationError) {
- return domain.GetUser(userId)
- }
- // ====================================== // domain/user.go
- package domain
- type User struct {
- Id int64 `json:"id"`
- Fname string `json:"fname"`
- Lname string `json:"lname"`
- Email string `json:"email"`
- }
- // ====================================== // domain/user_dao.go
- package domain
- import (
- "fmt"
- "github.com/jkrovnl/golearn2/utils"
- )
- var (
- users = map[int64]*User{
- }
- )
- func GetUser(userId int64) (*User, *utils.ApplicationError) { //(User, int, string, error) error was be last
- if user := users[userId]; user != nil {
- return user, nil
- }
- //fmt.Println(user) nebus jo user nav deklarets
- //return nil, errors.New(fmt.Sprintf("user %v was not found", userId)) //Ja return User nav ar * tad nevar return but nil
- return nil, &utils.ApplicationError{
- Message: fmt.Sprintf("user %v was not found", userId),
- StatusCode: 404,
- Code: "not_found",
- }
- }
- // ====================================== // utils/error_utils.go
- package utils
- type ApplicationError struct {
- Message string `json:"message"`
- StatusCode int `json:"status"`
- Code string `json:"code"`
- }
Add Comment
Please, Sign In to add comment