mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2026-04-12 03:38:30 +00:00
Add Cookbook S01-S22 (draft)
This commit is contained in:
55
docs-src/pages/ja/cookbook/s04-static-files.md
Normal file
55
docs-src/pages/ja/cookbook/s04-static-files.md
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: "S04. 静的ファイルサーバーを設定する"
|
||||
order: 23
|
||||
status: "draft"
|
||||
---
|
||||
|
||||
HTML、CSS、画像などの静的ファイルを配信したいときは、`set_mount_point()`を使います。URLパスとローカルディレクトリを結びつけるだけで、そのディレクトリの中身がまるごと配信されます。
|
||||
|
||||
## 基本の使い方
|
||||
|
||||
```cpp
|
||||
httplib::Server svr;
|
||||
svr.set_mount_point("/", "./public");
|
||||
svr.listen("0.0.0.0", 8080);
|
||||
```
|
||||
|
||||
`./public/index.html`が`http://localhost:8080/index.html`で、`./public/css/style.css`が`http://localhost:8080/css/style.css`でアクセスできます。ディレクトリ構造がそのままURLに反映されます。
|
||||
|
||||
## 複数のマウントポイント
|
||||
|
||||
マウントポイントは複数登録できます。
|
||||
|
||||
```cpp
|
||||
svr.set_mount_point("/", "./public");
|
||||
svr.set_mount_point("/assets", "./dist/assets");
|
||||
svr.set_mount_point("/uploads", "./var/uploads");
|
||||
```
|
||||
|
||||
同じパスに複数のマウントを登録することもできます。その場合は登録順に探されて、見つかった最初のものが返ります。
|
||||
|
||||
## APIハンドラと組み合わせる
|
||||
|
||||
静的ファイルとAPIハンドラは共存できます。`Get()`などで登録したハンドラが優先され、マッチしなかったときにマウントポイントが探されます。
|
||||
|
||||
```cpp
|
||||
svr.Get("/api/users", [](const auto &req, auto &res) {
|
||||
res.set_content("[]", "application/json");
|
||||
});
|
||||
|
||||
svr.set_mount_point("/", "./public");
|
||||
```
|
||||
|
||||
これでSPAのように、`/api/*`はハンドラで、それ以外は`./public/`から配信、という構成が作れます。
|
||||
|
||||
## MIMEタイプを追加する
|
||||
|
||||
拡張子からContent-Typeを決めるマッピングは組み込みですが、カスタムの拡張子を追加できます。
|
||||
|
||||
```cpp
|
||||
svr.set_file_extension_and_mimetype_mapping("wasm", "application/wasm");
|
||||
```
|
||||
|
||||
> **Warning:** 静的ファイル配信系のメソッドは**スレッドセーフではありません**。起動後(`listen()`以降)には呼ばないでください。起動前にまとめて設定しましょう。
|
||||
|
||||
> ダウンロード用のレスポンスを返したい場合はS06. ファイルダウンロードレスポンスを返すも参考になります。
|
||||
Reference in New Issue
Block a user