はじめに
どうも、 @Keichan_15 です。
2024年に入ってから記事執筆の頻度が急激に落ちてしまい、焦って齷齪している間にもう4月…。時の流れは残酷ですね。
最近の私は以前に紹介したおうちサーバーが本格稼働し始めたことで、cron
でPalworldのサーバーを定時で再起動するスクリプトを組んだり、docker
を入れてクラウド運用(fly.io
)していたChatGPT-Bot
をオンプレで稼働させるように変更したり、といったことをちまちまやっておりました。
コスト面においても、気にする点としては電気代だけなので、fly.io
やAWS
といったクラウドサーバーの従量課金を気にする必要もなくなり、結構ストレスフリーな運用ができています。
ところでそんなこんなしている矢先、Palworldのv0.2.0.6
アップデートで正式にAPIが追加されたという情報が!
今回はこの追加されたAPIを実際に叩いて動作確認をしてみます!
どうも最近RCON
の調子が悪いんですよね。3回に1回は再起動に失敗するみたいなことがあったり…。
なので、再起動系もこっちのAPIを叩いてサーバーシャットダウン -> 起動シェルスクリプト実行みたいなのをcron
で回せたらいいなあと。
早速やっていきましょう!
サーバー側の設定でREST APIを有効化する
This is a simple REST API for Palworld.
Need to configurationRESTAPIEnabled=True
to use this api.
This api is now experimental.
REST API
を有効化するためには、RESTAPIEnabled=True
に設定してね。とあります。
もう少し細かく説明すると、ワールドの設定ファイルである PalWorldSettings.ini に存在するRESTAPIEnabled
という項目をTrue
に設定すれば、REST API
が使用できるようになります。
Linux Serverだと /home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer
の直下に配置されています。
これで開いているサーバーがREST APIに対応しました。なんて便利なの…。
curlで叩いてみる
では早速curl
で叩いてみましょう!
僕はBASIC認証なるものの仕組みがあまり分かっておらず、Authroization
で弾かれまくる問題に悩まされていたのですが、色々調べていたところ、curl
で叩くには admin:[admin_password]
で認証ができるとのこと。
ということで、サーバーを開いているUbuntu Server内からcurl
コマンドを叩いてみます。
今回は、サーバーに参加しているプレイヤー情報を取得するGet player list.
を実行してみます。
$ curl admin:hoge_password http://localhost:8212/v1/api/players
hoge_password
の部分はPalWorldSettings.ini
で設定している AdminPassword
の値を設定してください!
実際に叩いてみた結果はこちら。
このようにサーバーに参加しているプレイヤーデータを取得することができました。
ちなみに余談ですが、ip
の部分はモロ参加しているプレイヤーのグローバルIPアドレスが書いているので少し怖いなあ…と。笑
レスポンスに含めているのはIPアドレス単位でBanを実施する時とかの為に含めているのかな?
他にも様々な種類のAPIがあるので、上手く組み合わせればdiscord側から参加者やサーバーシャットダウン等の仕組みを実現できるかもしれませんね!
おわりに
いかがでしたでしょうか。
APIを叩く際の参考資料や情報がほぼ見当たらなかった為、今回こちらの記事執筆に至りました。
-
curl
でとりあえずAPI叩いてレスポンス見てみたい! -
REST API
の設定方法を知りたい!
上記でお困りの方の助けとなれば幸いです!本当に便利ですよ、このAPI!
ご覧いただきありがとうございました!