Skip to content

A poorly-named .NET library to map your API models to RESTful resource representations.

License

Notifications You must be signed in to change notification settings

AaronTorgerson/Resourceful

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Resourceful

A poorly-named .NET library to map your API models to RESTful resource representations.

  • Add hypermedia links (haters gonna HATEOAS).
  • Perform transformations that obviate the need for view models/dtos.

Say you've got a model, like

public class Thing
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Why go to the trouble of making a dto just to get hypermedia links? Use Resourceful to take care of that for you. In your app startup code:

ResourceMapper.CreateMapping<Thing>("/things/{Id}");

In your action, map your model to its resource representation.

var model = new Thing 
{
    Id = 1, 
    Name = "Foo"
};

return model.AsResource();

Behold!

{
    'Id' : 1,
    'Name' : 'Foo',
    '_Relationships' : {
        'Self' : '/things/1'
    }
}

Wait a mintue, though... that Id clutters things up now that we have a nice Self link. Let's tweak our mapping.

ResourceMapper.CreateMapping<Thing>("/things/{Id}")
              .OmitProperty("Id");

Better.

{
    'Name' : 'Foo',
    '_Relationships' : {
        'Self' : '/things/1'
    }
}

Now, how can we find Blerks that have this Thing?

ResourceMapper.CreateMapping<Thing>("/things/{Id}")
              .OmitProperty("Id")
              .AddRelationship("BlerksWithThisThing", "/blerks/?thingId={Id}");

Perfect.

{
    'Name' : 'Foo',
    '_Relationships' : {
        'Self' : '/things/1',
        'BlerksWithThisThing' : '/blerks/?thingId=1'
    }
}

About

A poorly-named .NET library to map your API models to RESTful resource representations.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages