3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Misskeyの少し特殊なURLパス

Last updated at Posted at 2023-07-06

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)
初期で設定されていたユーザーのアイコンを取得できる

/

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

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?