misskey-dev / misskey

🌎 A completely free and open interplanetary microblogging platform 🚀
https://misskey-hub.net/
GNU Affero General Public License v3.0
9.95k stars 1.35k forks source link

misskey-js: fallback to `Content-Type: application/json` for unknown endpoints #14502

Closed zyoshoka closed 1 month ago

zyoshoka commented 1 month ago

Summary

2024.7.0 以降では、misskey-js の APIClient で request する際、エンドポイントに対応する Content-Type を渡す仕様になっています: https://github.com/misskey-dev/misskey/blob/74c93fcebe1b6fde489470e19808389d13f07a05/packages/misskey-js/src/api.ts#L103

しかし、この仕様では misskey-js が知らない /api/signup といったエンドポイントを叩こうとした際に(対応する Content-Type がないため)415 エラーが返ってしまい少々不便です。こういった際には 2024.5.0 以前と同じように Content-Type: application/json になるようにしたいです。実際ほとんどのエンドポイントについて application/json であるため一定の合理性があると思います: https://github.com/misskey-dev/misskey/blob/74c93fcebe1b6fde489470e19808389d13f07a05/packages/misskey-js/src/autogen/endpoint.ts#L958-L1338

Purpose

misskey-js が知らないエンドポイントを叩く際に不便なため。この操作が意図されていないのであれば close で問題ありません。

Do you want to implement this feature yourself?

kakkokari-gtyih commented 1 month ago

generator自体もapplication/jsonではないエンドポイントのみを記録するほうがいい気がする

zyoshoka commented 1 month ago

この issue の本題自体はインスタンス作成時に fetch を適当に指定すれば解決されることに気づいたので一旦 close にしようと思います。https://github.com/misskey-dev/misskey/issues/14502#issuecomment-2333189865 については別途対応お願いしたいです。

new Misskey.api.APIClient({
    origin,
    fetch: (input, init) => fetch(input, {
        ...init,
        headers: {
            ...init?.headers,
            'Content-Type': 'application/json',
        },
    }),
})