api: HEAD requests fail for derived JSON endpoints

オープン 初心者向け
#12,413 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript
領域
api, backend

調査の方向性

packages/function/src/worker.ts から始めてください。catalogResponse 関数(209〜224行目付近)とスキーマのルート(67〜73行目付近)が対象です。どちらもアセットまたは API レスポンスに対して .json() を呼び出しており、HEAD リクエストではその内容が空になります。curl -I 'https://models.dev/model-schema.json' と、複数タイプを指定する api.json?type=... のクエリで再現してください。HEAD が本文を解析せずに GET と同じステータスとヘッダーを返し、既存の worker テスト 15 件が引き続き通り、スキーマルートと複数タイプのルートに対する新しい HEAD のリグレッションテストが追加されていれば完了です。

索引モデルが issue の本文から書いたものです。

説明

HEAD returns 500 for /model-schema.json and multi-type catalog requests, while the corresponding GET requests return 200. Plain /api.json works with both methods.

Reproduced locally and on the public site; still present on current dev, 8b715df235126f6efcf4ab9b2e41c45f5ec74184.

Reproduction

curl -I 'https://models.dev/api.json'                     # 200, control
curl -I 'https://models.dev/api.json?type=chat,decision'  # 500
curl -I 'https://models.dev/model-schema.json'           # 500
curl -sS -o /dev/null -w '%{http_code}\n' \
  'https://models.dev/model-schema.json'                 # GET: 200

Cause

In catalogResponse, the asset request inherits HEAD. The asset correctly has no response body, but the multi-type path calls assetResponse.json(). The schema route similarly calls apiResponse.json(). Both throw SyntaxError: Unexpected end of JSON input.

Local regression tests reproduce this on all four multi-type catalog routes and on schema requests. GET/static-HEAD controls, invalid-type 400 and conditional HEAD/304 pass. A separate real loopback HTTP asset server reproduces the schema failure too. The failures repeated across ten runs; the existing 15 worker tests pass. Environment: macOS 15.6.1/arm64, Bun 1.4.4.

Expected: return the appropriate metadata without parsing a bodyless asset response or sending HEAD response content. See RFC 9110, 9.3.2.

I'd like to work on a fix limited to HEAD handling and regression tests, keeping GET output, type validation, ETags/304s and CORS unchanged. Would that scope fit?

主要言語
TypeScript
スター
7.5k
フォーク
2k
平均マージ
39分
マージ済み PR(30日)
904

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

anomalyco/models.dev のほかの issue

anomalyco/models.dev の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。