Skip to content

APIのパラメータに対して数値型の定数を定義できない #23

@masaru-takano

Description

@masaru-takano

対象

DeviceConnect Codegen v0.4.0以降

概要

Swagger 2.0 の仕様上では、APIのパラメータを定義する際、下記のようなinteger型のenumを定義できる。

{
    "name": "exampleParam"
    "type": "integer",
    "format": "int32",
    "enum": [10, 20]
}

上記の定義は、「exampleParamというパラメータは10 または 20のどちらかの値となる」ということを意味する。

しかし、上記の定義を含むJSONをDeviceConnect Codegenに対して入力し、任意のプラットフォームのプラグインを生成したときに問題が発生する。

具体的には、プラグインに同梱するJSON上で、下記のように exampleParam パラメータのenumについての定義が null値の配列に変わってしまう。

{
    "name": "exampleParam"
    "type": "integer",
    "format": "int32",
    "enum": [null, null]
}

これにより、プラグイン起動時に例外が発生し、プラグインが異常終了する。

原因

DeviceConnect Codegenの依存する swagger-parser ライブラリ側で、numberおよびinteger型のenumを解析していないため。

参考: swagger-api/swagger-core#2178

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions