2017-05-24 4 views
1

いくつかの下位互換性の理由から、/ abと/ a-bの両方のパスをサポートする必要があります。Swagger 2.0:パスは異なるが要求と応答は同じ複数のPathオブジェクト

要求オブジェクトと応答オブジェクトは、両方のパスで同じになります。

私は、両方のパスに対して要求と応答オブジェクトの定義を繰り返す必要がないように、次のようなことができますか?

paths: 
    /ab: 
    /a-b: 
    post: 
    ... 

答えて

1

はい、あなたはこのように、別のパス項目パス項目の参照を持つことができます:ここでは

paths: 
    /ab: 
    ... 
    /a-b: 
    $ref: '#/paths/~1ab' 

~1ab/abのエスケープバージョンです。 ~~0なり、/~1次のようになります:JSONポインタで

、文字通りに解釈されるようにエスケープする必要がある2つの特殊文字がある

  • /ab~1ab$ref: '#/paths/~1ab'
  • /foo/bar→→$ref: '#/paths/~1foo~1bar'~1foo~1bar
  • /ab~cd~1ab~0cd→このアプローチの
  • /ab/{c}/{d}~1ab~1{c}~1{d}#/paths/~1ab~1{c}~1{d}


1つの制限は、あなたが参照するパス項目のすべての操作でoperationIdを持つことができないということです。これは、パスのコピーが同じoperationIdの値で終了するためですが、operationIdは一意である必要があります。

+0

パスには、 'paths:/ ab/{c}/{d}'のようなテンプレート文字もあります。 '/ a-b'から参照されるとき、中括弧もエスケープする必要がありますか? – bdev03

+0

@ bdev03:いいえ、中括弧は問題ありません。 '/'と '〜'だけをエスケープする必要があります。 – Helen

関連する問題