LoginSignup
1
0

MisskeyのURLパスのなあぜなあぜ

Posted at

Misskey v12.119.2 におけるURLパスのなあぜなあぜを簡単に説明

あくまでコードを書かない鯖缶のために概要を記すものであり
正確な挙動を解説することを目的としていないのに注意されたい
(オープンソースソフトウェアはソースコード読むのが一番確実で手っ取り早い)

インスタンスのドメインはmisskey.exapmleにしているので適宜変えてみて欲しい

/api

投稿の作成・削除・タイムラインの取得などMisskeyインスタンスの各種APIを使用するための場所
結果はjsonで返ってくる
なおほとんどのケースにおいてPOSTで取得する必要がある、GETはダメ
例外はMisskeyの各種フォーク(めいすきーとか)
挙動は以下のコマンドのように確認可能

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"

/

他にもややこしいエンドポイントはいろいろあるが書き切れないので略

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0