¿Por qué getrawtransaction devuelve un CÓDIGO DE ESTADO HTTP 500 para transacciones no encontradas?

Según tengo entendido, si proporciona un TxID inventado a la getrawtransactionAPI de RPC, debería devolver un código de error que sugiere que no se encuentra el registro (es decir, ¿CÓDIGO DE ESTADO HTTP 404?). Sin embargo, en bitcoin-core 0.12.1 y 0.13.1 devuelve 500-Internal Server Error, como si el nodo tuviera algún problema al procesar la solicitud.

Para su información, lo he txindex=1habilitado en este nodo, por lo que no se debe a la falta de datos. ¿Debería arreglarse esto aguas arriba o ya está arreglado? ¿O hay una mejor razón de por qué este es el caso?

Respuestas (1)

Debería devolver el estado HTTP 500 si la transacción no existe. 404 es solo para errores de método que no existe. (Ver aquí .) Al leer el código, no veo cómo podría devolverse el error 404 para una transacción que no existe. (Revisé el código actual y 0.13.)

Los códigos de estado HTTP son bastante inespecíficos. Debe analizar la respuesta JSON si desea algo más específico que "ocurrió un error". (Pero no siempre devuelve JSON. IIRC, 401 Los errores de autorización no son JSON).

Este es el problema que menciono, la respuesta de error no es json e incluso ha cambiado entre versiones: github.com/bitcoin/bitcoin/commit/… por lo tanto, no se puede distinguir entre un estado de error del servidor y el servidor que afirma que el tx no existe. No estoy de acuerdo con que se deba lanzar 500 aquí, porque los errores 5xx son "errores del servidor" y no es un error del servidor, es solo una respuesta normal. Consulte en.wikipedia.org/wiki/… , consultar sobre una transacción inexistente no es algo "inesperado".
404 no significa "método no encontrado" sino simplemente "no encontrado". El método no encontrado en realidad se asignaría mejor a 400 "solicitud incorrecta"
1) Me parece JSON . ¿Qué obtienes? Si desea algo que normalmente no cambia entre versiones, el código de error JSON (el número negativo) cambia con menos frecuencia que el mensaje de error. 2) Oye, no elegí los códigos de estado. Solo alégrate de que no sea el error 418 .