<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: API Versioning Tip</title>
	<atom:link href="http://alexking.org/blog/2009/12/13/api-versioning-tip/feed" rel="self" type="application/rss+xml" />
	<link>http://alexking.org/blog/2009/12/13/api-versioning-tip</link>
	<description>Alex King, Denver Web Developer</description>
	<lastBuildDate>Thu, 24 May 2012 16:30:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: How to Avoid â€œAPI Slammingâ€ and the â€œAPI Treadmillâ€ &#124; Open Source Blog</title>
		<link>http://alexking.org/blog/2009/12/13/api-versioning-tip#comment-120987</link>
		<dc:creator>How to Avoid â€œAPI Slammingâ€ and the â€œAPI Treadmillâ€ &#124; Open Source Blog</dc:creator>
		<pubDate>Wed, 06 Jan 2010 18:01:06 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=3851#comment-120987</guid>
		<description>[...] are some simple solutions. Alex King shows how to implement versioning with a simple modification to the API endpoint: When people build to your APIs, they need to continue working &#8211; even if/when the APIs need [...]</description>
		<content:encoded><![CDATA[<p>[...] are some simple solutions. Alex King shows how to implement versioning with a simple modification to the API endpoint: When people build to your APIs, they need to continue working &#8211; even if/when the APIs need [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: How to Avoid &#8220;API Slamming&#8221; and the &#8220;API Treadmill&#8221;</title>
		<link>http://alexking.org/blog/2009/12/13/api-versioning-tip#comment-120898</link>
		<dc:creator>How to Avoid &#8220;API Slamming&#8221; and the &#8220;API Treadmill&#8221;</dc:creator>
		<pubDate>Wed, 06 Jan 2010 07:27:35 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=3851#comment-120898</guid>
		<description>[...] are some simple solutions. Alex King shows how to implement versioning with a simple modification to the API endpoint: When people build to your APIs, they need to continue working - even if/when the APIs need to [...]</description>
		<content:encoded><![CDATA[<p>[...] are some simple solutions. Alex King shows how to implement versioning with a simple modification to the API endpoint: When people build to your APIs, they need to continue working &#8211; even if/when the APIs need to [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://alexking.org/blog/2009/12/13/api-versioning-tip#comment-117630</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Mon, 14 Dec 2009 15:11:40 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=3851#comment-117630</guid>
		<description>&lt;blockquote&gt;One additional problem this approach can bring is getting clients that use the APIs to transition to updated versions.&lt;/blockquote&gt;

That&#039;s an excellent point - I was thinking about this as well. I&#039;m considering adding a couple of properties to the return values of the API - something along the lines of:

- current API version
- API version deprecation date

Ideally the old API versions could live forever, but I also realize that isn&#039;t always realistic.</description>
		<content:encoded><![CDATA[<blockquote><p>One additional problem this approach can bring is getting clients that use the APIs to transition to updated versions.</p></blockquote>
<p>That&#8217;s an excellent point &#8211; I was thinking about this as well. I&#8217;m considering adding a couple of properties to the return values of the API &#8211; something along the lines of:</p>
<p>- current API version<br />
- API version deprecation date</p>
<p>Ideally the old API versions could live forever, but I also realize that isn&#8217;t always realistic.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joseph Scott</title>
		<link>http://alexking.org/blog/2009/12/13/api-versioning-tip#comment-117629</link>
		<dc:creator>Joseph Scott</dc:creator>
		<pubDate>Mon, 14 Dec 2009 15:03:52 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=3851#comment-117629</guid>
		<description>Agreed, I like the idea of having the version number right in the URL.  One additional problem this approach can bring is getting clients that use the APIs to transition to updated versions.  Not a deal breaker, but something that should be considered.</description>
		<content:encoded><![CDATA[<p>Agreed, I like the idea of having the version number right in the URL.  One additional problem this approach can bring is getting clients that use the APIs to transition to updated versions.  Not a deal breaker, but something that should be considered.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: links for 2009-12-13 &#171; burningCat</title>
		<link>http://alexking.org/blog/2009/12/13/api-versioning-tip#comment-117582</link>
		<dc:creator>links for 2009-12-13 &#171; burningCat</dc:creator>
		<pubDate>Mon, 14 Dec 2009 02:03:00 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=3851#comment-117582</guid>
		<description>[...] API Versioning Tip [...]</description>
		<content:encoded><![CDATA[<p>[...] API Versioning Tip [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://alexking.org/blog/2009/12/13/api-versioning-tip#comment-117580</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Mon, 14 Dec 2009 02:02:18 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=3851#comment-117580</guid>
		<description>Blocking access to .svn directories is trivial:

&lt;code&gt;RedirectMatch 404 /\.svn(/&#124;$)&lt;/code&gt;

and the benefits of managing your web sites with live checkouts are too numerous to detail here.

Temporary branches should be made in the branches/ dir, not the tags/ dir.

If this is a sticking point to someone, an &lt;code&gt;svn export&lt;/code&gt; would accomplish the same thing in this case.</description>
		<content:encoded><![CDATA[<p>Blocking access to .svn directories is trivial:</p>
<p><code>RedirectMatch 404 /\.svn(/|$)</code></p>
<p>and the benefits of managing your web sites with live checkouts are too numerous to detail here.</p>
<p>Temporary branches should be made in the branches/ dir, not the tags/ dir.</p>
<p>If this is a sticking point to someone, an <code>svn export</code> would accomplish the same thing in this case.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gslin</title>
		<link>http://alexking.org/blog/2009/12/13/api-versioning-tip#comment-117562</link>
		<dc:creator>gslin</dc:creator>
		<pubDate>Sun, 13 Dec 2009 21:01:52 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=3851#comment-117562</guid>
		<description>If you use svn, don&#039;t put &quot;.svn&quot; directory into webroot, a better way is to use deploy utility to spread your code, don&#039;t use &quot;svn co&quot; in server side directly. Usually keep .svn away from webroot will enhance security.

If you insist to put .svn into webroot for some reasons. Avoid to use .htaccess to deny outside access as only ACL. Also remember to use another username &amp; password to do checkout. This can avoid username and password leaking when .svn be accessed. It&#039;s because when people trying to upgrade from Apache to lighttpd or nginx, they *often* forget to add configuration to deny .svn directory.

Putting all tags directory into webroot is not a good habit, I think. Sometimes you will use VCS to create a temporily branch to do some work, which causes security risk.

A better approach might be to use hg/git, they only put .hg/.git into root directory of working repository. And remember to use deploy utility, most utility can set filter to avoid some directories and files be deployed.

Back to the origin subject, delicious API and Amazon Web Services API seems good examples. The first one use &quot;v1&quot; as version path, and the later one use release date /2008xxxx/, fixed version number /1.0/, and /latest/ to keep different version (and different level) of API. I believe this already an acceptable solution.</description>
		<content:encoded><![CDATA[<p>If you use svn, don&#8217;t put &#8220;.svn&#8221; directory into webroot, a better way is to use deploy utility to spread your code, don&#8217;t use &#8220;svn co&#8221; in server side directly. Usually keep .svn away from webroot will enhance security.</p>
<p>If you insist to put .svn into webroot for some reasons. Avoid to use .htaccess to deny outside access as only ACL. Also remember to use another username &amp; password to do checkout. This can avoid username and password leaking when .svn be accessed. It&#8217;s because when people trying to upgrade from Apache to lighttpd or nginx, they *often* forget to add configuration to deny .svn directory.</p>
<p>Putting all tags directory into webroot is not a good habit, I think. Sometimes you will use VCS to create a temporily branch to do some work, which causes security risk.</p>
<p>A better approach might be to use hg/git, they only put .hg/.git into root directory of working repository. And remember to use deploy utility, most utility can set filter to avoid some directories and files be deployed.</p>
<p>Back to the origin subject, delicious API and Amazon Web Services API seems good examples. The first one use &#8220;v1&#8243; as version path, and the later one use release date /2008xxxx/, fixed version number /1.0/, and /latest/ to keep different version (and different level) of API. I believe this already an acceptable solution.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

