如何将服务器内的客户端代码与swagger和spring引导框架集成

时间:2018-03-21 06:21:52

标签: spring-boot swagger swagger-2.0 swagger-codegen

我是整个微服务领域的新手,但我的任务是开发微服务。使用swagger(现在是OpenAPI)创建规范,生成的代码在spring boot框架中。

我的具体问题,可以转换为更通用的问题。假设有两个微服务。让我们称他们为#34;令牌服务"和"黑名单服务"。客户端从"令牌服务请求令牌"并且它将与"黑名单服务"了解用户是否已被列入黑名单。如果没有列入黑名单,客户将获得一个令牌;否则请求被拒绝。我能够使用swagger创建这两个微服务,并且它们可以独立运行。

我的问题如下。一旦客户端请求令牌,"令牌服务"需要查看"黑名单服务"。 swagger规范生成客户端以及服务器代码来执行此操作。我如何整合"黑名单服务"的客户代码?使用服务器代码"令牌服务"。我无法找到任何解释这一点的好资源。我的样本yml文件如下所示。

token.yml

swagger: '2.0'
info:
  description: Get token
  version: 0.0.1
  title: Token Service
host: 'localhost:8080'
basePath: /test/v1.0
schemes:
  - http
paths:
  /Create:
    get:
      summary: Get token
      parameters:
        - name: payload
          in: body
          description: The person requesting for token
          schema:
            type: object
            properties:
              name:
                type: string
      responses:
        '200':
          description: OK
          schema:
            type: object
            properties:
              name:
                type: string
              token:
                type: string
        '403':
          description: Forbidden

blacklist.yml

swagger: '2.0'
info:
  description: Blacklist Service
  version: 0.0.1
  title: Blacklist Service
host: 'localhost:8081'
basePath: /test/v1.0
schemes:
  - http
paths:
  /blacklist:
    get:
      summary: Check whether the user is blacklisted
      parameters:
        - name: payload
          in: body
          description: The name of user
          schema:
            type: object
            properties:
              name:
                type: string
      responses:
        '200':
          description: OK
        '404':
          description: Not found

或者有没有办法在yml文件本身中执行此操作,让swagger知道需要与服务器一起生成另一个服务的客户端代码。

可以说,"黑名单服务"在这种情况下不是必需的。但我原来的问题需要检查另一项服务。 在Windows 10上使用OpenAPI 2.0和Java 8

1 个答案:

答案 0 :(得分:0)

您可以使用Rest Template调用另一个微服务。 请参阅此休息电话。

https://howtodoinjava.com/spring/spring-restful/spring-restful-client-resttemplate-example/