Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
SwaggerÈëÃŽ̳Ì
 
  4124  次浏览      31
 2019-3-22 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×Ôcnblogs£¬±¾ÎĽéÉÜÁËSwaggerÄܳÉΪ×îÊÜ»¶Ó­µÄREST APIsÎĵµÉú³É¹¤¾ßÖ®Ò»Ô­Òò£¬½áºÏʵÀý½éÉÜSwaggerµÄʹÓ÷½·¨µÈ¡£

¹ØÓÚ Swagger

SwaggerÄܳÉΪ×îÊÜ»¶Ó­µÄREST APIsÎĵµÉú³É¹¤¾ßÖ®Ò»£¬ÓÐÒÔϼ¸¸öÔ­Òò£º

Swagger ¿ÉÒÔÉú³ÉÒ»¸ö¾ßÓл¥¶¯ÐÔµÄAPI¿ØÖÆÌ¨£¬¿ª·¢Õß¿ÉÒÔÓÃÀ´¿ìËÙѧϰºÍ³¢ÊÔAPI¡£

Swagger ¿ÉÒÔÉú³É¿Í»§¶ËSDK´úÂëÓÃÓÚ¸÷ÖÖ²»Í¬µÄƽ̨ÉϵÄʵÏÖ¡£

Swagger Îļþ¿ÉÒÔÔÚÐí¶à²»Í¬µÄƽ̨ÉÏ´Ó´úÂë×¢ÊÍÖÐ×Ô¶¯Éú³É¡£

Swagger ÓÐÒ»¸öÇ¿´óµÄÉçÇø£¬ÀïÃæÓÐÐí¶àÇ¿º·µÄ¹±Ï×Õß¡£

Swagger ÎĵµÌṩÁËÒ»¸ö·½·¨£¬Ê¹ÎÒÃÇ¿ÉÒÔÓÃÖ¸¶¨µÄ JSON »òÕß YAML ÕªÒªÀ´ÃèÊöÄãµÄ API£¬°üÀ¨Á˱ÈÈç names¡¢order µÈ API ÐÅÏ¢¡£

Äã¿ÉÒÔͨ¹ýÒ»¸öÎı¾±à¼­Æ÷À´±à¼­ Swagger Îļþ£¬»òÕßÄãÒ²¿ÉÒÔ´ÓÄãµÄ´úÂë×¢ÊÍÖÐ×Ô¶¯Éú³É¡£¸÷ÖÖ¹¤¾ß¶¼¿ÉÒÔʹÓà Swagger ÎļþÀ´Éú³É»¥¶¯µÄ API Îĵµ¡£

×¢Ò⣺Óà Swagger ÎļþÉú³É»¥¶¯µÄ API ÎĵµÊÇ×¼òµÄ£¬ËüչʾÁË×ÊÔ´¡¢²ÎÊý¡¢ÇëÇó¡¢ÏìÓ¦¡£µ«ÊÇËü²»»áÌṩÄãµÄAPIÈçºÎ¹¤×÷µÄÆäËûÈκÎÒ»¸öϸ½Ú¡£

Petstore µÄ Swagger Àý×Ó

ΪÁ˸üºÃµÄÀí½â Swagger £¬ÎÒÃÇÏÖÔÚÀ´Ì½Ë÷һϠPetsotre ÏîÄ¿µÄÀý×Ó¡£¼Çס£ºÒÔϳöÏÖµÄ UI ¶¼ÊÇÖ¸Swagger UI¡£Swagger ¿ÉÒÔ±»Õ¹Ê¾³É²»Í¬µÄÊÓ¾õÑùʽ£¬ÕâÈ¡¾öÓÚÄãËùʹÓõ½µÄÊÓ¾õ¿ò¼Ü¡£

ÓÐÈý¸ö×ÊÔ´£ºpet£¬store£¬user¡£

´´½¨Ò»¸ö pet

1¡¢Õ¹¿ª pet µÄ post ·½·¨

2¡¢È»ºóµ¥»÷ Model Schema ÖеĻÆÉ«×ÖÌåµÄ JSON¡£

ÕâÀïÓà JSON Ìî³äÁË body value¡£ÕâÀïµÄ JSON ÊÇÄã±ØÐëÉÏ´«µÄ£¬ÓÃÓÚ´´½¨ pet ×ÊÔ´¡£

3¡¢½«µÚÒ»¸ö id ±êÇ©µÄÖµÐÞ¸Äһϣ¨Äã±ØÐë±£Ö¤ id Öµ¶¼ÊÇΨһµÄ£¬²¢ÇÒ²»ÄÜ´Ó 0 ¿ªÊ¼£©¡£

4¡¢½« name ±êÇ©µÄÖµÐÞ¸Äһϣ¨×îºÃҲҪΨһ£¬·½±ã¶Ô±È½á¹û£©£¬ÒÔÏÂÊÇʾÀý´úÂ룺

{
"id": 37987,
"category": {
"id": 0,
"name": "string"
},
"name": "Mr. Fluffernutter",
"photoUrls": [
"string"
],
"tags": [
{
"id": 0,
"name": "string"
}
],
"status": "available"
}

5¡¢µ¥»÷ Try it out! °´Å¥£¬²é¿´ÏìÓ¦£º

ͨ¹ý ID ²éѯ pet

Õ¹¿ª Get ·½·¨£ºpet/{petId}£¬ÊäÈëÄãµÄ petId£¬µ¥»÷ Try it out!£¬Äã´´½¨µÄ pet ¾Í»áÏÔʾÔÚ response ÖС£

ĬÈÏÇé¿öÏ£¬api ÏìÓ¦¶¼ÊÇ xml¡£¿ÉÒÔ°Ñ Response Content Type ÐÞ¸ÄΪ application/json ÔÙÊÔÒ»´Î¡£

·µ»ØµÄÖµ½«»áÊÇ JSON ¸ñʽ

×¢Ò⣺ֵµÃÇ¿µ÷µÄÊÇ Swagger ÎĵµÒ»¶¨ÒªÍ¨¹ý×ÅÊÖ³¢ÊÔÀ´Ñ§Ï°¡£ÄãҪͨ¹ýʵʵÔÚÔڵķ¢ËÍÇëÇóºÍ²é¿´ÏìÓ¦À´¸üºÃµÄÀí½â Petstore API ÊÇÈçºÎ¹¤×÷µÄ¡£µ«ÊÇ»¹Òª×¢ÒâÏÖÔÚÄãÒѾ­ÔÚÄãµÄÕæÊµPetstoreÊý¾Ý¿âÖд´½¨ÁËÒ»¸öеÄpet¡£´Óѧϰ³¢ÊÔ API ¹ý¶Éµ½ÔÚÉú²ú»·¾³ÖÐʹÓà API µÄʱºò£¬ÄÇЩ²âÊÔÊý¾ÝÄã¿ÉÄܶ¼ÐèÒª½«ËüÃÇɾ³ý¡£

ÕûÀí Swagger ×é¼þ

Swagger ·Ö³ÉһЩ²»Í¬µÄ¿é¡£

Swagger spec£ºÕâÒ»¿é¶ÔÔªËØµÄǶÌס¢ÃüÁîµÈ²ÉÓùٷ½Ä£Ê½¡£Èç¹ûÄãÏëÒª¶Ô Swagger ÎļþÊÖ¶¯±àÂ룬Äã±ØÐë·Ç³£ÊìϤ Swagger spec¡£

Swagger editor£ºÕâÊÇÔÚÏ߱༭Æ÷£¬ÓÃÓÚÑéÖ¤ÄãµÄ YML ¸ñʽµÄÄÚÈÝÊÇ·ñÎ¥·´ Swagger spec ¡£YML ÊÇÒ»Ö־䷨£¬ÒÀÀµÓÚ¿Õ¸ñºÍǶÌס£ÄãÐèÒª¶Ô YML ¾ä·¨ºÜÊìϤ²ÅÄܺܺõÄ×ñÊØ Swagger spec ¹æ·¶¡£Swagger ±à¼­Æ÷»á±ê³ö´íÎó²¢ÇÒ¸øÄã¸ñʽÌáÐÑ£¨Swagger spec Îļþ¿ÉÒÔʹÓà JSON »òÕß YAML ÖеÄÈÎÒâÒ»ÖÖ¸ñʽ£©¡£

Swagger-UI£ºÕâÊÇÒ»Ì× HTML/CSS/JS ¿ò¼ÜÓÃÓÚ½âÎö×ñÊØ Swagger spec µÄ JSON »ò YML Îļþ£¬²¢ÇÒÉú³ÉAPIÎĵµµÄUIµ¼º½¡£Ëü¿ÉÒÔ½«ÄãµÄ¹æ¸ñÎĵµ×ª»»³ÉSwagger Petsotre-like UI¡£

Swagger-codegen£ºÕâ¸ö¹¤¾ß¿ÉÒÔΪ²»Í¬µÄƽ̨Éú³É¿Í»§¶Ë SDK£¨±ÈÈç Java¡¢JavaScript¡¢Python µÈ£©¡£ÕâЩ¿Í»§¶Ë´úÂë°ïÖú¿ª·¢ÕßÔÚÒ»¸ö¹æ·¶Æ½Ì¨ÖÐÕûºÏ API £¬²¢ÇÒÌṩÁ˸ü¶à½¡×³µÄʵÏÖ£¬¿ÉÄܰüº¬Á˶à³ß¶È¡¢Ị̈߳¬ºÍÆäËûÖØÒªµÄ´úÂë¡£SDK ÊÇÓÃÓÚÖ§³Ö¿ª·¢ÕßʹÓà REST API µÄ¹¤¾ß¡£

һЩ Swagger µÄʵÏÖÀý×Ó

Reverb

VocaDB

Watson Developer Cloud

ËüÃÇ´ó¶à¿´ÆðÀ´Ò»Ñù¡£Äã»á×¢Òâµ½ Swagger ʵÏÖµÄÎĵµ¶¼ºÜ¾«¼ò¡£ÕâÊÇÒòΪ Swagger µÄչʾ¶¼ÊÇ»¥¶¯µÄÌåÑ飬Äã¿ÉÒÔ³¢ÊÔÇëÇóºÍ²é¿´ÏìÓ¦£¬Ê¹ÓÃÄã×Ô¼ºµÄ API ÃÜÔ¿À´²é¿´Äã×Ô¼ºµÄÊý¾Ý¡£ËüÊDZ߿´±ß×ö±ßѧµÄÐÎʽ¡£

ËüÒ²ÓÐһЩȱÏÝ£º

ûÓÐÌ«¶àµÄ¿Õ¼äÀ´ÃèÊöºó¶ËÏêϸµÄ¹¤×÷

ÿ¸ö Swagger UI µÄÊä³ö¿´ÆðÀ´¶¼²î²»¶à

Swagger UI »á´ÓÄãÆäËûµÄÎĵµÖзÖÀë³É¶ÀÁ¢µÄÒ»¸öÕ¾µã

´´½¨ Swagger UI չʾ

±¾½ÚÎÒÃǽ«ÎªÊ¹ÓÃMashape Weather APIµÄ weatherdata ºǫ́À´´´½¨Ò»¸ö Swagger UI £¨weatherdataÊÇ֮ǰµÄ¿Î³ÌÖд´½¨µÄÒ»¸öÏîÄ¿£©¡£Äã¿ÉÒÔÔÚÕâÀï²é¿´demo¡£

a.´´½¨Ò»¸ö Swagger spec Îļþ

1¡¢È¥Swagger online editor

2¡¢Ñ¡Ôñ File > Open Example È»ºóÑ¡Ôñ PetStore Simple ¡£µ¥»÷ Open¡£

Äã¿ÉÒÔʹÓà weatherdata ºǫ́ÎĵµÀ´×Ô¶¨ÒåÕâ¸öʾÀý YML Îļþ¡£µ«Èç¹ûÄãÊÇÐÂÊÖ£¬ Ëü»á´øÄãÈÏʶspec¡£·½±ãÆð¼û£¬Ö»ÐèÒªÓõ½ÏÂÃæµÄÎļþ£¬È»ºó¸´ÖÆÒ»·Ýµ½ Swagger editor: swagger.yaml¡£

swagger: "2.0"
info:
version: "1.0.0"
title: "Weather API"
description: "A sample API that uses a Mashape weather API as an example to demonstrate features in the swagger-2.0 specification"
termsOfService: "http://helloreverb.com/terms/"
contact:
name: "Tom Johnson"
email: "tomjohnson1492@gmail.com"
url: "http://swagger.io"
license:
name: "MIT"
url: "http://opensource.org/licenses/MIT"
host: "simple-weather.p.mashape.com"
schemes:
- "https"
consumes:
- "application/json"
produces:
- "application/text"
paths:
/aqi:
get:
tags:
- "Air Quality"
description: "gets air quality index"
operationId: "getAqi"
produces:
- "text"
parameters:
-
name: "lat"
in: "query"
description: "latitude"
required: false
type: "string"
-
name: "lng"
in: "query"
description: "longitude"
required: false
type: "string"
responses:
200:
description: "aqi response"
default:
description: "unexpected error"

/weather:
get:
tags:
- "Weather Forecast"
description: "gets weather forecast in short label"
operationId: "getWeather"
produces:
- "text"
parameters:
-
name: "lat"
in: "query"
description: "latitude"
required: false
type: "string"
-
name: "lng"
in: "query"
description: "longitude"
required: false
type: "string"
responses:
200:
description: "weather response"
default:
description: "unexpected error"
/weatherdata:
get:
tags:
- "Full Weather Data"
description: "Get weather forecast by Latitude and Longitude"
operationId: "getWeatherData"
produces:
- "application/json"
parameters:
-
name: "lat"
in: "query"
description: "latitude"
required: false
type: "string"
-
name: "lng"
in: "query"
description: "longitude"
required: false
type: "string"
responses:
200:
description: "weatherdata response"
default:
description: "unexpected error"

securityDefinitions:
internalApiKey:
type: apiKey
in: header
name: X-Mashape-Key

×¢Ò⣺ʹÓà YML Ìæ»»JSON¡£ YML ¾ä·¨±È JSON ¿É¶ÁÐԸߡ£Ê¹Óà YML £¬¿Õ¸ñºÜÖØÒª¡£Ð¶ÎÂäÐèÒªËõ½øÁ½¸ö¿Õ¸ñ¡£Ã°ºÅ±íʾ¸ö¶ÔÏó¡£Á¬×Ö·û´ú±íÒ»¸ö sequence »òÕß list £¨ÏñÒ»¸ö array£©¡£Èç¹ûÄãÏÂÔØÕâ¸öÎļþ¶ø²»ÊǸ´ÖÆÕ³Ìù£¬Äã»ù±¾²»»áÅöµ½¿Õ¸ñÎÊÌâ¡£

Swagger editor ¸æËßÄãÎļþÈçºÎ±»Êä³ö£¬ÄãÒ²¿ÉÒÔ¿´µ½ÑéÖ¤³öÀ´µÄ´íÎó¡£Ã»ÓÐÕâ¸öÔÚÏ߱༭Æ÷£¬ÄãÖ»ÄÜÔÚÔËÐдúÂëµÄʱºò²ÅÄÜÖªµÀ YML ¾ä·¨ÊÇ·ñÓÐЧ £¨²¢ÇÒ¿´µ½´íÎóÌáʾ£¬ YAML ÎļþÒ²²»Äܱ»ÕýÈ·½âÎö£©¡£

3¡¢±£Ö¤ Swagger edirot ÖÐµÄ YAML ÎļþÓÐЧ¡£Èç¹ûÓдíÎó±ØÐëÒªÐÞÕý¡£

4¡¢Ñ¡Ôñ File > Download YAML ²¢ÇÒ±£´æÎª swagger.yaml µ½±¾µØ£¨Äã¿ÉÒÔÖ»¸´ÖÆ´úÂëÈ»ºóÕ³Ìùµ½¿Õ°×ÎļþÖУ¬ÃüÃûΪ swagger.yaml£©¡£

ÄãÒ²¿ÉÒÔÑ¡Ôñ JSON ¸ñʽ£¬²»¹ý YAML ¿É¶ÁÐÔ¸ü¸ß¡£

b.ÉèÖÃ Swagger UI

1¡¢Github: Swagger UI¡£ÏÂÔØ¡¢½âѹ¡£Ö»ÐèÒªÓõ½ dist Îļþ¼Ð¡£³ý·ÇÄãÏëÖØÐÂÉú³É dist ÖеÄÎļþ£¬²Å»áÓõ½±ðµÄ¡£

2¡¢´ò¿ª dist > index.html

3¡¢ÕÒµ½£ºurl = "http://petstore.swagger.io/v2/swagger.json";

4¡¢Öµ¸Ä³É swagger.yaml µÄ·¾¶

5¡¢±£´æ´ò¿ªindex.html

c.ÉÏ´«Îļþµ½ web Ö÷»ú

³ýÁ˱¾µØä¯ÀÀ Swagger Îļþ£¬ÄãÒ²¿ÉÒÔʹÓà XAMPP ÔÚ±¾µØÔËÐÐÒ»¸ö web ·þÎñÆ÷

1¡¢ÏÂÔØ°²×°XAMPP

2¡¢ÔÚÄãµÄÓ¦ÓóÌÐòÎļþ¼ÐÖдò¿ª XAMPP Îļþ¼Ð£¬Æô¶¯ manager-osx ¿ØÖÆÌ¨

3¡¢µ¥»÷ Manage Servers tab

4¡¢Ñ¡Ôñ Apache Web Server µ¥»÷ Start

5¡¢´ò¿ª XAMPP ÖÐµÄ htdocs Îļþ¼Ð¡£Èç¹ûÊÇMac£¬Í¨³£ÔÚ /Applications/XAMPP/xamppfiles/htdocs¡£

6¡¢½« dist Îļþ¼ÐÍϵ½´Ë´¦

7¡¢ÔÚÄãµÄä¯ÀÀÆ÷ÖÐä¯ÀÀ localhost/dist

¾Í¿ÉÒÔ¿´µ½ Swagger UIµÄչʾ¡£

ÌåÑé Swagger UI

1¡¢ÓÃä¯ÀÀÆ÷ä¯ÀÀ Swagger UI¡£

2¡¢ÔÚÓÒÉϽǣ¬µ¥»÷ Authorize ²¢ÇÒÊäÈëÄãµÄ Mashape API Key¡£Èç¹ûÄãûÓÐ Mashape API Key£¬Äã¿ÉÒÔ3¡¢Ê¹Óà EF3g83pKnzmshgoksF83V6JB6QyTp1cGrrdjsnczTkkYgYrp8p¡£

4¡¢È¥ Google Maps ËÑË÷Ò»¸öµØÖ·¡£

5¡¢´Ó URL ÖÐÈ¥»ñÈ¡¾­Î³¶È£¬½«Æä²åÈëµ½ÄãµÄ Swagger UIÖУ¨±ÈÈ磺1.3319164 for lat, 103.7231246 for lng£©

6¡¢µ¥»÷ Try it out¡£

Èç¹û³É¹¦£¬ÄãÓ¦¸Ã¿ÉÒÔ¿´µ½ response body µÄÏìÓ¦£º9 c, Mostly Cloudy at South West, Singapore

Èç¹ûÄã¿´µ½ÁËNot supported£¬³¢ÊÔµ÷Õû¾­Î³¶È¡£

Èç¹ûÄãË¢ÐÂÁ˽çÃæ£¬ÄãÒªÖØÐÂÊäÈë API Key¡£

´Ó×¢ÊÍÖÐ×Ô¶¯Éú³É Swagger Îļþ

ΪÁË´úÌæ Swagger file µÄÊÖ¶¯±àÂ룬ÄãÒ²¿ÉÒÔ´ÓÄãµÄ³ÌÐò´úÂë×¢ÊÍÖÐ×Ô¶¯Éú³É¡£ÓÐÐí¶àµÄ Swagger ¿â¿ÉÒÔÓÃÀ´ÕûºÏ²»Í¬µÄ´úÂë¿â¡£ÕâЩ Swagger ¿â¿ÉÒÔ½âÎö×¢ÊͲ¢ÇÒÉú³É¸ú֮ǰÊÖ¶¯Éú³ÉÏàͬµÄ Swagger Îļþ¡£

ÒªÕûºÏ Swagger µ½×Ô¼ºµÄ´úÂëÖУ¬ÒªÔÊÐí¿ª·¢Õß±ã½ÝµÄ׫дÎĵµ£¬±£Ö¤ÐÂÌØÐÔ¶¼»á±»¼Ç¼£¬²¢ÇÒ±£³ÖÎĵµµÄ¸üС£ÕâЩעÊÍ·½·¨¸ù¾Ý²»Í¬µÄÓïÑԷֳɲ»Í¬µÄ Swagger Îĵµ¿é¡£

   
4124 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù