Closed2

Hono の HTTPException は Context で行った処理を反映しない

uttkuttk

どゆこと?

HTTPException は公式から提供されているヘルパークラスだが、Context を用いた処理 ( 例えば deleteCookie() など ) と一緒に扱うことができないので注意が必要 👇

Cookieが反映されない例
import { HTTPException } from 'hono/http-exception'
// ...
app.post('/throw-unauthorized', (context, next) => {
  deleteCookie(context, "hoge");
  // 👆 で Cookie を削除しているが HTTPException では反映されない
  throw new HTTPException(401, { message: '401 Unauthorized' })
})
// ...

反映するには context.body() などを使う 👇

Cookieが反映される例
import { HTTPException } from 'hono/http-exception'
// ...
app.post('/throw-unauthorized', (context, next) => {
  deleteCookie(context, "hoge"); 
  return context.body( '401 Unauthorized' , 401)
})
// ...
uttkuttk

このような挙動は妥当か?

個人的には妥当だと思う。

理由としては、HTTPException は Response を拡張したクラスと考えられるため、Hono の API に干渉させない方が暗黙的な処理を回避できて、筋が通っているように思う。

参考

https://github.com/honojs/hono/issues/1526

このスクラップは2024/03/23にクローズされました