Skip to content

Instantly share code, notes, and snippets.

View darrelmiller's full-sized avatar

Darrel darrelmiller

View GitHub Profile
<apiResults>
<resource rel="self" href="/">
<link rel="urn:tekpub:login" href="/Login"/>
</resource>
<resource rel="self" href="/Login">
<Message>Welcome Joe</Message>
<link rel="urn:tekpub:userhome" href="/user/95/home"/>
</resource>
@darrelmiller
darrelmiller / gist:1986182
Created March 6, 2012 13:09
Tekpub - production
GET /production/22
=>
200 OK
Content-Type: application/hal+json
{
"_links" : {
"self" : { "href" : "/production/22" },
},
"title" : "Rails runs rings round ReST resource representations",
@darrelmiller
darrelmiller / gist:1986176
Created March 6, 2012 13:07
Tekpub - all productions
GET /user/95/allproductions
=>
200 OK
Content-Type: application/hal+json
{
"_links" : {
"self" : { "href" : "/user/95/allproductions" },
},
"name" : "Joe",
@darrelmiller
darrelmiller / gist:1986172
Created March 6, 2012 13:06
Tekpub - user home
GET /user/95/home
=>
200 OK
Content-Type: application/hal+json
{ "_links": {
"self" : { "href" :"/user/95/home" },
"urn:tekpub:allproductions" : { "href" : "/user/95/allproductions", "title" : "All productions" },
"urn:tekpub:newepisodes" : { "href" : "/episodes/new", "title" : "New Episodes" },
"urn:tekpub:productionsbycategory" : { "href" : "/productions{?category}" }
"urn:tekpub:categories" : { "href" : "/categories" }
@darrelmiller
darrelmiller / gist:1986167
Created March 6, 2012 13:05
tekpub-login
GET /login
=>
200 OK
Content-Type: application/hal+json
{"_links": {
"self": { "href" : "/Login"},
"urn:tekpub:userhome" : { "href" : "/user/95/home"}
},
"Message" : "Welcome Joe"
GET /
=>
200 OK
Content-Type: application/hal+json
{
"_links": {
"self": { "href": "/" },
"urn:tekpub:login": { "href": "/login" }
}
GET /
=>
200 OK
Content-Type: application/hal+json
{
"_links": {
"self": { "href": "/" },
"urn:tekpub:login": { "href": "/login" }
public class IWantJSONDammit : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return base.SendAsync(request,cancellationToken);
public class LoggingFormatterSelector : IFormatterSelector
{
private readonly FormatterSelector _FormatterSelector = new FormatterSelector();
public new MediaTypeFormatter SelectReadFormatter(Type type, FormatterContext formatterContext, IEnumerable<MediaTypeFormatter> formatters)
{
string descriptFormatterContext = GetDescriptFormatterContext(formatterContext);
Console.WriteLine("Selecting Read Formatter for type {0} based on formatter context: {1}", type.Name, descriptFormatterContext);
<?xml version="1.0" encoding="utf-8"?>
<resource href="/orders">
<link rel="self" href="/orders"/>
<link rel="relatedResource1" href="/orders/relatedResource1"/>
<link rel="relatedResource2" href="/orders/relatedResource2"/>