Publicerat Nyheter, Tech

Spinit goes open source med Web Anchor

I ett projekt för en av våra kunder har vi använt biblioteket Refit för att från .Net enkelt kunna använda webbresurser på ett mysigt sätt. Vi tyckte dock inte om den kod-genererande vändningen Refit tog vid version 2.0, samtidigt som tidigare versioner fortfarande gjorde det komplicerat att formatera datum och listor på det sätt vi ville i bland annat querystring-parametrar. Vi började med att gaffla (’forkade’, ni vet vad jag menar) en tidigare version av Refit men vi kände samtidigt att vi kunde göra något bättre själva.

Som utvecklare på Spinit har du turen att du får spendera en del av din arbetstid på att göra vad du vill, med det enda kravet att det tillför till företagets eller din egen professionella utveckling. Några av oss valde att använda detta privilegiet till att bygga ett eget ”Refit”. Resultatet blev Web Anchor. Web Anchor har nu nått version 1.0 och har redan ersatt Refit i orginalprojektet, men har också smugit sig in på andra platser.

Hur man använder Web Anchor

Som en kort introduktion är detta vad Web Anchor är, och hur det kan använda SWAPI för att hämta information om planeter i Starwars-världen.

Först måste vi skapa en typ som representerar resultatet vi förväntas oss från http://swapi.co/api/planets/1.

public class Planet
{
    public string Name { get; set; }
    public string Climate { get; set; }
    public int Diameter { get; set; }
}

För att kunna anropa apiet behöver vi definiera det med ett Interface.

public interface SWAPI
{
    [Get("planets/{id}")]
    Task<Planet> Planet(int id);
}

Vi kan därefter anropa apiet så här

var api = Api.For<SWAPI>("http://swapi.co/api/");
var planet = await customerApi.Planet(1);

// => HTTP GET http://swapi.co/api/planets/1

Web Anchor har stöd för ”de vanliga” HTTP-verben (GET/POST/PUT/DELETE) och det finns många så kallade extension points som du kan använda för att förändra och utöka Web Anchors beteende.

Skriv en kommentar


Intresserad? Vi mejlar dig när vi publicerar ett nytt inlägg.

  • Din integritet garanteras.
  • Du kan när som helst välja att avprenumerera genom att klicka på länken i ditt mail.