استهلاك RESTful APIs مع Go

استهلاك RESTful APIs مع Go

تعد RESTful APIs معماريات شائعة لنقل البيانات عبر الويب. عادةً ما تستخدم واجهات برمجة تطبيقات RESTful HTTP ، مما يجعلها مناسبة للحالات التي يكون فيها انعدام الحالة أمرًا مهمًا.



مثل أي لغة من جانب الخادم ، يمكنك التفاعل مع بروتوكول HTTP وتقديم طلبات HTTP في Go.





الشروع في العمل استخدام RESTful APIs في Go

ال http توفر الحزمة معظم الوظائف التي ستحتاجها للتفاعل مع بروتوكول HTTP في Go. يتضمن هذا إجراء طلبات HTTP ، ولا تحتاج بالضرورة التبعيات الخارجية ، مثل Gin أو قاعدة بيانات .





اجعل فيديو اليوم

يمكنك استخدام ال http حزمة لاستهلاك واجهات برمجة التطبيقات وجلب الصفحات من أجل كشط الويب في Go .

قم باستيراد هذه الحزم لبدء إجراء طلبات HTTP في Go.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

ستستخدم ملف بايت حزمة لمعالجة شرائح البايت ، فإن ملف json حزمة لتنسيق طلب البيانات ، فإن ملف FMT حزمة الكتابة إلى الإخراج القياسي ، و ioutil حزمة للإدخال والإخراج ، و http حزمة لإرسال الطلبات.

طلب GET بسيط في Go

عادي احصل على تقوم الطلبات بقراءة البيانات من الخادم وقد توفر معلمات للبيانات اعتمادًا على طبيعة ومواصفات واجهة برمجة التطبيقات.





في هذا البرنامج التعليمي ، ستتعلم كيفية استخدام RESTful APIs باستخدام خدمة الطلبات والاستجابة البسيطة من httpbin.

في ما يلي مثال على إنشاء طلب HTTP باستخدام Go:





url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

ال عنوان url المتغير هو نقطة النهاية التي ترسل الطلب إليها. ال احصل على في عنوان URL ، ينفذ ملف احصل على يطلب ، ويعيد الاستجابة ، بما في ذلك رؤوسها ونصها.

يمكنك التعامل مع أي أخطاء من الطلب حسب متطلباتك. إذا لم تكن هناك أخطاء ، فيمكنك المتابعة لاستخراج المعلومات التي تحتاجها من ملف احصل على طلب.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

ردود الجسم المجال يحمل جسم الاستجابة. باستخدام اقرأ كل شيء طريقة ioutil الحزمة ، يمكنك قراءة نص الاستجابة والتعامل مع الأخطاء المحتملة.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

ال آخر يقوم البيان بطباعة نص الاستجابة إلى وحدة التحكم الخاصة بك إذا لم تكن هناك أخطاء من عملية القراءة.

ها هي نتيجة احصل على طلب نقطة نهاية httpbin.

  نتيجة طلب GET

طلب POST بسيط في Go

توفر طلبات POST النموذجية حمولات البيانات إلى الخادم ، ويعيد الخادم استجابة بناءً على العملية.

إليك بنية بسيطة لتشفير حمولة JSON على الخادم كجزء من طلب POST.

type JSON struct { 
info string
message string
}

ال جسون هيكل لديه معلومات و رسالة سلسلة ، وستقوم بتهيئة مثيل هيكلي للطلب.

url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

ال عنوان url متغير يخزن نقطة نهاية طلب POST من موقع httpbin على الويب. ال jsonInstance المتغير هو مثيل لبنية JSON التي يمكنك استخدامها لتخزين البيانات المنظمة وإرسالها.

يمكنك استخدام ال مارشال طريقة من json حزمة لتنسيق JSON للطلب.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

ال مارشال تقوم الطريقة أيضًا بإرجاع خطأ يمكنك معالجته. إذا لم تكن هناك أخطاء في عملية تنظيم JSON ، يمكنك المتابعة لتقديم طلب POST.

كيفية تسريع الإنترنت على الهاتف

يمكنك استخدام ال بريد طريقة لتقديم طلبات POST. ال بريد يأخذ الأسلوب في نقطة نهاية عنوان URL ، ونوع محتوى الطلب ، ومخزن الحمولة. تقوم بإرجاع الرد والخطأ.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

مرة أخرى ، يمكنك قراءة نص الاستجابة باستخدام اقرأ كل شيء طريقة ioutil حزمة:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

ال Println بيان ناتج نتيجة طلب HTTP لوحدة التحكم الخاصة بك.

مثل وثائق httpbin يحدد ، تقوم نقطة نهاية POST بإرجاع بيانات الطلب التي ترسلها.

  نتيجة طلب POST

يعد إنشاء تطبيقات الويب في Go أمرًا سهلاً

يمكنك إنشاء تطبيقات ويب بوظائف متنوعة في Go بدون تبعيات.

ال http تحتوي الحزمة على الوظائف التي ستحتاجها لمعظم عملياتك. يمكنك استخدام هذه الحزمة مع الآخرين مثل json حزمة لعمليات JSON ، ملف سياق الكلام حزمة للإشارة ، وحزمة القالب للقالب. هناك العديد من الحزم الأخرى في المكتبة القياسية.