Httpdiff is a really good tool and way more powerful than mine.
I've used it multiple times and wanted to try making something that focused more on the request body (which in Httpdiff are saved to temporary files) and that was also a bit more visual than a CLI.
1) What's the diff logic? At first glance, it looks like JSON is reformatted (maybe canonicalized in some way) and then a line-by-line diff is applied. Is there more to it? Since the tool seems JSON-aware, I was surprised to see an added trailing comma up as a difference.
2) Do you have plans to expand the kind of HTTP requests users can make? It would be nice to use different verbs, headers, and request bodies. Runscope has a similar tool[0] built in that I believe (haven't tried it yet) allows a bit more flexibility, but it would be nice to have a standalone tool available.
1) the diff is really simple, line by line and text based. I'm
just using this really awesome library to do it: https://github.com/kpdecker/jsdiff The JSON is just being pretty printed to be able to do a text diff in a meaningful way.
2) Yes, I do, and thanks for the suggestions! But I just wanted to go with the minimal version first and see if people found it useful.
I didn't know about Runscope's diffing feature. Btw, I'm using a HTTPBin for the sample requests, which is a Runscope project as far as I know :)
It renders a set of pages in a headless browser, compares them visually and alerts you if something changed.
Just a few lines of bash as you can see. But it turned out to be pretty useful. UrlDiff is a regular part of our regression testing at Product Chart now.
Just the other day I needed something similar and was disappointed that I could find it.
I wanted to discuss something with a remote colleague and to illustrate it I wanted a visual diff of two files. I was hoping there was a nice little web app offering this but I was forced to screenshare (I could have terminal-shared but it was more hassle).
I was hoping for something like Etherpad but with a live visual diff.
Not working on Safari Version 8.0.6 (10600.6.3) Mac OS X 10.10.3
From JS Console:
[Error] TypeError: undefined is not a function (evaluating 'Array.from(e)')
_toConsumableArray2 (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1)
s (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1)
f (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1)
onload (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1)
It's pretty easy to write a recursive diff function that compares JSON strings, in order to avoid the JSON -> diff by line hack that you're doing. But it's a clever hack that easily translates to the command-line.
If you're looking for something similar, but with more features that natively understand HTTP, check out www.runscope.com. Full disclosure, I'm an employee and proud of what we've built!
Right. I was aiming to do it client-side only but I found out that web browsers restrict the headers you have access to through cross-origin XHR requests [1][2].
So it was a trade-off and I preferred showing all the headers at the expense of having to proxy the calls through a server.
jalfresi|10 years ago
diff <(curl -sS -L https://httpbin.org/get) <(curl -sS -L https://httpbin.org/get?show_env=1)
jalfresi|10 years ago
diff -u <(curl -sS -D - -L https://httpbin.org/get) <(curl -sS -D - -L https://httpbin.org/get?show_env=1) | colordiff
tacone|10 years ago
therein|10 years ago
(1) Terminal based
(2) Supported other types of HTTP requests
(3) Supported request body
(4) Allowed editing request headers
(5) Wasn't so easily exploitable to be used as a proxy or a DDoS relay (server-side bummer):
http://requestdiff.com/proxy?url1=https://www.amazon.com&url...
JackuB|10 years ago
(disclosure: I work for Apiary.io)
unknown|10 years ago
[deleted]
odabaxok|10 years ago
diggan|10 years ago
For people wanting to have a CLI tool instead, John Graham-Cumming's httpdiff might be worth looking at. https://github.com/jgrahamc/httpdiff
victordg|10 years ago
Httpdiff is a really good tool and way more powerful than mine.
I've used it multiple times and wanted to try making something that focused more on the request body (which in Httpdiff are saved to temporary files) and that was also a bit more visual than a CLI.
Btw, here is the code! https://github.com/vdel26/requestdiff
gregingelmo|10 years ago
vimdiff <(curl -s "https://httpbin.org/get") <(curl -s "https://httpbin.org/get?show_env=1")
It takes some getting used to but once you go vimdiff you'll never go back.
smarx|10 years ago
Two questions:
1) What's the diff logic? At first glance, it looks like JSON is reformatted (maybe canonicalized in some way) and then a line-by-line diff is applied. Is there more to it? Since the tool seems JSON-aware, I was surprised to see an added trailing comma up as a difference.
2) Do you have plans to expand the kind of HTTP requests users can make? It would be nice to use different verbs, headers, and request bodies. Runscope has a similar tool[0] built in that I believe (haven't tried it yet) allows a bit more flexibility, but it would be nice to have a standalone tool available.
[0] http://blog.runscope.com/posts/comparing-http-requests-using...
victordg|10 years ago
1) the diff is really simple, line by line and text based. I'm just using this really awesome library to do it: https://github.com/kpdecker/jsdiff The JSON is just being pretty printed to be able to do a text diff in a meaningful way.
2) Yes, I do, and thanks for the suggestions! But I just wanted to go with the minimal version first and see if people found it useful.
I didn't know about Runscope's diffing feature. Btw, I'm using a HTTPBin for the sample requests, which is a Runscope project as far as I know :)
no_gravity|10 years ago
http://www.productchart.com/blog/2015-07-19-urldiff
It renders a set of pages in a headless browser, compares them visually and alerts you if something changed.
Just a few lines of bash as you can see. But it turned out to be pretty useful. UrlDiff is a regular part of our regression testing at Product Chart now.
kozhevnikov|10 years ago
https://blog.twitter.com/2015/diffy-testing-services-without...
pixelbeat|10 years ago
http://www.pixelbeat.org/scripts/urldiff http://www.pixelbeat.org/scripts/idiff
See also mergely which supports diffing URLs: http://pixelbeat/programming/diffs/#mergely
andybak|10 years ago
Just the other day I needed something similar and was disappointed that I could find it.
I wanted to discuss something with a remote colleague and to illustrate it I wanted a visual diff of two files. I was hoping there was a nice little web app offering this but I was forced to screenshare (I could have terminal-shared but it was more hassle).
I was hoping for something like Etherpad but with a live visual diff.
dannybtran|10 years ago
From JS Console:
[Error] TypeError: undefined is not a function (evaluating 'Array.from(e)') _toConsumableArray2 (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1) s (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1) f (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1) onload (app.min.js.pagespeed.ce.ozGaCBt6Kj.js, line 1)
vortico|10 years ago
skastel|10 years ago
krakensden|10 years ago
A daemon that sends to two backends, and diffs the results.
zwischenzug|10 years ago
victordg|10 years ago
amelius|10 years ago
blemasle|10 years ago
victordg|10 years ago
So it was a trade-off and I preferred showing all the headers at the expense of having to proxy the calls through a server.
[1] http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheade...
[2] http://www.w3.org/TR/cors/#cross-origin-request
I will make it available on Github later, so that you at least have the option of running it yourself.
JackuB|10 years ago
(disclosure: I work for Apiary.io)
gdc|10 years ago
unknown|10 years ago
[deleted]
SimeVidas|10 years ago