Give every JSON answer @meta, errors included (closes #201)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
A panic in a JSON route's handler answered 500 with an empty body, because the router's recoverer sits outside the middleware that adds `@meta`. `JSONValidationMiddleware` now wraps the handler in the same recoverer, and answers the panic with the JSON error body. A method that `/status.json` or the health check does not take got chi's empty 405. Each such method now goes to the JSON 405 that the routes under `/api/v1` and `/ip` give. The home page's IP lookup card showed only the answer's `data`. It now shows the whole answer, `@meta` included. A table test checks `@meta` on every JSON route, in its successes and its errors. Model: opus-5-5
This commit is contained in:
@@ -35,6 +35,13 @@ tested.
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-27: every JSON answer carries `@meta`. A panic on a JSON route answers
|
||||
500 with the JSON error body. A method that `/status.json` or the health check
|
||||
does not take answers 405 with it, as under `/api/v1`. Both used to answer
|
||||
with an empty body. The home page's IP lookup shows the whole JSON answer,
|
||||
`@meta` included. It used to show only the answer's `data`, or only the
|
||||
message of an error answer. A test checks `@meta` on every JSON route, in its
|
||||
successes and its errors (closes #201)
|
||||
- 2026-10-27: every value in a JSON answer that has a unit is a number, with the
|
||||
unit at the end of its field name. `@meta.execution_time` is now
|
||||
`execution_time_ms`. The stats' `uptime`, `connection_duration` and
|
||||
|
||||
Reference in New Issue
Block a user