Closed2
Hono の HTTPException は Context で行った処理を反映しない
どゆこと?
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)
})
// ...
このような挙動は妥当か?
個人的には妥当だと思う。
理由としては、HTTPException は Response を拡張したクラスと考えられるため、Hono の API に干渉させない方が暗黙的な処理を回避できて、筋が通っているように思う。
参考
このスクラップは2024/03/23にクローズされました