我试图为OpenAPI cookie参数实现符合规范的参数序列化。
我的唯一来源是docs:https://swagger.io/docs/specification/serialization/#cookie
在描述中我看到了这行
一个可选的爆炸性关键字控制数组和对象序列化。
但是,当explode为false时,下表仅定义数组和对象序列化。
这是什么意思?
explode = true的cookie序列化?如果是的话,请您链接文档好吗?explode = true基本上“禁用”数组和对象序列化,而对原始序列化没有影响?explode的情况如何?我希望OpenAPI专家能对此有所了解,谢谢!
发布于 2022-09-13 19:10:31
Cookie序列化是定义的,但不幸的是,没有很好地考虑,因此有些形式的序列化没有多大意义。规范作者之一坦承表示,他们“从未想过任何人会遇到用cookie描述对象的麻烦”。
简而言之,cookie序列化遵循与style: form相同的规则。
使用explode: true时
param的cookie参数具有数组值[3, 4, 5],将作为以下方式发送:
Cookie: param=3¶m=4¶m=5param的cookie参数具有对象值{"foo": "test", "bar": 5},该参数将被发送为:
Cookie: foo=test&bar=5
注意,在这种情况下,参数名称(param)丢失了。
正如您可能注意到的,这两种方法都偏离了标准的Cookie头格式,该格式需要分号分隔的name=value对:
Cookie: [cookie-name]=[cookie-value]; [cookie-name]=[cookie-value];...换句话说,OpenAPI的激增形式的cookie与cookie解析器并不完全兼容。例如,OpenAPI--格式化的爆炸数组cookie Cookie: param=3¶m=4¶m=5将由cookie解析器解析为param = 3¶m=4¶m=5 --这不是API开发人员所期望的。
cookie序列化的问题将在这里讨论:
请随时提供实现者的反馈。
https://stackoverflow.com/questions/73705759
复制相似问题