تخطَّ إلى المحتوى

العميل (Client)#

تتيح لك واجهة العميل (Client API) في Vapor إجراء استدعاءات HTTP إلى الموارد الخارجية. وهي مبنية على async-http-client وتتكامل مع واجهة المحتوى.

نظرة عامة#

يمكنك الوصول إلى العميل الافتراضي عبر Application أو داخل معالج مسار عبر Request.

app.client // Client

app.get("test") { req in
    req.client // Client
}

يُعَد عميل التطبيق مفيدًا لإجراء طلبات HTTP أثناء وقت التهيئة. إذا كنت تُجري طلبات HTTP داخل معالج مسار، فاستخدم دائمًا عميل الطلب.

الدوال (Methods)#

لإجراء طلب GET، مرِّر عنوان URL المطلوب إلى الدالة المريحة get.

let response = try await req.client.get("https://httpbin.org/status/200")

هناك دوال لكل من أفعال HTTP مثل get وpost وdelete. تُرجَع استجابة العميل كـ future وتحتوي على حالة HTTP والترويسات والجسم.

المحتوى (Content)#

تتوفر واجهة المحتوى في Vapor للتعامل مع البيانات في طلبات واستجابات العميل. لترميز المحتوى أو معاملات الاستعلام أو إضافة ترويسات إلى الطلب، استخدم مُغلَّف beforeSend.

let response = try await req.client.post("https://httpbin.org/status/200") { req in
    // Encode query string to the request URL.
    try req.query.encode(["q": "test"])

    // Encode JSON to the request body.
    try req.content.encode(["hello": "world"])
    
    // Add auth header to the request
    let auth = BasicAuthorization(username: "something", password: "somethingelse")
    req.headers.basicAuthorization = auth
}
// Handle the response.

يمكنك أيضًا فك ترميز جسم الاستجابة باستخدام Content بطريقة مماثلة:

let response = try await req.client.get("https://httpbin.org/json")
let json = try response.content.decode(MyJSONResponse.self)

إذا كنت تستخدم الـ futures، فيمكنك استخدام flatMapThrowing:

return req.client.get("https://httpbin.org/json").flatMapThrowing { res in
    try res.content.decode(MyJSONResponse.self)
}.flatMap { json in
    // Use JSON here
}

التهيئة (Configuration)#

يمكنك تهيئة عميل HTTP الأساسي عبر التطبيق.

// Disable automatic redirect following.
app.http.client.configuration.redirectConfiguration = .disallow

لاحظ أنه يجب عليك تهيئة العميل الافتراضي قبل استخدامه للمرة الأولى.

تحرير هذه الصفحة