مقدمة موجزة
سوف يستخدم المشروع الربيع boot2.0 + Swagger2 تسهيل شكل اختبار راحة خلفية واجهة، والتحديث الحيوي، ونحن عندما تعديل واجهة في الخلفية، يمكن اختيال تحقيق التحديث التلقائي، من دون التفكير في الحفاظ على هذه الواجهة الاختبار.
- مصدر عنوان
- جيثب: الشبكي: //github.com/yundianzixun/spring-boot-starter-swagger2
- عدد النقابات العامة: قتال التحالف IT
- مجتمعنا: الشبكي: //100boot.cn
والأداة، ونرحب وندعم ستار، وأثناء واجهتك مشكلة، واقتراح العدد، وسأحاول لتحسين كاتب
النسخة الأساسية
- التمهيد الربيع: 2.0.4
- Swagger2: 2.7.0
خطوات
الخطوة الأولى: تحميل المشروع SpringBoot2.0 - عنوان جيثب: الشبكي: //github.com/yundianzixun/spring-boot-starter
- الوثيقة المرجعية: الشبكي: //www.jianshu.com/p/7dc2240f010e
الخطوة الثانية: إضافة مخضرم تعتمد < التبعية > < groupId > io.springfox < / GroupId > < artifactId > springfox-swagger2 < / ArtifactId > < نص > 2.7.0 < / النسخة > < / التبعية > < التبعية > < groupId > io.springfox < / GroupId > < artifactId > springfox-غرور-واجهة المستخدم < / ArtifactId > < نص > 2.7.0 < / النسخة > < / التبعية > < التبعية > < groupId > org.apache.tomcat.embed < / GroupId > < artifactId > هر-تضمين-يشب < / ArtifactId > < / التبعية > < ! - ضرب من قبل مجموعة حرب - > < التبعية > < groupId > org.springframework.boot < / GroupId > < artifactId > ربيع التمهيد-بداية-هر < / ArtifactId > < مجال > المقدمة < / نطاق > < / التبعية > < التبعية > < groupId > org.springframework.boot < / GroupId > < artifactId > الربيع التمهيد بداية على شبكة الإنترنت < / ArtifactId > < / التبعية >
الخطوة الثالثة: application.properties التكوين اختيال زيادة # تمكين خدمة اختيال swagger.enable = صحيح
الخطوة الرابعة: استخدام شروح التكوين التبختر Configuration @ EnableSwagger2 الطبقة العامة Swagger2Config { ساكنة العام النهائي سلسلة BASE_PACKAGE = "com.itunion". value ( "$ {swagger.enable}") enableSwagger منطقية الخاص؛ Bean الجمهور دوكت createRestApi () { العودة المفكرة الجديدة (DocumentationType.SWAGGER_2) .apiInfo (apiInfo ()) // بيئة الإنتاج أكثر تأمين اختيال عندما مغلقة .مكن نوع (enableSwagger) // الطابع الزمني سيتم تحويلها بالكامل إلى نوع طويل .directModelSubstitute (Timestamp.class، Long.class) // سيتم تحويلها إلى نوع طويل التاريخ النوع جميع .directModelSubstitute (Date.class، Long.class) . تحديد () // حزمة واجهة طريق المسح الضوئي، لا ننسى لتغيير بهم .apis (RequestHandlerSelectors.basePackage (BASE_PACKAGE)) .paths (PathSelectors.any ()) . البناء ()؛ } الخاصة ApiInfo apiInfo () {العودة ApiInfoBuilder جديد () .title ( "التبختر مريحة واجهات برمجة التطبيقات") . الوصف ( "خدمة API التبختر") .termsOfServiceUrl ( " . الاتصال (جديد الاتصال ( "التبختر"، "127.0.0.1"، "zhenghhgz@163.com")) .version ( "1.0") . البناء ()؛ } }
تعليق
- بعد أن تقفل بند الطبيعي قبالة اختيال، حتى هنا يضيف enableSwagger التكوين
- يمكنك استخدام directModelSubstitute المتوقع أن القيام ببعض نوع التحويل
الخطوة الخامسة: إنشاء فئة كيان العضو المعلومات حول المستخدم فئة العمومي المعلومات حول المستخدم { ApiModelProperty ( "لا") معرف طويل الخاص؛ ApiModelProperty ( "اسم المستخدم") سلسلة اسم المستخدم الخاص؛ ApiModelProperty ( "اسم") سلسلة الاسم الأول الخاص؛ ApiModelProperty ( "اسم") سلسلة اسم العائلة الخاص؛ ApiModelProperty ( "صندوق البريد") البريد الإلكتروني سلسلة الخاص؛ ApiModelProperty لا تنتقل عن طريق (مخفي = الحقيقية) // كلمة المرور JsonIgnore كلمة سلسلة خاصة. ApiModelProperty ( "الدولة") انفراد صحيح userStatus. / ** هنا الحصول على حذفها، مجموعة ** / }
الخطوة السادسة: كتابة صفحة من المراقب المالي Api (القيمة = "الوطن"، وصف = "الوطن") RequestMapping ( "/") RestController الطبقة العامة IndexController { ApiOperation (القيمة = "مرحبا ربيع التمهيد"، وتلاحظ = "التمهيد الربيع مرحبا") RequestMapping (القيمة = "/"، طريقة = RequestMethod.GET) مؤشر سلسلة العامة () { العودة "التمهيد الربيع مرحبا". } ApiOperation ( "صفحة API" قيمة = والملاحظات = "قائمة واجهة") RequestMapping (القيمة = "/ المعهد"، طريقة = RequestMethod.GET) المعهد باطلة العامة (HttpServletResponse الاستجابة) يلقي IOException { response.sendRedirect ( "اختيال-ui.html")؛ } }
- لسهولة الوصول إلى الصفحة اختيال واجهة المستخدم، ونحن نفعل إعادة توجيه أكثر ملاءمة المعهد
الخطوة السابعة: كتابة الهبوط المراقب Api (القيمة = "المستخدم"، وصف = "المستخدم") RequestMapping ( "/ المعلومات حول المستخدم") RestController الطبقة العامة UserInfoController { ApiOperation (القيمة = "واجهة تسجيل الدخول - متعدد قيمتها من حيث القيمة"، وتلاحظ = "إدخال اسم المستخدم وكلمة السر") ApiResponses (القيمة = { ApiResponse (رمز = 200، رسالة = "OK"، ردا = UserInfo.class، responseContainer = "المعلومات حول المستخدم")، ApiResponse (رمز = 405، رسالة = "اسم الحساب أو كلمة المرور غير صحيحة") }) ApiImplicitParam (اسم = "الخريطة"، القيمة = "{\" اسم المستخدم \ ": \" JackMa \ "، \" كلمة السر \ ": \" 123 \ "}") RequestMapping (القيمة = "loginForMap"، طريقة = RequestMethod.POST، وتنتج = MediaType.APPLICATION_JSON_UTF8_VALUE) ResponseEntity < المعلومات حول المستخدم > loginForMap (RequestBody خريطة < سلسلة، سلسلة > الخريطة) { إذا (! map.get ( "اسم المستخدم"). equalsIgnoreCase ( "JackMa") ||! map.get ( "كلمة السر"). equalsIgnoreCase ( "123")) { عودة ResponseEntity.status (HttpStatus.METHOD_NOT_ALLOWED). البناء ()؛ } المعلومات حول المستخدم المستخدم = المعلومات حول المستخدم الجديد ()؛ user.setId (1L)؛ user.setUserName ( "JackMa")؛ user.setFirstName ( "MA")؛ user.setLastName ( "سحابة")؛ user.setEmail ( "zhenghhgz@163.com")؛ user.setUserStatus (1)؛ عودة ResponseEntity.ok (المستخدم)؛ } ApiOperation (القيمة = "واجهة تسجيل الدخول - اسطة نقل متعدد المستويات"، وتلاحظ = "إدخال اسم المستخدم وكلمة السر") ApiResponses (القيمة = { ApiResponse (رمز = 200، رسالة = "OK"، ردا = UserInfo.class، responseContainer = "المعلومات حول المستخدم")، ApiResponse (رمز = 405، رسالة = "اسم الحساب أو كلمة المرور غير صحيحة") }) ApiImplicitParams ({ ApiImplicitParam (اسم = "اسم المستخدم"، القيمة = "اسم المستخدم"، المطلوبة = صحيح، نوع البيانات = "السلسلة"، paramType = "الاستعلام")، ApiImplicitParam (اسم = "كلمة المرور"، القيمة = "كلمة المرور"، المطلوبة = صحيح، نوع البيانات = "السلسلة"، paramType = "الاستعلام")، }) RequestMapping (القيمة = "loginForParams"، طريقة = RequestMethod.POST، وتنتج = MediaType.APPLICATION_JSON_UTF8_VALUE) ResponseEntity < المعلومات حول المستخدم > loginForMap (RequestParam سلسلة باسم المستخدم، كلمة المرورRequestParam سلسلة) { إذا (! userName.equalsIgnoreCase ( "JackMa") ||! passWord.equalsIgnoreCase ( "123")) { عودة ResponseEntity.status (HttpStatus.METHOD_NOT_ALLOWED). البناء ()؛ } المعلومات حول المستخدم المستخدم = المعلومات حول المستخدم الجديد ()؛ user.setId (1L)؛ user.setUserName ( "JackMa")؛ user.setFirstName ( "MA")؛ user.setLastName ( "سحابة")؛ user.setEmail ( "jackma@163.com")؛ user.setUserStatus (1)؛ عودة ResponseEntity.ok (المستخدم)؛ } }
تعليق
- بارامس وأدركت باستخدام اثنين مختلفة نقل البيانات بارام
- أوصينا الربيع نوع من ResponseEntity النتائج عودة توحيد
- اختيال جيدة الى حد ما رمز الاستجابة الدعم، يمكننا وضع رمز الاستثناء التي قد تنشأ يتم تعيين كافة من أجل تسهيل الوقت لرسو السفن من معالجة الاستثناء
خطوة ثمانية: بدء تشغيل تعليق
- رقم المنفذ له تكوينه الخاص يأخذ
كما هو مبين أدناه:
swagger2.jpg
خطوة 9: إعدام أدخل .JPG
الناتج .JPG
المساهمون
- التحالف IT سطر القتالية
- التحالف IT القتالية - قهوة
أكثر من التركيز على المحتوى مثيرة "IT تحالف مكافحة" يا ~ ~ ~