#json #post #golang
Подскажите как сделать POST запрос к серверу средствами golang. Тело запроса должно содержать JSON данные.
Ответы
Ответ 1
Простейший способ: data := []byte(`{"foo":"bar"}`) r := bytes.NewReader(data) resp, err := http.Post("http://example.com/upload", "application/json", r) if err != nil { return err } См. также https://golang.org/pkg/net/http/#Client.Post. https://play.golang.org/p/YzPQULc8pcОтвет 2
Нашёл решение в просторах интернета: func main() { url := "http://restapi3.apiary.io/notes" fmt.Println("URL:>", url) var jsonStr = []byte(`{"title":"Buy cheese and bread for breakfast."}`) req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr)) req.Header.Set("X-Custom-Header", "myvalue") req.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() fmt.Println("response Status:", resp.Status) fmt.Println("response Headers:", resp.Header) body, _ := ioutil.ReadAll(resp.Body) fmt.Println("response Body:", string(body)) }Ответ 3
Пример запроса к микросервису: func sendRequest(reader myReader) ([]byte, bool) { var flag bool var body []byte if err := reader.SetAllToStringsIncludeNulls(); err != nil { helpers.ErrHandler(err) } else { jsonReader := helpers.CreateJson(reader) if req, err := http.NewRequest("POST", Uri, bytes.NewBuffer(jsonReader)); err != nil { helpers.ErrHandler(err) } else { req.Header.Set("Content-Type", "application/json") client := &http.Client{} if resp, err := client.Do(req); err != nil { helpers.ErrHandler(err) } else { defer resp.Body.Close() if body, err = ioutil.ReadAll(resp.Body); err != nil { helpers.ErrHandler(err) } flag = true } } } return body, flag }
Комментариев нет:
Отправить комментарий