Blockstream / esplora

Explorer for Bitcoin and Liquid
MIT License
1.02k stars 400 forks source link

`GET /tx/:txid` in regtest returns HTML instead of JSON #496

Open kobby-pentangeli opened 6 months ago

kobby-pentangeli commented 6 months ago

I've defined a Rust struct that matches the specified transaction format. It appropriately derives an implementation of serde::Deserialize.

The URL for my request is defined as

let url = format!("http://127.0.0.1:5000/regtest/api/tx/{txid}");

The headers are set to Accept application/json.

The call returns a 200 response status, however, because the returned body is HTML, the following deserialization effort fails:

let tx: TxInfo = serde_json::from_slice(&response.body)?;

ERROR: "Error(\"expected value\", line: 1, column: 1)"

Here's the full response from the API call:

STATUS:
200

HEADERS:
[HttpHeader { name: "x-powered-by", value: "Express" }, HttpHeader { name: "content-type", value: "text/html; charset=utf-8" }, HttpHeader { name: "content-length", value: "519" }, HttpHeader { name: "etag", value: "--" }, HttpHeader { name: "date", value: "Mon, 06 May 2024 --" }, HttpHeader { name: "connection", value: "close" }]

BODY:
<!DOCTYPE html><head><meta charset="utf-8"><title>Block Explorer</title><meta property="og:title" content="Block explorer"><meta name="description" content="Esplora Block Explorer"><base href="/"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="shortcut icon" type="image/png" href="img/favicon.png"><link rel="stylesheet" href="bootstrap.min.css"><link rel="stylesheet" href="style.css"></head><body lang="en" dir="ltr"><div id="explorer"></div><script src="app.js" async></script></body>