كيفية الحصول على نص استجابة HTTP كسلسلة في Go؟
مرحباً بالجميع! لقد بدأت للتو في تعلم Go وواجهت مشكلة أثناء العمل مع طلبات HTTP. أحتاج إلى إرسال طلب GET إلى API خارجي والحصول على الاستجابة كسلسلة نصية (string) لمعالجتها لاحقاً — مثلاً تحليل JSON أو مجرد طباعتها في السجل.
كتبت هذا الكود:
```go
resp, err := http.Get("https://api.example.com/data")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
fmt.Println(resp) // يطبع شيئاً مثل &{200 OK 200 ...}
```
المشكلة أن `resp` هي بنية `*http.Response` وليست سلسلة. حاولت الوصول إلى `resp.Body`، لكنه `io.ReadCloser`، ولا أعرف كيف أحصل على النص منه. في لغات أخرى (Python, JavaScript) كنت معتاداً على قراءة `response.text` أو `response.body`، لكن هنا الأمر أكثر تعقيداً.
قرأت الوثائق، لكنها مليئة بالحديث عن واجهات `io.Reader` والمخازن المؤقتة. هل يمكنكم إخباري بطريقة بسيطة وصحيحة لقراءة الاستجابة بأكملها كسلسلة؟ يُفضل مع مثال كود يمكن نسخه مباشرة.