Warum gibt getrawtransaction einen HTTP STATUS CODE 500 für nicht gefundene Transaktionen zurück?

Soweit ich weiß, sollte, wenn Sie der getrawtransactionRPC-API eine erfundene TxID bereitstellen, ein Fehlercode zurückgegeben werden, der darauf hindeutet, dass der Datensatz nicht gefunden wurde (dh 404 HTTP STATUS CODE?). In bitcoin-core 0.12.1 und 0.13.1 wird jedoch 500-Internal Server Error zurückgegeben, als hätte der Knoten ein Problem bei der Verarbeitung der Anfrage.

FYI, ich habe txindex=1in diesem Knoten aktiviert, also liegt es nicht an fehlenden Daten. Sollte dies stromaufwärts behoben werden oder ist es bereits behoben? Oder gibt es einen besseren Grund warum das so ist?

Antworten (1)

Es sollte den HTTP-Status 500 zurückgeben, wenn die Transaktion nicht existiert. 404 ist nur für Methoden-existiert-nicht-Fehler. (Siehe hier .) Beim Lesen des Codes sehe ich nicht, wie der Fehler 404 für eine nicht vorhandene Transaktion zurückgegeben werden könnte. (Ich habe den aktuellen Code und 0.13 überprüft.)

HTTP-Statuscodes sind ziemlich unspezifisch. Sie sollten die JSON-Antwort analysieren, wenn Sie etwas Spezifischeres als „ein Fehler ist aufgetreten“ wünschen. (Aber es wird nicht immer JSON zurückgegeben. IIRC, 401-Autorisierungsfehler sind keine JSON.)

Dies ist das Problem, das ich erwähne, die Fehlerantwort ist nicht json und hat sich sogar zwischen den Versionen geändert: github.com/bitcoin/bitcoin/commit/… daher kann man nicht zwischen einem Fehlerzustand des Servers und dem Server unterscheiden, der dies behauptet der tx existiert nicht. Ich bin nicht der Meinung, dass hier 500 geworfen werden sollten, da 5xx-Fehler "Serverfehler" sind und es sich nicht um einen Serverfehler handelt, sondern nur um eine normale Antwort. Siehe en.wikipedia.org/wiki/… , die Abfrage einer nicht vorhandenen Transaktion ist nichts "Unerwartetes".
404 bedeutet nicht „Methode nicht gefunden“, sondern einfach „nicht gefunden“. Methode nicht gefunden wäre eigentlich besser 400 "Bad Request" zugeordnet
1) Sieht für mich nach JSON aus . Was bekommst du? Wenn Sie etwas möchten, das sich normalerweise zwischen den Versionen nicht ändert, ändert sich der JSON-Fehlercode (die negative Zahl) seltener als die Fehlermeldung. 2) Hey, ich habe die Statuscodes nicht ausgewählt. Sei froh, dass es nicht Fehler 418 ist .