首先去github下载swagger相关项目,点击打开链接,下载之后我们将swagger-codegen-cli 打包命令如下:mvn clean package ,如果测试报错的话,我们加上跳过测试 -Dmaven.test.skip=true,之后你会发现打包成功,进入项目路径将swagger-codegen-cli的jar包拷出来,然后doc执行相关命令生产你想要的代码,但是再打包过程你下载jar包过慢的话,那么你可以把maven服务器配置成国内镜像,我的博客有相关内容。或者直接在线编辑器,直接生成服务端或者客户端代码,给出连接如下:http://editor2.swagger.io/,非常棒对于微服务非常简便,也不用再自己写文档了,包括测试直接点开swaggerui直接测试接口,这个开发人员可以更加注重业务逻辑。生成代码的命令给出如下 :
C:\Users\Administrator>java -jar C:\Users\Administrator\Desktop\swagger-codegen-
cli.jar generate -i C:\Users\Administrator\Desktop\user.yml -c C:\Users\Administ
rator\Desktop\cloud.json -l spring -o ll(doc中别换行)
简单解释下命令:-i 编辑的yml文件,就是你的url与实体类等。
-c 你想生成的代码用什么框架。例如 springcloud、springboot
-l 生成代码使用的语言 例如 -java -spring(生成spring相关的框架应该用这个)
-o输出路径
之后根据命令给出user.yml文件,cloud.json文件,cloud.json文件不应该添加包的路径,如果添加那么就会不能生成swaggerconfig配置文件,就用默认的包。
=======================user.yml==========================================
# this is an example of the Uber API # as a demonstration of an API spec in YAML swagger: '2.0' info: title: Uber API description: Move your app forward with the Uber API version: "1.0.0" # the domain of the service host: api.uber.com # array of all schemes that your API supports schemes: - https # will be prefixed to all paths basePath: /v1 produces: - application/json paths: /products: get: summary: Product Types description: | The Products endpoint returns information about the *Uber* products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order. parameters: - name: latitude in: query description: Latitude component of location. required: true type: number format: double - name: longitude in: query description: Longitude component of location. required: true type: number format: double tags: - Products responses: 200: description: An array of products schema: type: array items: $ref: '#/definitions/Product' default: description: Unexpected error schema: $ref: '#/definitions/Error' /estimates/price: get: summary: Price Estimates description: | The Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.<br><br>The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier. parameters: - name: start_latitude in: query description: Latitude component of start location. required: true type: number format: double - name: start_longitude in: query description: Longitude component of start location. required: true type: number format: double - name: end_latitude in: query description: Latitude component of end location. required: true type: number format: double - name: end_longitude in: query description: Longitude component of end location. required: true type: number format: double tags: - Estimates responses: 200: description: An array of price estimates by product schema: type: array items: $ref: '#/definitions/PriceEstimate' default: description: Unexpected error schema: $ref: '#/definitions/Error' /estimates/time: get: summary: Time Estimates description: The Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs. parameters: - name: start_latitude in: query description: Latitude component of start location. required: true type: number format: double - name: start_longitude in: query description: Longitude component of start location. required: true type: number format: double - name: customer_uuid in: query type: string format: uuid description: Unique customer identifier to be used for experience customization. - name: product_id in: query type: string description: Unique identifier representing a specific product for a given latitude & longitude. tags: - Estimates responses: 200: description: An array of products schema: type: array items: $ref: '#/definitions/Product' default: description: Unexpected error schema: $ref: '#/definitions/Error' /me: get: summary: User Profile description: The User Profile endpoint returns information about the Uber user that has authorized with the application. tags: - User responses: 200: description: Profile information for a user schema: $ref: '#/definitions/Profile' default: description: Unexpected error schema: $ref: '#/definitions/Error' /history: get: summary: User Activity description: The User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.<br><br>The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary. parameters: - name: offset in: query type: integer format: int32 description: Offset the list of returned results by this amount. Default is zero. - name: limit in: query type: integer format: int32 description: Number of items to retrieve. Default is 5, maximum is 100. tags: - User responses: 200: description: History information for the given user schema: $ref: '#/definitions/Activities' default: description: Unexpected error schema: $ref: '#/definitions/Error' definitions: Product: type: object properties: product_id: type: string description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles. description: type: string description: Description of product. display_name: type: string description: Display name of product. capacity: type: string description: Capacity of product. For example, 4 people. image: type: string description: Image URL representing the product. PriceEstimate: type: object properties: product_id: type: string description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles currency_code: type: string description: "[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code." display_name: type: string description: Display name of product. estimate: type: string description: Formatted string of estimate in local currency of the start location. Estimate could be a range, a single number (flat rate) or "Metered" for TAXI. low_estimate: type: number description: Lower bound of the estimated price. high_estimate: type: number description: Upper bound of the estimated price. surge_multiplier: type: number description: Expected surge multiplier. Surge is active if surge_multiplier is greater than 1. Price estimate already factors in the surge multiplier. Profile: type: object properties: first_name: type: string description: First name of the Uber user. last_name: type: string description: Last name of the Uber user. email: type: string description: Email address of the Uber user picture: type: string description: Image URL of the Uber user. promo_code: type: string description: Promo code of the Uber user. Activity: type: object properties: uuid: type: string description: Unique identifier for the activity Activities: type: object properties: offset: type: integer format: int32 description: Position in pagination. limit: type: integer format: int32 description: Number of items to retrieve (100 max). count: type: integer format: int32 description: Total number of items available. history: type: array items: $ref: '#/definitions/Activity' Error: type: object properties: code: type: integer format: int32 message: type: string fields: type: string============================cloud.json========================================
{ "groupId" : "com.ll", "artifactId" : "feign", "artifactVersion" : "1.0.0", "interfaceOnly" : "true", "library" : "spring-boot", }
生成的项目在你的指定的路径了,哈哈哈。之后导入ide,springboot启动项目,所以我们导入加入eclipse,加入main函数,
给出代码如下,路径放在class路径下,
@SpringBootApplication @ComponentScan(value="io.swagger,io.swagger.api,io.swagger.configuration,io.swagger.model") public class TestSpringbootApplication { public static void main(String[] args) { SpringApplication.run(TestSpringbootApplication.class, args); } }
依赖不需要我们再加入了,之后访问url路径为:http://localhost:8080/v1/ 访问之后我们看到如下图