第5章 さまざまな言語での API リクエスト


curl、Ruby、または Python から Red Hat Satellite に API リクエストを送信する次の例を確認できます。

5.1. curl での API の呼び出し

Satellite API で curl を使用して、さまざまなタスクを実行できます。

Red Hat Satellite は HTTPS と、デフォルトではホストの識別用に証明書を使用する必要があります。「SSL 認証の概要」 の記載どおりに Satellite Server の証明書を追加していない場合には、--insecure オプションを使用して証明書チェックを省略することができます。

ユーザー認証の場合は、--user オプションを指定して、--user username:password 形式で、Satellite ユーザー認証情報を指定します。または、パスワードを含めない場合には、コマンドでパスワードを入力するようにプロンプトが表示されます。セキュリティーリスクを軽減するには、コマンドの一部としてパスワードを入力すると、シェルの履歴の一部として残ってしまうので、入力しないようにしてください。このセクションの例では、簡素化の目的でのみ、パスワードを含めています。

--silent オプションを使用する場合は、curl で進捗メーターやエラーメッセージは表示されない点に注意してください。

この章の例では、Python json.tool モジュールを使用して出力をフォーマットしています。

5.1.1. API 要求への JSON データの指定

データを API 要求で Satellite Server に渡すことができます。このデータは、JSON 形式でなければなりません。--data オプションで、JSON データを指定する場合には、--header オプションを使用して、以下の HTTP ヘッダーを設定する必要があります。

--header "Accept:application/json" \
--header "Content-Type:application/json"

以下のオプションのいずれかを使用して、--data オプションでデータを追加します。

JSON 形式の文字列

引用符で囲まれた JSON 形式のデータを中括弧 {} で囲みます。JSON タイプのパラメーターの値を渡す場合には、バックスラッシュ \ を使用して、引用符 " をエスケープする必要があります。たとえば、中括弧内では "Example JSON Variable"\"Example JSON Variable\" のような形式にする必要があります。

--data {"id":44, "smart_class_parameter":{"override":"true", "parameter_type":"json", "default_value":"{\"GRUB_CMDLINE_LINUX\": {\"audit\":\"1\",\"crashkernel\":\"true\"}}"}}

JSON 形式のファイル

引用符なしの JSON 形式のデータは、@ マークとファイル名を指定します。以下に例を示します。

--data @file.json

JSON 形式データの外部ファイルを使用すると、以下のような利点があります。

  • 任意のテキストエディターを使用できる
  • 構文チェッカーを使用してミスを特定し、回避できる
  • ツールを使用して JSON データの妥当性を確認して、再フォーマットができる

json_verify ツールを使用して、JSON ファイルの妥当性を確認します。

$ json_verify < file.json

5.1.2. リソースリストの取得

このセクションでは、Satellite 6 API で curl を使用して Satellite から情報を要求する方法について説明します。これらの例には、要求と応答の両方が含まれます。デプロイメントごとに、異なる結果が得られることが想定されます。

ユーザーのリスト表示

以下の例は、Satellite リソース (今回の例では、Satellite ユーザー) のリストを返す基本的な要求です。このような要求では、メタデータでラップされたデータリストを返しますが、他の要求タイプでは実際のオブジェクトが返されます。

要求例:

$ curl --request GET --user My_User_Name:My_Password \
https://satellite.example.com/api/users | python3 -m json.tool

応答例:

{
    "page": 1,
    "per_page": 20,
    "results": [
        {
            "admin": false,
            "auth_source_id": 1,
            "auth_source_name": "Internal",
            "created_at": "2018-09-21 08:59:22 UTC",
            "default_location": null,
            "default_organization": null,
            "description": "",
            "effective_admin": false,
            "firstname": "",
            "id": 5,
            "last_login_on": "2018-09-21 09:03:25 UTC",
            "lastname": "",
            "locale": null,
            "locations": [],
            "login": "test",
            "mail": "example@domain.com",
            "organizations": [
                {
                    "id": 1,
                    "name": "Default Organization"
                }
            ],
            "ssh_keys": [],
            "timezone": null,
            "updated_at": "2018-09-21 09:04:45 UTC"
        },
        {
            "admin": true,
            "auth_source_id": 1,
            "auth_source_name": "Internal",
            "created_at": "2018-09-20 07:09:41 UTC",
            "default_location": null,
            "default_organization": {
                "description": null,
                "id": 1,
                "name": "Default Organization",
                "title": "Default Organization"
            },
            "description": "",
            "effective_admin": true,
            "firstname": "Admin",
            "id": 4,
            "last_login_on": "2018-12-07 07:31:09 UTC",
            "lastname": "User",
            "locale": null,
            "locations": [
                {
                    "id": 2,
                    "name": "Default Location"
                }
            ],
            "login": "admin",
            "mail": "root@example.com",
            "organizations": [
                {
                    "id": 1,
                    "name": "Default Organization"
                }
            ],
            "ssh_keys": [],
            "timezone": null,
            "updated_at": "2018-11-14 08:19:46 UTC"
        }
    ],
    "search": null,
    "sort": {
        "by": null,
        "order": null
    },
    "subtotal": 2,
    "total": 2
}

5.1.3. リソースの作成および変更

curl を使用して、Satellite Server のリソースを操作できます。Satellite への API 呼び出しには、json 形式のデータが必要です。詳細は、「API 要求への JSON データの指定」 を参照してください。

ユーザーの作成

この例では、必要な情報を --data オプションに指定してユーザーを作成します。

要求例:

$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request POST \
--user My_User_Name:My_Password \
--data "{\"firstname\":\"Test Name\",\"mail\":\"test@example.com\",\"login\":\"test_user\",\"password\":\"password123\",\"auth_source_id\":1}" \
https://satellite.example.com/api/users | python3 -m json.tool

ユーザーの変更

以下の例では、ユーザーの作成 で作成した test_user のログインと名を変更します。

要求例:

$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user My_User_Name:My_Password \
--data "{\"firstname\":\"New Test Name\",\"mail\":\"test@example.com\",\"login\":\"new_test_user\",\"password\":\"password123\",\"auth_source_id\":1}" \
https://satellite.example.com/api/users/8 | python3 -m json.tool
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.