سؤال

حاليا أنا تصميم كيفية التعامل مع التوجيه في أبي ريست ريست حيث الإصدار ليس جزءا من ورل ، ولكن إرسالها عبر متغير رأس.

لقد فكرت / رأيت أشياء مثل:

إعادة كتابة عنوان ورل استنادا إلى متغير الرأس أي.الطلب /orders {X-Media-Type: v1} سوف نعيد الكتابة إلى / الإصدار 1 / الطلبات ومن ثم يمكن أن يكون لدينا ملف @Path("/v1/orders") OrderV1Resource {} وبالتالي فإن صنع الإصدار 2 سيكون تافها @Path("/v2/orders") OrderV2Resource {}.(تفضيلي الأول) كيفية استخدام عامل تصفية بريمج في جافا لتغيير عنوان ورل طلب بريمج واردة?

وجود واحد @Path("/orders") OrderResource {} حيث تحتوي كل طريقة من أساليبها على رأس رأس محقون ويمكنني التحقق من متغير الرأس ثم تحديد تنفيذ واجهة برمجة التطبيقات للأمر الذي أردت استخدامه (والذي يبدو فوضويا جدا بالنسبة لي)

// pseudo-java code
@Path("/orders") 
OrderResource {
   OrderV1Impl v1Impl;
   OrderV2Impl v2Impl;
   @GET
   public List<Order> findAll(@HeaderParam header) {
       version = header.get("accepts")
       if(version.equals("v1")) { return v1Impl.findAll() }
       else if(version.equals("v2")) { return v2Impl.findAll() }
       return error
   }
}

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

هل كانت مفيدة؟

المحلول

انتهى بي الأمر بتمرير الإصدار عبر رأس ثم استخدم هذا لتوجيه المورد المطلوب عبر javax.servlet.Filter.

مثال قبول رأس:Accept: application/vnd.datarank.v1+json

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top