Swagger هو إطار عمل موحد وكامل لتوليد وتصوير وتصور خدمات الويب على غرار الراحة. الهدف العام هو جعل تحديث نظام العميل ونظام الملفات بنفس سرعة الخادم. يتم دمج أساليب الملف والمعلمات والنماذج بإحكام في رمز من جانب الخادم ، مما يتيح لـ API الحفاظ دائمًا على متزامنه.
لم يكن Swagger أسهل في نشر وإدارة واستخدام واجهات برمجة التطبيقات القوية. حسنًا ، ما سبق هو البيان الرسمي ، قمت بنسخه مباشرة. في رأيي ، Swagger هو مدير وثيقة واجهة. في الماضي ، كتبنا عادة واجهات في العالم ، ولكن هناك مشكلة نحتاج إلى الاعتماد عليها على أدوات الطرف الثالث عند الاختبار. واجهة الحصول على ما يرام ، ويتم فتحها مباشرة من قبل المتصفح. يمكن أن يعتمد Post فقط على أدوات أخرى. يمكن أن يقوم Swagger بإنشاء مستندات واجهة مباشرة (Javaee) من خلال التعليقات التوضيحية في الكود. يستخدم معظم الأشخاص هذه الطريقة ، ويتم دمجها مباشرة في المشروع لتسهيل الأعضاء للعرض ، ويمكنهم أيضًا الاختبار مباشرة. بالإضافة إلى ذلك ، فإن واجهة Swagger جيدة أيضًا. ربما لهذا السبب اخترت استخدام Swagger. الأسلوب المريح الذي ذكره المسؤول مباشرة ليس مريحًا. يمكن أيضًا استخدام واجهات النمط. بالطبع ، هناك طريقة أخرى لكتابة Swagger لكتابة تعليمات الواجهة يدويًا. الميزة هي أن الرمز يحتوي فقط على رمز ، لأنه بمجرد إضافة توضيح واجهة Swagger إلى الرمز ، لا يزال مقدار الكود يزيد كثيرًا. بالطبع ، العيب هو أنه بعد تعديل الكود ، يجب عليك تغيير مستند الواجهة.
SpringMVC سهل للغاية لدمج Springfox-Swagger2 و Springfox-Swagger-Ui ، خطوتين فقط:
(1) إضافة تبعيات في بوم
<Rependency> <roupEd> io.springfox </rougiD> <StifactId> Springfox-Swagger-ui </intifactid> <sophy> $ {springfox-swagger <sophy> $ {springfox-swagger.version} </version> </sependency>(2) إضافة فئة تكوين Swagger:
configuration @enlobeswagger2 enableWebmvc @componentscan ("com.xxx.controller") الفئة العامة SwaggerConfig {} بعد ذلك ، يمكنك رؤية جميع معلومات الواجهة في المشروع من خلال http: //localhost/swagger-ui.html ، ويمكنك رؤية بيانات JSON من خلال http: // localhost/v2/api-docs.
ولكن كيف يمكنني تعطيل مستندات API هذه في بيئة الإنتاج؟ جربت العديد من الطرق وأخيراً وجدت طريقة بسيطة وعملية:
configuration @enblesWagger2EnableWebmvc @componentscan ("com.xxx.controller") الفئة العامة SwaggerConfig {Autowired configservice ؛ bean public docket customDocket () {if (configservice.getServerenv () == serverenvenum.online) {return new docket (documentationtype.swagger_2). .يبني()؛ } آخر {return new docket (documentationType.swagger_2) .ApiInfo (apiinfo ()) ؛ }} private apiinfo apiinfo () {return جديد apiinfobuilder () .Title ("xxx system") .Description ("xxx system interface") .license ( .يبني()؛ } apiinfo apiinfoonline () {إرجاع apiinfobuilder () }} على الرغم من أنه لا يزال من الممكن الوصول إلى الصفحة http: //localhost/swagger-ui.html ، لا يوجد محتوى ، بما في ذلك http: // localhost/v2/api-docs.
يجب أن يكون هناك طريقة أفضل!
المرجع: //www.vevb.com/article/135312.htm
يجب أن يكون Swagger في نفس سياق springMVC ، springMVC هو مجرد نص فرعي من الربيع. إذا كان Swagger يقوم بحمل سياق الربيع ، فلا يمكن اعتراض عناوين URL الخاصة بـ Swagger باستخدام اعتراض SPRINGMVC!
لذلك ، هناك حلان:
إذا كنت تستخدم التعليقات التوضيحية:
(1) تكوين Spring-MVC:
<!-استخدم التعليق التوضيحي لتسجيل الفول تلقائيًا ، فمسح فقط controller-> <السياق: مكون المسح الضوئي-"com.inspur.eyun.yunbx" use-default-filters = "false"> <! expression = "org.springframework.steretype.controller"/> <context: include-filter type = "tisplable" expression = "com.inspur.eyun.yunbx.swagger.swaggerConfig"/> </context: component-scan>
لاحظ أنك تحتاج إلى إضافة تكوين Swagger ، وفي نفس الوقت:
(2) تكوين الربيع:
<!-المسح الضوئي ، المرتبط بالتعليقات التوضيحية-> <السياق: مكون المسح القاعدة = "com.inspur.eyun.yunbx"> <context: asplude-filter type = "annotation" expression = "org.springframework.steretype.controller"/> <conctext: exclue-filter type = "envision-filter" expression = "com.inspur.eyun.yunbx.swagger.swaggerConfig"/> </context: component-scan>
انتبه إلى استبعاد التباهي
(3) تكوين Swagger:
configuration @enlobeswagger2 enablewebmvc @componentscan ("com.inspur.eyun.yunbx.controller") الفئة العامة SwaggerConfig {}لاحظ التعليق التوضيحي لـ Configuration.
بالطبع ، تتمثل الطريقة الموصى بها في استخدام طريقة تكوين XML ، لأنه بهذه الطريقة لا تحتاج إلى تقديم حزمة التبعية Swagger:
(1) تكوين Spring-MVC:
<!-استخدم التعليق التوضيحي لتسجيل الفول تلقائيًا ، فمسح فقط controller-> <السياق: مكون المسح الضوئي-"com.inspur.eyun.yunbx" use-default-filters = "false"> <! expression = "org.springframework.stereotype.controller"/> </context: component-scan> <import resource = "classpath: spring-mvc-swagger.xml"/>
spring-mvc-swagger.xml:
<؟ http://www.springframework.org/schema/beans تكوين Swagger ، بيئة الإنتاج فارغة -> <bean /> </boles>
ملاحظة: نقوم بوضع التباهي في ملف التكوين بشكل منفصل. إذا كانت بيئة عبر الإنترنت ، فإن محتوى الملف فارغ. إذا كانت بيئة اختبار في وضع عدم الاتصال ، يتم تكوين Swagger.
(2) تكوين الربيع:
<!-المسح الضوئي ، المرتبط بالتعليقات التوضيحية-> <السياق: مكون المسكي الأساسي = "com.inspur.eyun.yunbx"> <السياق: استبعاد المرشح = "التعليق التوضيحي" التعبير = "org.springframework
(3) تكوين Swagger:
enloberWagger2EnableWebmvc الفئة العامة swaggerConfig {bean docket public customDocket () {return new docket (documentationType.swagger_2) .ApiInfo (apiinfo () .Paths (PathSelectors.Any ()) .Build () ؛ } apiinfo apiinfo () {إرجاع apiinfobuilder () .يبني()؛ }}ملاحظة: هنا أزالنا التكوين ، وفي الوقت نفسه ، قمنا بتعديل POM وتكوين عبوة ملف تعريف متعددة:
pom.xml:
<!-Swagger-> <reperency> <roupiD> io.springfox </rougiD> <artifactid> springfox-swagger2 </stifactid> <sophy> $ {springfox-swagger.vent <StifactId> Springfox-swagger-ui </shintifactid> <scope> $ {swagger.scope} </scope> <الإصدار> $ {springfox-swagger-ui.version} </version> </sependency>ملاحظة: يتم تعيين النطاق المعتمد هنا بشكل ديناميكي. إذا كانت بيئة عبر الإنترنت ، فيمكننا ضبط النطاق على المقدمة.
<Freftiles> <ffression> <id> dev </id> <properties> <ffrints.active> dev </profiles.active> <swagger.scope> ترجمة </swagger.scope> </properties> <ivision> <eactbydefault> true </filectbydefault> <Swagger.scope> compile </swagger.scope> </sprenties> </sullfult> <sfplination> <id> عبر الإنترنت </id> <ferties> <proferies> <ffirts.active> اختبار </proffiles <Freftiles.Active> عبر الإنترنت </profiles.active> <stlagger.scope> المقدمة </swagger.scope> </sfressions> </summble> </firunsfiles> </firtfiles>
قم بتعيين نطاقات مختلفة لتبعيات Swagger من خلال ملفات تعريف مختلفة!
ملاحظة: هناك خطأ في springfox-swagger.version = 2.7.0 ، ويمكنك استخدام الإصدار السفلي 2.6.1. خدعة سخيف جدا!
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.