REST and ASP.NET Web API (Tunisia)

56
REST & ASP.NET Web API By @JefClaes

description

Slides from my session on REST and ASP.NET Web API at the Euricom Tunisia trip.

Transcript of REST and ASP.NET Web API (Tunisia)

Page 1: REST and ASP.NET Web API (Tunisia)

REST & ASP.NET Web API

By @JefClaes

Page 2: REST and ASP.NET Web API (Tunisia)

REST

Page 3: REST and ASP.NET Web API (Tunisia)

The acronym

REpresentational State Transfer

Page 4: REST and ASP.NET Web API (Tunisia)

REST is NOT...

• ‘Webservices using JSON’

• A protocol• A design pattern

Page 5: REST and ASP.NET Web API (Tunisia)

REST is...

“An architectural style for building distributed hypermedia systems.”

Page 6: REST and ASP.NET Web API (Tunisia)

In theory...

REST isn’t limited to a single message protocol.

Page 7: REST and ASP.NET Web API (Tunisia)

But in practice...

It’s all about HTTP.

Page 8: REST and ASP.NET Web API (Tunisia)

So now you wonder..

Haven’t we been successfully building web services using SOAP and HTTP

for over 10 years ?

Page 9: REST and ASP.NET Web API (Tunisia)

BASIC CONCEPTS

Page 10: REST and ASP.NET Web API (Tunisia)

Resources

• An entity, item, or just a thing you want to expose.

• REST is Resource Oriented.

A bank

Page 11: REST and ASP.NET Web API (Tunisia)

Identifiers

Something that identifies a resource.

BIC (= Bank Identifier Code): KREDBEBB

URI: http://myapi.com/bank/KREDBEBB

Page 12: REST and ASP.NET Web API (Tunisia)

Representations

View on a resource’s state at an instant in time.

JSON:

{ "BIC":"123“, “Name”:”KBC”}

XML:

<Bank> <BIC>KREDBEBB</BIC> <Name>KBC</Name></Bank>

Other:

• Images• CSV• Custom• ...

Page 13: REST and ASP.NET Web API (Tunisia)

Verbs

Actions on a resource.

Read, Update, Delete, Add

GET, PUT, DELETE, POST

Page 14: REST and ASP.NET Web API (Tunisia)

Hypermedia

HATEOAS: Hypermedia as the engine of application state

Linking your API together

Page 15: REST and ASP.NET Web API (Tunisia)

ARCHITECTURAL VALUESArchitecture of the WEB

Page 16: REST and ASP.NET Web API (Tunisia)

Scalability and performance

Yes, text-based, synchronous, request-response can be performant.

• Stateless• Caching

Page 17: REST and ASP.NET Web API (Tunisia)

Loose coupling

• No transactions• No state• No guarantees• HATEOAS• No specific technology stack

Page 18: REST and ASP.NET Web API (Tunisia)

Consistency and Uniformity

Everybody knows how to use HTTP– Constraints–Well understood semantics

Page 19: REST and ASP.NET Web API (Tunisia)

LEFT-OVERS

Page 20: REST and ASP.NET Web API (Tunisia)

Richardson’s Maturity Model

Level 0: POX

Level 1: Resources

Level 2: HTTP verbs

Level 3: Hypermedia

Page 21: REST and ASP.NET Web API (Tunisia)

Questions?

Page 22: REST and ASP.NET Web API (Tunisia)

ASP.NET WEBAPI

Page 23: REST and ASP.NET Web API (Tunisia)

What?

.NET (4.0) HTTP framework for building RESTful

services.

Page 24: REST and ASP.NET Web API (Tunisia)

When?

• HTTP Services (WCF)• AJAX back-ends

Page 25: REST and ASP.NET Web API (Tunisia)

The server

Page 26: REST and ASP.NET Web API (Tunisia)

Options

• ASP.NET MVC– Click, click, click

• SelfHost

Page 27: REST and ASP.NET Web API (Tunisia)

Selfhost

Page 28: REST and ASP.NET Web API (Tunisia)

Packages

Microsoft.AspNet.WebApi.SelfHost

Page 29: REST and ASP.NET Web API (Tunisia)

Starting

Page 30: REST and ASP.NET Web API (Tunisia)

Simple CRUD

Page 31: REST and ASP.NET Web API (Tunisia)

Creating a controller

Page 32: REST and ASP.NET Web API (Tunisia)

Creating a controller

Page 33: REST and ASP.NET Web API (Tunisia)

Without conventions

• Attributes [HttpGet]• [NonAction]

Page 34: REST and ASP.NET Web API (Tunisia)

The Client

Page 35: REST and ASP.NET Web API (Tunisia)

Packages

Microsoft.AspNet.WebApi.Client

Page 36: REST and ASP.NET Web API (Tunisia)

POST and GET

Page 37: REST and ASP.NET Web API (Tunisia)

Exception handling

Page 38: REST and ASP.NET Web API (Tunisia)

Default behaviour & IncludeErrorDetailPolicy

• By default 500 Internal Server Error

Page 39: REST and ASP.NET Web API (Tunisia)

HttpResponseException

Page 40: REST and ASP.NET Web API (Tunisia)

ErrorFilters

Page 41: REST and ASP.NET Web API (Tunisia)

Content negotiation

Page 42: REST and ASP.NET Web API (Tunisia)

XML/JSON

Supported out of the box:• text/xml• application/json (NewtonSoft)

Page 43: REST and ASP.NET Web API (Tunisia)

Custom formatters

Page 44: REST and ASP.NET Web API (Tunisia)

Custom formatters

Page 45: REST and ASP.NET Web API (Tunisia)

HTTP Messagehandlers

Page 46: REST and ASP.NET Web API (Tunisia)

HTTP intermediaries

Page 47: REST and ASP.NET Web API (Tunisia)

DelegatingHandler

Page 48: REST and ASP.NET Web API (Tunisia)

DelegatingHandler

Page 49: REST and ASP.NET Web API (Tunisia)

IoC

Page 50: REST and ASP.NET Web API (Tunisia)

IDependencyResolver

Page 51: REST and ASP.NET Web API (Tunisia)

IDependencyResolver

Page 52: REST and ASP.NET Web API (Tunisia)

Testing

Page 53: REST and ASP.NET Web API (Tunisia)

Unit testig

Page 54: REST and ASP.NET Web API (Tunisia)

Integration testing in-memory

Page 55: REST and ASP.NET Web API (Tunisia)

Summary

• REST– Concepts– Architectual values– Left overs

• ASP.NET Web API– Server/client– Exception handling– Content negotiation– Message handlers– IoC– Testing

Page 56: REST and ASP.NET Web API (Tunisia)

Questions