getting 404 in GET request in Go

雨燕双飞 提交于 2020-05-17 05:56:31

问题


When I use http://localhost:8080/login?id=ddfd@vcv.com&pwd=dccccf in postman or use it in android app I am getting 404. On curl I get

{"name":"Miss Moneypenny","email":"ddfd@vcv.com","password":"dccccf","mobile":27,"address":"dscsdacc"}

I am not able to understand what can I do to achieve json output in postman and on other platforms like Apps in ios as well as android when I use this api and also on the browser window.

My Main.go code

func getSession() *mgo.Session {
    s, err := mgo.Dial("mongodb://localhost")

    if err != nil {
        panic(err)
    }
    return s
}
func main() {
    r := httprouter.New()
    uc := controllers.NewUserController(getSession())
    r.GET("/login", uc.LoginUser)
    http.ListenAndServe(":8080", r)

}

code in controller/user.go

type UserController struct {
    session *mgo.Session
}

func NewUserController(s *mgo.Session) *UserController {
    return &UserController{s}
}
func (uc UserController) LoginUser(w http.ResponseWriter, request *http.Request, params httprouter.Params) {
       dump,err :=httputil.DumpRequest(request, true)
    if err != nil {
    http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
    return
    }
    fmt.Println("Request Dump:\n", string(dump))
    encodedValue := request.URL.Query().Get("id")
    pwd := request.URL.Query().Get("pwd")
    emailId, err := url.QueryUnescape(encodedValue)
    if err != nil {
        log.Fatal(err)
        return
    }
    u := models.User{}

    if err := uc.session.DB("go-web-dev-db").C("users").FindId(emailId + pwd).One(&u); err != nil {
        w.WriteHeader(404)
        return
    }

    uj, err := json.Marshal(u)
    if err != nil {
        fmt.Println(err)
    }

    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusOK) // 200
    fmt.Fprintf(w, "%s\n", uj)
}

code in model/user.go

type User struct {
    Name     string `json:"name" bson:"name"`
    Email    string `json:"email" bson:"_id"`
    Password string `json:"password" bson:"password"`
    Mobile   int    `json:"mobile" bson:"mobile"`
    Address  string `json:"address" bson:"address"`
}

After using dump when I am using i am using curl 'http://localhost:8080/login?id=ddfd@vcv.com&pwd=dccccf' I get :-

Request Dump:
GET /login?id=ddfd@vcv.com&pwd=dccccf HTTP/1.1
Host: localhost:8080
Accept: */*
User-Agent: curl/7.69.1

After using dump when I am using i am using http://localhost:8080/login?id=ddfd@vcv.com&pwd=dccccf in postman I get :-

Request Dump:
GET /login?id=ddfd@vcv.com&pwd=dccccf HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Postman-Token: 8e925738-b8db-4656-9f53-813f4cd53a80
User-Agent: PostmanRuntime/7.24.1

来源:https://stackoverflow.com/questions/61652915/getting-404-in-get-request-in-go

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!