egutierrez
02226d61f6
feat: funciones impuras HTTP — response, parse, logger, router, serve
...
Seis funciones de servidor HTTP con tests usando httptest:
- HTTPJSONResponse: escribe JSON con Content-Type y status code
- HTTPErrorResponse: escribe HTTPError como JSON estructurado
- HTTPParseBody: decode JSON con limite de bytes y campos estrictos
- HTTPLoggerMiddleware: loguea method/path/status/duration a io.Writer
- HTTPRouter: crea ServeMux con rutas Go 1.22+ (METHOD /path)
- HTTPServe: ListenAndServe con graceful shutdown por contexto
23 tests pasando, solo stdlib net/http.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 01:57:47 +02:00
..
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:49 +02:00
2026-04-02 22:03:49 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 23:23:00 +01:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:05:13 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 17:13:45 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 17:13:45 +01:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:55 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:49 +02:00
2026-04-02 22:03:49 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:34 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:34 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:34 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-03-28 23:23:00 +01:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 23:23:00 +01:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-02 15:32:40 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00