saule
v1.8.0
Saule is a JSON API (version 1.0) library for ASP.Net Web API 2. Install Saule using NuGet:
Install-Package saule
To use Saule, you must define resources that contain the information about your domain:
public class PersonResource : ApiResource{ public PersonResource() { Attribute("FirstName"); Attribute("LastName"); Attribute("Age"); BelongsTo<CompanyResource>("Job"); HasMany<PersonResource>("Friends"); }}public class CompanyResource : ApiResource{ public CompanyResource() { Attribute("Name"); Attribute("NumberOfEmployees"); }}
You can then use these to serialize any class into Json Api (as long as your class has properties with the same names as in your model):
public class PersonController : ApiController{ [HttpGet] [ReturnsResource(typeof(PersonResource))] [Route("people/{id}")] public JohnSmith GetPerson(string id) { return new JohnSmith(); }}
GET http://example.com/people/123{ "data": { "type": "person", "id": "123", "attributes": { "first-name": "John", "last-name": "Smith", "age": 34 }, "relationships": { "job": { "links": { "self": "http://example.com/people/123/relationships/job/", "related": "http://example.com/people/123/job/" }, "data": { "type": "company", "id": "456" } }, "friends": { "links": { "self": "http://example.com/people/123/relationships/friends/", "related": "http://example.com/people/123/friends/" }, "data": [ { "type": "person", "id": "789" } ] } } }, "included": [ { "type": "company", "id": "456", "attributes": { "name": "Awesome, Inc.", "number-of-employees": 24 } }, { "type": "person", "id": "789", "attributes": { "first-name": "Sara", "last-name": "Jones", "age": 38 } } ], "links": { "self": "http://example.com/people/123" } }
Deserialization works just like in normal Web API; you don't need to do anything special to make this work.
Follow the steps below to create a new release:
Create a branch called release-v<version>
(e.g. release-v1.5
)
Increase the version number in appveyor.yml
in master
Push both changes and wait for the build
Copy the release notes into the release description on Github
Publish the new release