{"id":1994,"date":"2008-10-22T11:42:09","date_gmt":"2008-10-22T15:42:09","guid":{"rendered":"http:\/\/www.markbaker.ca\/blog\/?p=1994"},"modified":"2008-10-22T11:42:09","modified_gmt":"2008-10-22T15:42:09","slug":"interface-included","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2008\/10\/interface-included\/","title":{"rendered":"Interface included"},"content":{"rendered":"<p>It&#8217;s good to see <a href=\"http:\/\/roy.gbiv.com\/untangled\/2008\/rest-apis-must-be-hypertext-driven\">Roy take on<\/a> the pseudo\/not-at-all &#8220;REST APIs&#8221; out there.<\/p>\r\n\r\n<p>As I mentioned in a comment there, I&#8217;m no stranger to this kind of interface specification, as I&#8217;d guess that about 80% of the &#8220;APIs&#8221; I reviewed as a consultant suffered from at least one of the problems Roy listed.  Fortunately, I found it wasn&#8217;t very difficult to get people to see the error of their ways.  All I had to do was re-emphasize that REST requires that interfaces be uniform &#8211; the <em>same<\/em> &#8211; and therefore that pre-specifying <em>anything<\/em> specific about a resource, such as URI structure, response codes, media types, resource relationships, etc.. was antithetical to that requirement.<\/p>","protected":false},"excerpt":{"rendered":"It&#8217;s good to see Roy take on the pseudo\/not-at-all &#8220;REST APIs&#8221; out there. As I mentioned in a comment there, I&#8217;m no stranger to this kind of interface specification, as I&#8217;d guess that about 80% of the &#8220;APIs&#8221; I reviewed as a consultant suffered from at least one of the problems Roy listed. Fortunately, I [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[22],"class_list":["post-1994","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-rest"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/1994","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=1994"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/1994\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=1994"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=1994"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=1994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}