2017-09-21 14 views
0

私は派手なエキスパートではありませんが、すべてのシステムではJSONやYAMLでAPIのすべてのエンドポイントなどを定義する必要があります。スカラソースコード(http4s)からSwagger/OpenAPI仕様を生成

私の質問です:実際のソースコードに基づいてこれらの仕様ファイルを生成する方法はありますか? プロパティを追加したり、わずかに異なる結果を戻したりすると、エンドポイントコード&のドキュメントを同期させた状態に保つのが非常に難しいようです。私はこのコードを持っている場合

ので(http4s & RhoService使用):

object HelloWorld { 
    val service = new RhoService { 
    GET/"hello"/'name |>> { name: String => 
     Ok(Json.obj("message" -> Json.fromString(s"Hello, ${name}"))) 
    } 
    } 
} 

それはいくつかの方法:)それは十分に文書化されていない

/hello/{name}: 
    get: 
     tags: 
     - "HelloWorld" 
     summary: "" 
     description: "" 
     operationId: "getHellobyName" 
     produces:   
     - "application/json" 
     parameters: 
     - name: "name" 
     in: "path" 
     description: "" 
     required: true 
     type: "string" 
     responses: 
     200: 
      description: "successful operation" 
      schema: 
      $ref: "#/definitions/Hello"   
     security: 
     - api_key: [] 

答えて

1

に(生成することができればそれは素晴らしいことです、明らかにhttp4sのRhoServiceは、あなたのルートに基づいてswagger.jsonを生成するミドルウェアを追加します:

http://localhost:8080/swagger.json

Gitのソース:奇妙それについては文書がありませんhttps://github.com/http4s/rho/blob/0c5aed48aeeea18b1d66d88b58cd3deea733f070/swagger/src/main/scala/org/http4s/rho/swagger/SwaggerSupport.scala#L30

+0

、このような重要なコンポーネントを。 –