Az egyik projektünkben string hossz limitek között vergődve arra jutottunk, hogy a felhasználó által megadott URL-ek rövidítésével nyerünk pár karakternyi helyet. Nosza meg is néztük a TinyURL URL rövidítő szolgáltatást és szembetaláltuk magunkat a világ legegyszerűbb API-jával.
Na vajon milyen technológiát választ egy olyan cég, aki a webes szolgáltatását tényleg minden fajta kliens számára biztosítani szeretné? Manapság természetesen REST-et.
És vajon hogy néz ki a legegyszerűbb REST interfész egy string bemenettel és egy string kimenettel? Így:
http://tinyurl.com/api-create.php?url=http://www.msdnkk.hu
A legszebb az egészben, hogy a válasz minden körítés nélkül mindössze ennyi:
HTTP/1.1 200 OK
X-Powered-By: PHP/5.3.2
Content-type: text/plain
Connection: close
Date: Tue, 08 Jun 2010 04:40:16 GMT
Server: TinyURL/1.6
Content-Length: 23
http://tinyurl.com/36q7yh8
Mindez .NET-ből némi prefixeléssel és URL kódolással:
internal static class TinyUrlService
{
const string SERVICEFORMAT = @"http://tinyurl.com/api-create.php?url={0}";
internal static string Shorten( string longUrl )
{
if( !longUrl.StartsWith( "http://", StringComparison.OrdinalIgnoreCase ) )
{
longUrl = "http://" + longUrl;
}
string serviceUrl = String.Format( CultureInfo.InvariantCulture, SERVICEFORMAT, HttpUtility.UrlEncode( longUrl ) );
return new WebClient().DownloadString( serviceUrl );
}
}
Erre mondta Einstein, hogy “Mindent a lehető legegyszerűbben kell csinálni, de egy fokkal sem egyszerűbben.”