получение 404 в запросе GET в Go - PullRequest
0 голосов
/ 07 мая 2020

enter image description here Когда я использую http://localhost:8080/login?id=ddfd@vcv.com&pwd=dccccf в почтальоне или использую его в приложении android, я получаю 404. На curl я получаю

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

Я не могу понять, что я могу сделать, чтобы добиться вывода json в почтальоне и на других платформах, таких как приложения в ios, а также android, когда я использую этот api, а также в окне браузера.

My Main. go код

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)

}

код в контроллере / пользователе. 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)
}

код в модели / пользователе. 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"`
}

После использования дампа, когда я использую, я использую curl 'http://localhost: 8080 / login? id=ddfd@vcv.com&pwd=dccccf' Я получаю: -

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

После использования дампа, когда я использую, я использую http://localhost: 8080 / login? id=ddfd@vcv.com&pwd=dccccf в почтальоне, я получаю: -

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
...