-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
swagger-cli validateがvalidとなるapi.jsonを作れるようにする #12403
swagger-cli validateがvalidとなるapi.jsonを作れるようにする #12403
Conversation
}], | ||
type: 'object', | ||
optional: false, nullable: true, | ||
ref: 'FederationInstance', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
type: 'null'
は定義されない書式らしいです…
代わりに、res直下のoptionalまたはnullableをtrueにすると、レスポンスのHTTPステータス一覧に204が生えるようにしています。
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #12403 +/- ##
===========================================
- Coverage 78.79% 78.77% -0.02%
===========================================
Files 948 947 -1
Lines 102865 102778 -87
Branches 8277 8284 +7
===========================================
- Hits 81053 80966 -87
Misses 21812 21812 ☔ View full report in Codecov by Sentry. |
in: 'body', | ||
name: 'i', | ||
}, | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
inには"header"、"query"、"cookie"のみ設定できるとのことでした…
先人がどう解決したのか調べましたが、bodyにパラメータとして記述することを選んでいたので、それに倣いました
if (endpoint.meta.requireCredential) { | ||
// https://swagger.io/docs/specification/authentication/api-keys/ | ||
// ↑曰く、「can be "header", "query" or "cookie"」とのこと。 | ||
// Misskeyはbodyに埋め込む形にしているので、各エンドポイントのパラメータに直接APIキー用のフィールドを追加する必要がある |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misskeyはbodyに埋め込む形にしているので
表向きはそうですが実際はヘッダーに取ってもよいので
"securitySchemas": {
"ApiKeyAuth": { "type": "apiKey", "in": "header", "name": "Authorization" }
}
にしてしまった方が取り回しの点でも優れて良さそう
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bodyにi
をつける形はやめ、securitySchemesを復活させました。
あと、ApiCallServiceの実装的に、typeをapiKeyとするよりベアラトークンとして記載したほうがよさそうに思えたので、そのようにしています。
https://swagger.io/docs/specification/authentication/api-keys/
https://swagger.io/docs/specification/authentication/bearer-authentication/
🙏🙏🙏 |
What
#12402 の対応です。
この対応により、
swagger-cli validate
がvalidとなるapi.jsonを作れるようになります。◎認証が必要なエンドポイントはbodyのなかに
i
を埋め込む必要があることが明示される必須パラメータとして、各エンドポイントのパラメータ一覧に登場します。
◎バックエンドを起動せずともapi.jsonが作れるようになる(ただしビルドは必要)
バックエンドのパッケージまで移動し、
pnpm generate-api-json
でbuilt配下に作成されます。Why
#12402 に記載のとおりです
Additional info (optional)
◎validになることを確認しました。
◎openapi-typescriptというパッケージを使用し、developとこのブランチでそれぞれ作成したapi.jsonからTypeScriptの型を生成
→前述の
i
(と軽微な修正)以外の差分が無いことを確認しました。実際に生成されたもの:api.json
Checklist