I'm trying to do a http request which is developed in Golang. when I made a request to retrieve all student data, the data was successfully retrieved. but when I make a request to retrieve student data by ID, I can't retrieve it, I get the following Output:
// fetch all student data
ID: A001 Name:Ipal Grade:42
ID: B002 Name:Ver Grade:42
ID: C003 Name:Kris Grade:42
// fetch student data by Id
id=B002
payload: id=B002
request data: &{GET http://localhost:8080/user
HTTP/1.1 1 1 map[] {id=B002} 0x5f75e0 7 [] false localhost:8080 map[]
map[] <nil> map[] <nil> <nil> <nil> 0xc00012c020}
DATA-DATA: { 0}
DATA-DATA: { 0}
Data: { 0}
{ 0} invalid character 'U' looking for beginning of value
Error! invalid character 'U' looking for beginning of value
2
my student struct script is:
type student struct {
ID string
Name string
Grade int
}
my script to fetch all student data is:
func fetchUsers() ([]student, error) {
var err error
var client = &http.Client{}
var data []student
request, err := http.NewRequest("GET", baseURL+"/users", nil)
if err != nil {
return nil, err
}
response, err := client.Do(request)
if err != nil {
return nil, err
}
defer response.Body.Close()
err = json.NewDecoder(response.Body).Decode(&data)
if err != nil {
return nil, err
}
return data, nil
}
And here my code to fetch student data by ID:
func fetchUser(ID string) (student, error) {
var err error
var client = &http.Client{}
var data student
var param = url.Values{}
param.Set("id", ID)
var payload = bytes.NewBufferString(param.Encode())
fmt.Println("", bytes.NewBufferString(param.Encode()))
fmt.Println("payload: ", payload)
request, err := http.NewRequest("", "http://localhost:8080/user", payload)
fmt.Println("request data:", request)
fmt.Println("DATA-DATA:", data)
if err != nil {
// fmt.Println("DATA-DATA:", data)
return data, err
}
fmt.Println("DATA-DATA:", data)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
response, err := client.Do(request)
if err != nil {
return data, err
}
defer response.Body.Close()
err = json.NewDecoder(response.Body).Decode(&data)
if err != nil {
fmt.Println("Data:", data)
return data, err
}
fmt.Println("Data1:", data)
return data, nil
}
And here my func main script is:
func main() {
var users, err = fetchUsers()
if err != nil {
fmt.Println("Error!", err.Error())
return
}
for _, each := range users {
fmt.Printf("ID: %s\t Name:%s\t Grade:%d\n", each.ID, each.Name, each.Grade)
var user1, err = fetchUser("B002")
if err != nil {
fmt.Println("Error!", err.Error())
return
}
fmt.Printf("ID: %s\t Name: %s\t Grade: %d\n", user1.ID, user1.Name, user1.Grade)
}
Please Help me Friends