Misskey v12.119.2 における少し特殊なURLパスを簡単に説明
あくまでコードを書かない鯖缶のために概要を記すものであり
正確な挙動を解説することを目的としていないのに注意されたい
(オープンソースソフトウェアはソースコード読むのが一番確実で手っ取り早い)
インスタンスのドメインはmisskey.exapmle
にしているので適宜変えてみて欲しい
/api
投稿の作成・削除・タイムラインの取得などMisskeyインスタンスの各種APIを使用するための場所
結果はjsonで返ってくる
なおほとんどのケースにおいてPOST
で取得する必要がある、GET
はダメ
ただ最近(Misskey v13付近から)は少しずつGET対応のエンドポイントが増えてきた
挙動は以下のコマンドのように確認可能
curl -X POST -H "Content-Type: application/json" -d '{}' https://misskey.exapmle/api/ping
/url
投稿に貼られたURLの概要を取得する場所
結果はjsonで返ってくる
この機能だけをMisskey本体から独立させたサマリー(概要)プロキシというものもある
https://github.com/mei23/summaly
挙動は以下のコマンドのように確認可能
curl -X GET "https://misskey.example/url?url=https://misskey.example"
/files
オブジェクトストレージ不使用の設定の場合の
Internal Storageのファイルを取得する場所
実態ファイルはMisskeyのディレクトリのfiles
フォルダーのものであるが
Nginx等のリバースプロキシとは異なるため、Misskeyアプリケーション以外へプロキシしてはいけない
まずDBに問い合わせしてドライブに存在しないファイルなら、実態ファイルは存在しようが404
とDummyイメージを返し、
DBに存在する場合で、リクエストが画像の場合は適切な形式・サイズに変換し、動画の場合はサムネイルを生成し、
リモートファイルなら一時保存するなりして、Content-Type
/ Cache-Control
などをセットして配信
なんらかの理由によりファイルシステムから読み出せないなら全て500
で返す
/proxy
主に外部のインスタンスのメディアファイルを取得する場所
この機能だけをMisskeyから独立させたメディアプロキシというものもある
https://github.com/atsu1125/media-proxy
(地味に宣伝)
挙動は以下のようなURL(misskey.exapmle
は適当なインスタンスに置き換え)にブラウザでアクセスすることなどで確認可能(Googleのエラー画像が取得できるはずである)
https://misskey.exapmle/proxy/image.webp?url=https%3A%2F%2Fwww.google.com%2Fimages%2Ferrors%2Frobot.png
/note
/users
/@user
言わずもがな、ノート・ユーザーを取得する場所なのだが…
ActivityPub特有の問題で、かなりややこしい!
たとえばリクエストがAccept: application/activity+json
の場合にはjson形式でノート・ユーザー情報を返すが
リクエストがAccept: text/html
の場合にはhtml形式でノート・ユーザー情報を返す
つまり同じパスなのにリクエストに含まれるAcceptヘッダーの内容の違いで全然違うものが返ってくる
これは連合先からノート・ユーザーが参照された場合にサーバーにはjsonで返さないと読めないからである
そのため不適切なプロキシが構成されている場合、ブラウザでユーザーページを開いたら急にブラウザにjsonが出てきてびっくり!とかある
なお全てGET
で取得する必要がある、POST
はダメ、意外
以下のコマンドで挙動を試せる
サーバーとして@user
を取得する版
curl -H "Accept: application/activity+json" \
-X GET "https://misskey.example/@user"
ブラウザとして@user
を取得する版
curl -H "Accept: text/html" \
-X GET "https://misskey.example/@user"
/api-doc
ブラウザでアクセスするとAPIのドキュメントが見れる場所
/cli
12.73.0以降のバージョンに存在する
一旦インスタンスにログインしてその状態で/cli
に飛ぶとテキストのみのホームタイムラインと、公開範囲がパブリック連合ありで投稿される投稿フォームだけがある、すごく軽量なクライアントが起動する
災害時にデータ容量を食わないのでお得
/bios
12.73.0以降のバージョンに存在する
LocalStorageの内容が編集できる、クライアントの設定などが入ってるので、起動しなくなった時に便利?
多分開発者くらいしか使いこなせない気がする
/nodeinfo/2.0
Misskeyインスタンスの概要がjsonで手に入る
主に他のインスタンスが情報を取得するのに見る
ただとても軽いので人間が確認するのにも便利
/identicon
v12から存在する
https://misskey.exapmle/identicon/:userId
(userIdは@username
ではなくユーザー情報にあるID)
初期で設定されていたユーザーのアイコンを取得できる
/
他にもややこしいエンドポイントはいろいろあるが書き切れないので略