{"id":425,"date":"2004-08-04T12:52:00","date_gmt":"2004-08-04T16:52:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=451"},"modified":"2004-08-04T12:52:00","modified_gmt":"2004-08-04T16:52:00","slug":"mnots-http-apis-for-python","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2004\/08\/mnots-http-apis-for-python\/","title":{"rendered":"Mnot&#8217;s HTTP APIs for Python"},"content":{"rendered":"<p>A very cool and intuitive <a href=\"http:\/\/www.mnot.net\/python\/http\/\">Python API for HTTP<\/a>\nby Mark.<\/p>\n\n<p>On a related note, being a command-line kinda guy, I&#8217;ve long lusted\nfor a &#8220;Web shell&#8221; which allows me to do this (but lacked the time or skill\nnecessary to build my own);<\/p>\n\n<pre>\n$ cat  http:\/\/example.org\/some-uri # PUT\n$ cat foo &gt;&gt; http:\/\/example.org\/some-uri # POST\n$ rm http:\/\/example.org\/some-uri # DELETE\n<\/pre>\n\n<p><em>Idea courtesy <a href=\"http:\/\/rest.blueoxen.net\/cgi-bin\/wiki.pl?JeffBone\">Jeff Bone<\/a><\/em><\/p>","protected":false},"excerpt":{"rendered":"A very cool and intuitive Python API for HTTP by Mark. On a related note, being a command-line kinda guy, I&#8217;ve long lusted for a &#8220;Web shell&#8221; which allows me to do this (but lacked the time or skill necessary to build my own); $ cat http:\/\/example.org\/some-uri # PUT $ cat foo &gt;&gt; http:\/\/example.org\/some-uri # [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-425","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/comments?post=425"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/425\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=425"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}