OpenAPI vocabulary or dialect for code generation
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 5/5
- 預估耗時
- 一週以上
- 新手友好度
- 25/100
- Issue 類型
- 功能
- 描述清晰度
- 基本清楚
- 活躍度
- 停滯
- 技術堆疊
- openapi
- 領域
- api
研究方向
從 issue #2542 開始,檢視其中列出的程式碼產生限制及其理由。確定專案是否需要共用的 OpenAPI 詞彙或方言,然後定義一套已達成共識的規則,以及應如何將其編碼。完成表示範圍和表示方式都已獲得解決,而不是仍停留在提案階段。
由索引模型根據 Issue 內容生成。
描述
Code generation tools often have special requirements or restrictions on the structure of an OpenAPI definition (document?) that improve the generated code. Here are some examples of restrictions from the IBM OpenAPI SDK generator:
-
Parameters must be unique by name only, irrespective of "in".
Rationale: Operation parameters are often rendered as the parameters on a function or method in the target language of the code generator. Since most languages require parameters to have unique names, the code generator would need to incorporate the
inof a parameter into its name to prevent name collisions. This is undesirable, since it exposes the mechanics of the API without adding any value. -
There should be at most one success response with a response body. A 204 and other 2XX is okay, but no other combination of two or more 2XX responses.
Rationale: In statically-typed languages like Java, the return value of a method must have a single static type. This makes it difficult to represent an operation with two different response schemas as a single method returning a single response type.
-
Property names and parameter names must be "case-insensitive" unique
Rationale: Code generators often reformat the names of parameters, properties, and schemas to use idomatic case formatting for the target language: lower_snake_case for Python, lowerCamelCase for Java, etc. But this reformatting could introduce naming conflicts if two parameters, e.g. "foo_bar" and "fooBar" are not "case-insensitive" unique.
-
Arrays must contain items of a single type
Rationale: Many languages require an array to contain only values of a single type.
-
Schema type must specify a single type -- no type arrays
Rationale: Some widely-used statically-typed languages, e.g. Java and Go) have no provision for "union" types, making it impossible to define a
type: [ integer, string ]typed property or parameter. -
Don't use "nullable"
Rationale: it's deprecated, and is just an alternate way of expressing type arrays
-
Don't use JSON schema "not"
Rationale There's no obvious way to represent this in many widely used programming languages.
-
No "if-then-else" in JSON schema
Rationale There's no obvious way to represent this in many widely used programming languages.
-
The API document should be "self contained" (no external "$refs")
Rationale: External refs can easily create multiple namespaces for schemas, parameters, security schemes, etc. These are unnecessary complications for code generators.
-
All "$refs" must be to elements in the "components" section of the document
Rationale: "$ref" targets outside of "components" are unnecessary complications for code generators.
It would be nice to have a common set of rules like this that could be codified into a "Code generation" vocabulary or dialect for OpenAPI.
- 主要語言
- Markdown
- 星號
- 31.2k
- 分支
- 9.2k
- 平均合併
- 2 天 9 小時
- 30 天內合併 PR
- 17
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
OAI/OpenAPI-Specification 的其他 Issue
-
Housekeeping
難度 1/5 1 小時以內 新手友好度 45/100
OAI/OpenAPI-Specification#5566 ·
維護者通常 1 天內回覆
-
Housekeeping
難度 1/5 1 小時以內 新手友好度 35/100
OAI/OpenAPI-Specification#5562 · 4 則留言 ·
維護者通常 1 天內回覆
-
Housekeeping
難度 5/5 一週以上 新手友好度 10/100
OAI/OpenAPI-Specification#5556 · 3 則留言 ·
維護者通常 1 天內回覆
-
v3.2.1 release可能重新可做 @lornajane 於 32 天前認領,目前沒有進行中的 PR。 未關閉
OAI/OpenAPI-Specification#5460 · 11 則留言 · 1 個 reaction · 已指派 1 人 ·
維護者通常 1 天內回覆
-
param serialization
難度 5/5 一週以上 新手友好度 25/100
OAI/OpenAPI-Specification#5366 · 12 則留言 ·
維護者通常 1 天內回覆
查看 OAI/OpenAPI-Specification 的全部 Issue
相似的 Issue
-
bug help wanted
難度 2/5 1-3 小時 新手友好度 82/100
維護者通常 1 天內回覆
-
[BUG] 增量 SSE 解析器未识别单独 CR 换行,导致事件无法及时交付可能已有人在做 @king-wwwhhh 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 76/100
langchain4j/langchain4j#6669 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 75/100
microsoft/playwright#43327 ·
維護者通常 1 天內回覆
-
Rename FunctionalRole BOT_DEV to DEV_STAFF可能已有人在做 關聯的 PR 仍在進行中或已合併。 未關閉enhancement good first issue
難度 2/5 1-3 小時 新手友好度 79/100
pesu-dev/discord_bot#97 ·
-
難度 2/5 1-3 小時 新手友好度 78/100
microsoft/TypeScript#64758 ·
維護者通常 1 天內回覆