Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
sadnessOjisan committed May 8, 2024
1 parent 01dff09 commit 52a3dbe
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
13 changes: 7 additions & 6 deletions src/contents/20240508-docker-swagger-ui/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
path: /docker-swaggger-ui
created: "2024-05-08"
title: Dockerとyamlで言語非依存にSwagger UIを構築する
title: Dockerとyamlで言語非依存にSwagger UIを構築し、Basic認証にも対応する
visual: "./visual.png"
tags: ["docker", "swagger"]
userId: sadnessOjisan
Expand All @@ -11,20 +11,21 @@ isProtect: false

## 言語非依存にSwagger UIを構築したいモチベーション

スキーマファーストにAPI Specを作るということは、それはバックエンドチーム、クライアントサイドチームの共有財産だと思います
お互いが異なる言語をつかているのならば、どちらかの言語で書いてしまうとどちらかに学習コストが発生するので、SpecはJSONやyamlなどで書きたいです。
スキーマファーストにAPI Specを作るなら、API Specはバックエンドチーム、クライアントサイドチームの共有財産であるべきだと私は思います
そしてお互いのチームが異なる言語を使っているのならば、どちらかの言語で書いてしまうとどちらかに学習コストが発生するので、SpecはJSONやyamlなどで書きたいです。
ただJSONだとコメントが書けなかったり、JSON SChema 手書きはしんどかったりで避けたいです。
そこで yaml だけで swagger-ui を使って API Spec を作りたいです。

## swagger-ui が v3 から yaml を読める

swagger-ui は v3 から yaml に対応しました。
元々は環境変数SWAGGER_JSONにspecのjsonへのパスを渡すことで構築できていました
元々は環境変数 SWAGGER_JSON にspecのjsonへのパスを渡すことで構築できていました

see: https://swagger.io/docs/open-source-tools/swagger-ui/usage/installation/#docker

これが API_URL という環境変数にyamlへのパスを渡すと同じように構築できるようになりました。
(なんだけど、公式のドキュメント見てもそんなことは書かれてないんだよな)
(あと[一説](https://qiita.com/A-Kira/items/3d17396c7cc98873e29d)によると SWAGGER_JSON に yaml を渡せるらしい)

```
FROM swaggerapi/swagger-ui:v5.17.3
Expand All @@ -42,7 +43,7 @@ swagger ui は組み込まれているNginxで配信されているので、ngin
## Basic 認証する

さて、API仕様書を別チームで共有するからには、そのSpecはインターネット越しに常に最新のものが見られるようにしたいです。
ただインターネットに公開されているのは危険なのでBasicをかけます
ただインターネットに公開されているのは危険なのでBasic認証をかけます
なんらかの言語を使っているならその言語の機能でBasic認証は簡単に実装できますが、今我々はそのようなものはないです。
そのためNginxの上に乗っかって、Basic認証をします。

Expand Down Expand Up @@ -76,7 +77,7 @@ sed -i 's|location / {|location / {\n\tauth_basic \"Restricted Content\";\n\taut
sleep 5 && nginx -s reload &
```

htpasswdは Apache のためのようにも思えるが、Nginx も auth_basic_user_file で htpasswd を指定するとBasic認証ができます。
htpasswdは Apache のためのようにも思えますが、Nginx も auth_basic_user_file で htpasswd を指定するとBasic認証ができます。
そのため htpasswd を作り、それをコンテナ立ち上げ時にdefault設定されているNginxの設定に対して htpasswd を使うように書き換えます。
そうすることで Basic 認証が実現できます。

Expand Down
2 changes: 1 addition & 1 deletion src/contents/20240508-miss-gradle-version/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
path: /miss-gradle-version
created: "2024-05-08"
title: InteliJ で作った Kotlin new Project が Gradle のバージョン設定が古くてビルドできなかった
title: InteliJ で作った new Kotlin Project がGradle のバージョン設定が古くてビルドできなかった
visual: "./visual.png"
tags: ["kotlin", "intelij", "gradle"]
userId: sadnessOjisan
Expand Down

0 comments on commit 52a3dbe

Please sign in to comment.