---
title: "Swagger Petstore API: ベース URL、例、Docker"
description: "Swagger Petstore サンプル API（v2 と OpenAPI 3）の本当のアドレス、動作するリクエスト例、テスト用キー special-key、ローカルでの実行方法。"
url: https://example-petstore.com/ja/guides/swagger-petstore
language: ja
---

# Swagger Petstore をお探しですか？

Swagger Petstore は、Swagger UI や OpenAPI の数多くのチュートリアルで使われているサンプル API です。example-petstore.com にはありません。このガイドでは、本当のアドレスと動作するリクエスト例、そして公開版が使いにくいときに自分のコピーを動かす方法を説明します。

## 本当のアドレス

SmartBear の API ツールである Swagger は、Petstore の公開版を 2 つ運営しています。どちらもペット、注文、ユーザーという同じリソースを備えています。

| バージョン | リクエストのベース URL | API 定義と Swagger UI |
| --- | --- | --- |
| Petstore 3 (OpenAPI 3.0) | `https://petstore3.swagger.io/api/v3` | [openapi.json](https://petstore3.swagger.io/api/v3/openapi.json) · [petstore3.swagger.io](https://petstore3.swagger.io/) |
| Petstore (Swagger 2.0) | `https://petstore.swagger.io/v2` | [swagger.json](https://petstore.swagger.io/v2/swagger.json) · [petstore.swagger.io](https://petstore.swagger.io/) |

新しいプロジェクトには Petstore 3 がおすすめです。現在のツールやコード ジェネレーターが前提とする OpenAPI 3.0 仕様に従っています。Swagger 2.0 版も引き続き応答し、古いチュートリアルに登場します。

## 試してみる

`curl` によるリクエスト例です。ベース URL を上のいずれかのアドレスに設定すれば、Postman、Insomnia、生成したクライアントでも同じパスが使えます。

```
# ステータスが "available" のペット
curl -H "Accept: application/json" "https://petstore3.swagger.io/api/v3/pet/findByStatus?status=available"

# ペットを追加（name と photoUrls は必須）
curl -X POST "https://petstore3.swagger.io/api/v3/pet" \
  -H "Content-Type: application/json" \
  -d '{"id": 12345, "name": "doggie", "photoUrls": [], "status": "available"}'

# ステータスごとの在庫（テスト用キー付き）
curl -H "api_key: special-key" "https://petstore.swagger.io/v2/store/inventory"
```

PHP からは、Guzzle を使って同じリクエストを送れます。

```
// PHP, Guzzle:ステータスが "available" のペット
$client = new GuzzleHttp\Client(['base_uri' => 'https://petstore3.swagger.io/api/v3/']);
$response = $client->get('pet/findByStatus', ['query' => ['status' => 'available']]);
$pets = json_decode((string) $response->getBody(), true);
```

主なパス: `/pet`、`/pet/findByStatus`、`/pet/findByTags`、`/pet/{petId}`、`/store/inventory`、`/store/order`、`/user`、`/user/login`、`/user/logout`。

## キーとサインイン

Petstore は 2 つのセキュリティ方式を示しています。`api_key` ヘッダーによる API キーと、OAuth 2.0 フロー（`petstore_auth`）です。Swagger 2.0 の定義では、認可フィルターのテスト用キーとして `special-key` が示されています。これらはデモ用の認証情報です。本物のキー、トークン、パスワードを Petstore で試さないでください。

## 共有のテストデータ

全員が同じ公開サーバーを使っています。作成したデータは他の人が読み取り、変更、削除でき、`findByStatus` は他の人が追加したものを返します。奇妙な名前や壊れたレコードも含まれます。作成したばかりのペットがすでに消えていることもあります。

- 本物の個人データ、顧客データ、認証情報は絶対に送らないでください。
- 公開サーバーを前提に自動テストを組まないでください。結果は予測できず、応答が遅かったりエラー（`500`）を返したりすることがあります。
- 安定した結果が必要なら、自分のコピーを動かしましょう。

## ローカルで実行する

Petstore はオープンソース（Apache 2.0）です。Docker ならコマンド 1 つで動きます。

```
docker run -d --name petstore -p 8080:8080 swaggerapi/petstore3

# Swagger UI:     http://localhost:8080
# API 定義:       http://localhost:8080/api/v3/openapi.json
# ベース URL:     http://localhost:8080/api/v3
```

Docker を使わない場合は、`swagger-api/swagger-petstore` をクローンして `mvn package jetty:run` で起動します（こちらもポート 8080）。自分のコピーは起動するたびに同じ組み込みのサンプル データ（ペット 10 匹と、いくつかの注文とユーザー）で始まるため、テストは毎回同じように動作します。

## 動かない v1 のアドレス

OpenAPI 仕様のリポジトリにあるサンプル ファイル `petstore.yaml` は、サーバーとして `http://petstore.swagger.io/v1`、パスとして `/pets` を記載しています。このファイルは仕様を説明するためのもので、背後にサービスはありません。このファイルから生成したクライアントは `404 Not Found` を受け取ります。`https://petstore3.swagger.io/api/v3` または自分のコピーを指定してください。パスが異なる（`/pets` ではなく `/pet`）ため、Petstore 3 の `openapi.json` からクライアントを生成し直してください。

## ここにたどり着いた場合

example-petstore.com は別の名前で、Google のアナリティクスと検索に関するドキュメントに出てくるサンプル ドメインです。API はありません。このドメインの `/v2/pet` のようなパスへのリクエストには、JSON の説明付きで `410 Gone` が返ります。

- コード、`.env` ファイル、Postman の環境、OpenAPI 定義の `servers` フィールドにあるベース URL を確認し、example-petstore.com を上のいずれかのアドレスに置き換えてください。
- それらのリクエストに本物のキーやトークンが含まれていましたか？ 漏えいしたものとして扱ってください: [漏えいした認証情報: 今すぐ行うべきこと](https://example-petstore.com/ja/guides/leaked-credentials)
- ベース URL を設定で管理する方法: [API クライアントと SDK の設定](https://example-petstore.com/ja/guides/api-base-url)

## 関連ガイド

### [API クライアントと SDK の設定](https://example-petstore.com/ja/guides/api-base-url)

ベース URL をコードから切り離して実際のサービスを指すようにし、サンプルのアドレスが本番環境に届かないようチェックを追加します。

### [サンプルのアドレスではなく Mock API でテストする](https://example-petstore.com/ja/guides/mock-api)

他人のものかもしれないアドレスではなく、Prism、WireMock、MSW、json-server を相手に開発・テストします。

### [安全に使えるサンプル値](https://example-petstore.com/ja/guides/example-values)

予約済みのドメイン、IP 範囲、AS 番号、MAC アドレス、電話番号、テスト用カード。コピーされても無害な例のために。

## 出典

- [swagger-api/swagger-petstore](https://github.com/swagger-api/swagger-petstore) GitHub
- [Swagger Petstore (OpenAPI 3.0)](https://petstore3.swagger.io/) Swagger
- [Swagger Petstore (Swagger 2.0)](https://petstore.swagger.io/) Swagger
- [swaggerapi/petstore3](https://hub.docker.com/r/swaggerapi/petstore3) Docker Hub
- [OpenAPI Specification example petstore.yaml](https://github.com/OAI/OpenAPI-Specification/blob/3.0.3/examples/v3.0/petstore.yaml) OpenAPI Initiative
