SlideShare a Scribd company logo
ASP.NET WEB API
(ADVANCED COURSE)
Trainer:Chalermpon Areepong
Microsoft MVP : ASP.NET
ASP.NET & MVCTHAI DEVELOPERS GROUP
www.fb.com/groups/mvcthaidev
ABOUT ME
 CHALERMPON AREEPONG : Nine ( )
 I’m a web developer
 Microsoft MVP ASP.NET for 7 years
 Founders in ASP.NET & MVC DevelopersThailand (MVCTHAIDEV)
AGENDA I
 WebTechnology Introduce
 ASP.NET WEB API Introduct
 ModelBinder and Custom
 Formatter and Custom
 ODATA
 Async Operation
 Performance Improvement
AGENDA II (OPTIONAL)
 Async Operation
 Performance Improvement
WEB TECHNOLOGY
INTRODUCE
HTTP
 URI : [scheme]: [port]: //[host] /[path] [? query]
 Representation : Content or Data
 MediaType : application/json, application/xml, image/png
 HTTP : HypertextTransfer Protocol
 HTTP Messages
 HTTP Request
 HTTP Response
 HTTP Method
 GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH andTRACE
HTTP METHOD
Method Objection
GET Retrieves information from a resource. return 200 (OK)
POST Requests the server to create new one of entity without duplicate object. Return code 201 (Created)
or 202 (Accepted)
PUT Requests the server to replace the state of the target resource at the specifiedURI with the enclosed
entity. If an existing resource exists for the current representation, it should return a 200(OK) ,204
(No Content) ,201 (Created).
DELETE Requests the server to remove the entity located at the specified URI. Return code 200(completed),
202 (Accepted) or 204 (No Content).
PATCH Requests the server to do a partial update of the the entity at the specified URI.The content of the
patch should have enough information that the server can use to apply the update. If the resource
exists the server and can be updated, return 200(OK), 204 (No Content),201 (Created).
HTTP METHOD
Method Objection
HEAD Identical to a GET only it returns headers and not the body.
OPTIONS Requests the server to return information about it’s capabilities. Most commonly it returns an Allow
header specifying which HTTP methods are supported, though the spec leaves it completely open
ended. For example it is entirely feasible to list which media types the server supports.OPTIONS can
also return a body supplying further information that cannot be represented in the headers.
TRACE Requests the server to return back the request it received.The server will return the entire request
message in the body with a Content-Type of "message/http".This is useful for diagnostics as clients
can see which proxies the request passed through and how the request may have been modified by
intermediaries.
CONNECT Converts the request connection to aTCPTunnel (HTTPS, websokets)
WEB COMMUNICATION
Web Server
GET
Response
GET https://www.facebook.com/groups/mvcthaidev HTTP/1.1
method: GET
accept-encoding: gzip,deflate,sdch
url: /groups/mvcthaidev
host: www.facebook.com
accept-language: en-US,en;q=0.8
user-agent: Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94
Safari/537.36
accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
version: HTTP/1.1
scheme: https
HTTP/1.1 200 OK
cache-control: private, no-cache, no-store, must-revalidate
content-encoding: gzip
content-type: text/html; charset=utf-8
date: Sat, 25 May 2013 08:21:01 GMT
expires: Sat, 01 Jan 2000 00:00:00 GMT
p3p:CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"
pragma: no-cache
set-cookie: wd=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly
status: 200
strict-transport-security: max-age=60
version: HTTP/1.1
x-content-type-options: nosniff
x-fb-debug: ERdqB2SxAcgCR0CJZG4+D200CnnoJPJV8k+R1bKkdi0=
x-frame-options: DENY
x-xss-protection: 0
Output :
<!DOCTYPE html>
<html lang="en" id="facebook" class="no_js"> …………………………
WEB COMMUNICATION
Web Server
POST
Response
POST https://www.facebook.com/ajax/chat/imps_logging.php HTTP/1.1
origin: https://www.facebook.com
method: POST
accept-encoding: gzip,deflate,sdch
url: /ajax/chat/imps_logging.php
host: www.facebook.com
accept-language: en-US,en;q=0.8
user-agent: Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94
Safari/537.36
content-type: application/x-www-form-urlencoded
accept: */*
referer: https://www.facebook.com/groups/mvcthaidev
x-svn-rev: 826852
version: HTTP/1.1
content-length: 242
scheme: https
HTTP/1.1 200 OK
cache-control: private, no-cache, no-store, must-revalidate
content-encoding: gzip
content-type: application/x-javascript; charset=utf-8
date: Sat, 25 May 2013 08:21:05 GMT
expires: Sat, 01 Jan 2000 00:00:00 GMT
pragma: no-cache
status: 200
strict-transport-security: max-age=60
version: HTTP/1.1
x-content-type-options: nosniff
x-fb-debug: IPFu6HhUMaNDxBAvHb94M96B0QjjrZ7YeMdmBL4ArLQ=
x-frame-options: DENY
x-xss-protection: 0
Input: Form data
source: periodical_imps
sorted_list: 1321490013,1059545685,100000164752579,1093746402,100000165125475
list_availability: 2,2,3,2,2
__user: 712879509
__a: 1
__dyn: 7n8ahyj35CFwXAw
__req: 1
fb_dtsg: AQD81QbA
phstamp: 16581685649819865213
HTTP STATUS CODE
Range Definition Ref Link
1xx The request has been received and
processing is continuing.
http://tools.ietf.org/html/draft-ietf-httpbis-
p2-semantics-21#section-7.2
2xx The request has been accepted, received
and understood.
http://tools.ietf.org/html/draft-ietf-httpbis-
p2-semantics-21#section-7.3
3xx Further action is required to complete the
request.
http://tools.ietf.org/html/draft-ietf-httpbis-
p2-semantics-21#section-7.4
4xx The request is invalid and cannot be
completed.
http://tools.ietf.org/html/draft-ietf-httpbis-
p2-semantics-21#section-7.5
5xx he server has failed trying to complete the
request
http://tools.ietf.org/html/draft-ietf-httpbis-
p2-semantics-21#section-7.6
HTTP MEDIA FORMATS
 JSON
 XML
 Form Data
 Image
 Others https://en.wikipedia.org/wiki/Internet_media_type
JSON (JAVASCRIPT OBJECT NOTATION)
 Open standard
 Text Based format
 Lightweight than XML
 Human readable
 Derived from JavaScript object
 ContentType = application/json
 Extension *.json
JSON (JAVASCRIPT OBJECT NOTATION)
 JavaScript object
 JSON
var customer = {
fullname : “PeeMark PraKhaNhong”,
age : 500 ,
contacts : [ { mobileno: “025329000”, email : “mark@gmail.com” } ]
}
{
“fullname” : “PeeMark PraKhaNhong”,
“age” : 500 ,
“contacts” : [ { “mobileno”: “025329000”, “email” : “mark@gmail.com” } ]
}
XML (EXTENSIBLE MARKUP LANGUAGE)
 Unicode Support
 Human and Machine Readable
 Markup language like HTML <name>…</name>
 ContentType = text/xml, application/xml
 text/xml if not specified encode will use ASCII is default
 application/xml used encode in document
<Person>
<FullName>PeeMark PraKhaNhong</FullName>
<Age>500</Age>
<Contacts>
<Contact MobileNo=“025329000” Email= “mark@gmail.com” ></Contact>
</Contacts>
</Person>
FORM DATA
 Content-Type : application/x-www-form-urlencoded
 Send by Form Submit
 Format as Url Encode
Encoded :
FullName=PeeMark%20PraKhaNhong&Age=500&MobileNo=025329000&Email=mark%40gmail.com
Decoded:
FullName=PeeMark PraKhaNhong&Age=500&MobileNo=025329000&Email=mark@gmail.com
ASP.NET WEB API
INTRODUCE
WHAT’S ASP.NET WEB API
 HTTP Service
 Service based on HTTP Protocol
 GET, POST, PUT, DELETE
 No Proxy Class for client
 Support Data Format : Form Data, JSON, XML and Custom
 Support all clients are based on HTTP
 Combine ASP.NET
WHY ASP.NET WEB API?
 If we need aWeb Service and don’t need SOAP, then ASP.NetWeb API is very useful.
 Web API - Used to build simple, non-SOAP-based HTTP Services on top of existingWCF
message pipeline.
 Web API - No need for configurable likeWCF REST services
 Web API - No need for Data contracts
 Web API - Could create fully blown REST Services
 Simple service creation withWeb API.
 Web API is focused at one thing, being easy to define and expose and consume, while also
facilitating doing things in a RESTful way.
 Web API is light weight architecture.
CLIENTS
WEB SERVICETECHNOLOGY COMPARISON
Abilities ASP.NETWEB API WCF
Transport Channel HTTP(s) TCP, UDP, MSMQ, NamedPipes, HTTP(s),
Custom
Protocol HTTP WS-*
Types CLRTypes DataContract
Message format Text (xml, json) SOAP+XML
Service Interface HttpMethod, UrlPattern Service Contract
State management Stateless Stateless with per call
Cache Built-n to HTTP Prefer application
control
Handled by application
Error Handling Exceptions, HTTP Status codes
filters
Faults, Behaviors
Hosting IIS, Self Host IIS, Self Host
Client IApiExplorer
Shared Libraries
ProxyClass
Shared Libraries
WCF => ASP.NET WEB API
WCFWebAPI ASP.NET WebAPI
Service => Web API controller
Operation => Action
Service contract => n/a
Endpoint => n/a
URITemplate => ASP.NET Routing
Message handlers => Same
Formatters => Same
Operation handlers => Filters, model binders
LAB1
BASIC ASP.NET WEB API
ASP.NETWEBAPI
LAB1
BASICS
HTTP METHOD
HTTP MESSAGE
ROUTE
HTTP METHODS
 Test the API from JavaScript client
HTTP MESSAGE
 Request :
 HttpRequestMessage : represent for http request message information
 Response
 HttpResponseMessage : return data and managed http header information
 Object/Value : return data and when error will throw the exception.
 HttpResponseException : Http response message with 404(default)
HTTP MESSAGE
 Open fiddler and click ComposerTab
 1. GET http://localhost:7415/api/HttpMessages and Execute
 2. route to GetAll() action
 3.Test other method Get/Id, Post, Put, Delete
ROUTE
 Like MVC App
 Default route is api/{controller}/{id}
 Add action to route like a MVC App api/{controller}/{action}/{id}
 Force Action name with [ActionName(“name”)] to support {action}
LAB2
PIPELINE PROCESS
Message handler
PIPELINE PROCESS
 Message Handler is pre-post
processing for Http Request and Response
 Changing the request HTTP method
 Adding a response header
 Logging,Tracing
PIPELINE PROCESSTEST
LAB3
FORMATTER AND MODEL BINDING
ASP.NETWEBAPI
FORMATTER AND MODEL BINDING
 URI => ModelBinder, ValueBinder
 Entity-Body => Formatter
 URI, HEADER, Entity-body => custom format
ASP.NET WEB API Training
TEST MODELBINDER
TEST MODELVALIDATE
LAB4
ODATA
ASP.NETWEBAPI
ODATA OPTION QUERY
Option Description
$filter Filters the results, based on a Boolean condition.
$inlinecount
Tells the server to include the total count of matching entities in the response. (Useful
for server-side paging.)
$orderby Sorts the results.
$skip Skips the first n results.
$top Returns only the first n the results.
ODATA QUERYTEST
 http://localhost:24556/api/meetings
 http://localhost:24556/api/meetings?$filter=Leader%20eq%20%27Mark%20Nich
ols%27  (Leader eq ‘Mark Nichols’)
 http://localhost:24556/api/meetings?$top=2
 http://localhost:24556/api/meetings?$filter=MeetingDate%20eq%20datetime%2
72013-01-17%27 MeetingDate eq datetime’2013-01-17′
ODATA QUERY RESULT
LAB6
ASYNC OPERATION
ASP.NETWEBAPI
ASYNC INWEB API
 async = Asynchronous in easy way
 async requires await
 async support in .NET 4.5 only
 .NET 4.5 provides a lot of new asynchronous methods
ASYNC RESULT
LAB7
SECURITY
TokenValidation
AUTHENTICATION SECURITY
 SSL
 All of IIS authentications
 OAuth2.0
 OpenID
 Certificate’s Client Request
 FormAuthentication
BASIC AUTHENTICATION SECURITY
 Easy solution for internet application
 SSL + BasicAuthentication + ASP.NET MembershipProvider
 Pros
 Easy
 Cons
 Username/Password encode to based 64
BASIC AUTHENTICATION SECURITY
TOKENVALIDATION
 TokenValidation = AntiForgery
DEMOTOKENVALIDATION
LAB7
PERFORMANCE IMPOVEMENT
MessageCompression
HiPerf JavaScript Serializer
MESSAGE COMPRESSION
 You can enable this feature in IIS7 or later
HI-PERFORMANCE JAVASCRIPT SERIALIZER
 ServiceStack.Text is best of faster javascriptserializer
 Create our new Custom Json Formatter and replace old
HI-PERFORMANCE JAVASCRIPT SERIALIZER
CONCLUSION
 New way for WEB Service based on HTTP
 Best the way for HTTP Service
 Support all of the HTTP Clients
 Extensibility, we able to customize all of the modules
 Closely with ASP.NET MVC
 It’s OPENSOURCE http://aspnetwebstack.codeplex.com/
 Official site http://www.asp.net/web-api
THANKYOU
REAL WORLD IMPLEMENTATION
BY
CASE STUDY
ASP.NETWEB API Advanced course II
soon…

More Related Content

PPTX
REST-API introduction for developers
PPTX
RESTful API - Best Practices
PPTX
Selenium Tutorial For Beginners | Selenium Automation Testing Tutorial | Sele...
PPTX
Automation Testing by Selenium Web Driver
PDF
Cross site scripting
PPTX
ASP.NET Web API
PPTX
Node.js Express
PPTX
Introduction to Node js
REST-API introduction for developers
RESTful API - Best Practices
Selenium Tutorial For Beginners | Selenium Automation Testing Tutorial | Sele...
Automation Testing by Selenium Web Driver
Cross site scripting
ASP.NET Web API
Node.js Express
Introduction to Node js

What's hot (20)

PPTX
OWASP Top 10 2021 What's New
PPTX
NodeJS - Server Side JS
PPTX
PPTX
Types of performance testing
PDF
Accessibility Testing using Axe
PPTX
Introduction to Javascript By Satyen
PPTX
Introduction to php
PPTX
Asp.net MVC training session
PDF
Selenium - Introduction
PPT
Php with MYSQL Database
PDF
Web Development Course: PHP lecture 2
PDF
Requirements Validation
PPT
Selenium Concepts
PPTX
Data driven Automation Framework with Selenium
PDF
Web application security & Testing
PPTX
FYBSC IT Web Programming Unit IV PHP and MySQL
PPT
Introduction to Javascript
PDF
Mobile Applications Testing: From Concepts to Practice
PPT
QSpiders - Automation using Selenium
OWASP Top 10 2021 What's New
NodeJS - Server Side JS
Types of performance testing
Accessibility Testing using Axe
Introduction to Javascript By Satyen
Introduction to php
Asp.net MVC training session
Selenium - Introduction
Php with MYSQL Database
Web Development Course: PHP lecture 2
Requirements Validation
Selenium Concepts
Data driven Automation Framework with Selenium
Web application security & Testing
FYBSC IT Web Programming Unit IV PHP and MySQL
Introduction to Javascript
Mobile Applications Testing: From Concepts to Practice
QSpiders - Automation using Selenium
Ad

Viewers also liked (6)

PPTX
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
PPTX
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
PPTX
Web API with ASP.NET MVC by Software development company in india
PPT
Excellent rest using asp.net web api
PPTX
ASP.NET Web API and HTTP Fundamentals
PDF
C# ASP.NET WEB API APPLICATION DEVELOPMENT
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
Web API with ASP.NET MVC by Software development company in india
Excellent rest using asp.net web api
ASP.NET Web API and HTTP Fundamentals
C# ASP.NET WEB API APPLICATION DEVELOPMENT
Ad

Similar to ASP.NET WEB API Training (20)

PPTX
Web API or WCF - An Architectural Comparison
PPTX
11 asp.net web api
PPTX
ASP.NET Mvc 4 web api
PPTX
Building-Robust-APIs-ASPNET-Web-API-and-RESTful-Patterns.pptx
PPTX
PPTX
Introduction to Web Architecture
PDF
Great webapis
PPTX
ASP.NET WEB API
PDF
Web Services Tutorial
PPTX
Rest WebAPI with OData
PPTX
Web technology Unit-I Part D - message format
PPT
Building+restful+webservice
PDF
CNIT 129S: Ch 3: Web Application Technologies
PDF
MS TechDays 2011 - WCF Web APis There's a URI for That
PDF
CNIT 129S - Ch 3: Web Application Technologies
PDF
Web 7 | HTTP Request and Response
PPTX
06 web api
PDF
Complete guidance book of Asp.Net Web API
PDF
Web services tutorial
PDF
Ch 3: Web Application Technologies
Web API or WCF - An Architectural Comparison
11 asp.net web api
ASP.NET Mvc 4 web api
Building-Robust-APIs-ASPNET-Web-API-and-RESTful-Patterns.pptx
Introduction to Web Architecture
Great webapis
ASP.NET WEB API
Web Services Tutorial
Rest WebAPI with OData
Web technology Unit-I Part D - message format
Building+restful+webservice
CNIT 129S: Ch 3: Web Application Technologies
MS TechDays 2011 - WCF Web APis There's a URI for That
CNIT 129S - Ch 3: Web Application Technologies
Web 7 | HTTP Request and Response
06 web api
Complete guidance book of Asp.Net Web API
Web services tutorial
Ch 3: Web Application Technologies

More from Chalermpon Areepong (10)

PPTX
DevRock #02 akka.net intro part
PPTX
Web API authentication and authorization
PDF
Build your website with angularjs and web apis
PPTX
Java script for web developer
PPTX
ZZ BC#8 Hello ASP.NET MVC 4 (dks)
PPTX
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
PPTX
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
PPTX
Build your web app with asp.net mvc 2 from scratch
PPTX
Gf vtzz-05--j queryshowcase
PPTX
DevRock #02 akka.net intro part
Web API authentication and authorization
Build your website with angularjs and web apis
Java script for web developer
ZZ BC#8 Hello ASP.NET MVC 4 (dks)
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
Build your web app with asp.net mvc 2 from scratch
Gf vtzz-05--j queryshowcase

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPT
Teaching material agriculture food technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Electronic commerce courselecture one. Pdf
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Unlocking AI with Model Context Protocol (MCP)
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Machine learning based COVID-19 study performance prediction
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Empathic Computing: Creating Shared Understanding
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Teaching material agriculture food technology
Per capita expenditure prediction using model stacking based on satellite ima...
Electronic commerce courselecture one. Pdf
sap open course for s4hana steps from ECC to s4
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Unlocking AI with Model Context Protocol (MCP)
The AUB Centre for AI in Media Proposal.docx
Digital-Transformation-Roadmap-for-Companies.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MYSQL Presentation for SQL database connectivity
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Machine learning based COVID-19 study performance prediction
Encapsulation_ Review paper, used for researhc scholars
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Advanced methodologies resolving dimensionality complications for autism neur...
Empathic Computing: Creating Shared Understanding

ASP.NET WEB API Training

  • 1. ASP.NET WEB API (ADVANCED COURSE) Trainer:Chalermpon Areepong Microsoft MVP : ASP.NET ASP.NET & MVCTHAI DEVELOPERS GROUP www.fb.com/groups/mvcthaidev
  • 2. ABOUT ME  CHALERMPON AREEPONG : Nine ( )  I’m a web developer  Microsoft MVP ASP.NET for 7 years  Founders in ASP.NET & MVC DevelopersThailand (MVCTHAIDEV)
  • 3. AGENDA I  WebTechnology Introduce  ASP.NET WEB API Introduct  ModelBinder and Custom  Formatter and Custom  ODATA  Async Operation  Performance Improvement
  • 4. AGENDA II (OPTIONAL)  Async Operation  Performance Improvement
  • 6. HTTP  URI : [scheme]: [port]: //[host] /[path] [? query]  Representation : Content or Data  MediaType : application/json, application/xml, image/png  HTTP : HypertextTransfer Protocol  HTTP Messages  HTTP Request  HTTP Response  HTTP Method  GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH andTRACE
  • 7. HTTP METHOD Method Objection GET Retrieves information from a resource. return 200 (OK) POST Requests the server to create new one of entity without duplicate object. Return code 201 (Created) or 202 (Accepted) PUT Requests the server to replace the state of the target resource at the specifiedURI with the enclosed entity. If an existing resource exists for the current representation, it should return a 200(OK) ,204 (No Content) ,201 (Created). DELETE Requests the server to remove the entity located at the specified URI. Return code 200(completed), 202 (Accepted) or 204 (No Content). PATCH Requests the server to do a partial update of the the entity at the specified URI.The content of the patch should have enough information that the server can use to apply the update. If the resource exists the server and can be updated, return 200(OK), 204 (No Content),201 (Created).
  • 8. HTTP METHOD Method Objection HEAD Identical to a GET only it returns headers and not the body. OPTIONS Requests the server to return information about it’s capabilities. Most commonly it returns an Allow header specifying which HTTP methods are supported, though the spec leaves it completely open ended. For example it is entirely feasible to list which media types the server supports.OPTIONS can also return a body supplying further information that cannot be represented in the headers. TRACE Requests the server to return back the request it received.The server will return the entire request message in the body with a Content-Type of "message/http".This is useful for diagnostics as clients can see which proxies the request passed through and how the request may have been modified by intermediaries. CONNECT Converts the request connection to aTCPTunnel (HTTPS, websokets)
  • 9. WEB COMMUNICATION Web Server GET Response GET https://www.facebook.com/groups/mvcthaidev HTTP/1.1 method: GET accept-encoding: gzip,deflate,sdch url: /groups/mvcthaidev host: www.facebook.com accept-language: en-US,en;q=0.8 user-agent: Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 version: HTTP/1.1 scheme: https HTTP/1.1 200 OK cache-control: private, no-cache, no-store, must-revalidate content-encoding: gzip content-type: text/html; charset=utf-8 date: Sat, 25 May 2013 08:21:01 GMT expires: Sat, 01 Jan 2000 00:00:00 GMT p3p:CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p" pragma: no-cache set-cookie: wd=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly status: 200 strict-transport-security: max-age=60 version: HTTP/1.1 x-content-type-options: nosniff x-fb-debug: ERdqB2SxAcgCR0CJZG4+D200CnnoJPJV8k+R1bKkdi0= x-frame-options: DENY x-xss-protection: 0 Output : <!DOCTYPE html> <html lang="en" id="facebook" class="no_js"> …………………………
  • 10. WEB COMMUNICATION Web Server POST Response POST https://www.facebook.com/ajax/chat/imps_logging.php HTTP/1.1 origin: https://www.facebook.com method: POST accept-encoding: gzip,deflate,sdch url: /ajax/chat/imps_logging.php host: www.facebook.com accept-language: en-US,en;q=0.8 user-agent: Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 content-type: application/x-www-form-urlencoded accept: */* referer: https://www.facebook.com/groups/mvcthaidev x-svn-rev: 826852 version: HTTP/1.1 content-length: 242 scheme: https HTTP/1.1 200 OK cache-control: private, no-cache, no-store, must-revalidate content-encoding: gzip content-type: application/x-javascript; charset=utf-8 date: Sat, 25 May 2013 08:21:05 GMT expires: Sat, 01 Jan 2000 00:00:00 GMT pragma: no-cache status: 200 strict-transport-security: max-age=60 version: HTTP/1.1 x-content-type-options: nosniff x-fb-debug: IPFu6HhUMaNDxBAvHb94M96B0QjjrZ7YeMdmBL4ArLQ= x-frame-options: DENY x-xss-protection: 0 Input: Form data source: periodical_imps sorted_list: 1321490013,1059545685,100000164752579,1093746402,100000165125475 list_availability: 2,2,3,2,2 __user: 712879509 __a: 1 __dyn: 7n8ahyj35CFwXAw __req: 1 fb_dtsg: AQD81QbA phstamp: 16581685649819865213
  • 11. HTTP STATUS CODE Range Definition Ref Link 1xx The request has been received and processing is continuing. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.2 2xx The request has been accepted, received and understood. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.3 3xx Further action is required to complete the request. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.4 4xx The request is invalid and cannot be completed. http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.5 5xx he server has failed trying to complete the request http://tools.ietf.org/html/draft-ietf-httpbis- p2-semantics-21#section-7.6
  • 12. HTTP MEDIA FORMATS  JSON  XML  Form Data  Image  Others https://en.wikipedia.org/wiki/Internet_media_type
  • 13. JSON (JAVASCRIPT OBJECT NOTATION)  Open standard  Text Based format  Lightweight than XML  Human readable  Derived from JavaScript object  ContentType = application/json  Extension *.json
  • 14. JSON (JAVASCRIPT OBJECT NOTATION)  JavaScript object  JSON var customer = { fullname : “PeeMark PraKhaNhong”, age : 500 , contacts : [ { mobileno: “025329000”, email : “[email protected]” } ] } { “fullname” : “PeeMark PraKhaNhong”, “age” : 500 , “contacts” : [ { “mobileno”: “025329000”, “email” : “[email protected]” } ] }
  • 15. XML (EXTENSIBLE MARKUP LANGUAGE)  Unicode Support  Human and Machine Readable  Markup language like HTML <name>…</name>  ContentType = text/xml, application/xml  text/xml if not specified encode will use ASCII is default  application/xml used encode in document <Person> <FullName>PeeMark PraKhaNhong</FullName> <Age>500</Age> <Contacts> <Contact MobileNo=“025329000” Email= “[email protected]” ></Contact> </Contacts> </Person>
  • 16. FORM DATA  Content-Type : application/x-www-form-urlencoded  Send by Form Submit  Format as Url Encode Encoded : FullName=PeeMark%20PraKhaNhong&Age=500&MobileNo=025329000&Email=mark%40gmail.com Decoded: FullName=PeeMark PraKhaNhong&Age=500&MobileNo=025329000&[email protected]
  • 18. WHAT’S ASP.NET WEB API  HTTP Service  Service based on HTTP Protocol  GET, POST, PUT, DELETE  No Proxy Class for client  Support Data Format : Form Data, JSON, XML and Custom  Support all clients are based on HTTP  Combine ASP.NET
  • 19. WHY ASP.NET WEB API?  If we need aWeb Service and don’t need SOAP, then ASP.NetWeb API is very useful.  Web API - Used to build simple, non-SOAP-based HTTP Services on top of existingWCF message pipeline.  Web API - No need for configurable likeWCF REST services  Web API - No need for Data contracts  Web API - Could create fully blown REST Services  Simple service creation withWeb API.  Web API is focused at one thing, being easy to define and expose and consume, while also facilitating doing things in a RESTful way.  Web API is light weight architecture.
  • 21. WEB SERVICETECHNOLOGY COMPARISON Abilities ASP.NETWEB API WCF Transport Channel HTTP(s) TCP, UDP, MSMQ, NamedPipes, HTTP(s), Custom Protocol HTTP WS-* Types CLRTypes DataContract Message format Text (xml, json) SOAP+XML Service Interface HttpMethod, UrlPattern Service Contract State management Stateless Stateless with per call Cache Built-n to HTTP Prefer application control Handled by application Error Handling Exceptions, HTTP Status codes filters Faults, Behaviors Hosting IIS, Self Host IIS, Self Host Client IApiExplorer Shared Libraries ProxyClass Shared Libraries
  • 22. WCF => ASP.NET WEB API WCFWebAPI ASP.NET WebAPI Service => Web API controller Operation => Action Service contract => n/a Endpoint => n/a URITemplate => ASP.NET Routing Message handlers => Same Formatters => Same Operation handlers => Filters, model binders
  • 23. LAB1 BASIC ASP.NET WEB API ASP.NETWEBAPI
  • 25. HTTP METHODS  Test the API from JavaScript client
  • 26. HTTP MESSAGE  Request :  HttpRequestMessage : represent for http request message information  Response  HttpResponseMessage : return data and managed http header information  Object/Value : return data and when error will throw the exception.  HttpResponseException : Http response message with 404(default)
  • 27. HTTP MESSAGE  Open fiddler and click ComposerTab  1. GET http://localhost:7415/api/HttpMessages and Execute  2. route to GetAll() action  3.Test other method Get/Id, Post, Put, Delete
  • 28. ROUTE  Like MVC App  Default route is api/{controller}/{id}  Add action to route like a MVC App api/{controller}/{action}/{id}  Force Action name with [ActionName(“name”)] to support {action}
  • 30. PIPELINE PROCESS  Message Handler is pre-post processing for Http Request and Response  Changing the request HTTP method  Adding a response header  Logging,Tracing
  • 32. LAB3 FORMATTER AND MODEL BINDING ASP.NETWEBAPI
  • 33. FORMATTER AND MODEL BINDING  URI => ModelBinder, ValueBinder  Entity-Body => Formatter  URI, HEADER, Entity-body => custom format
  • 38. ODATA OPTION QUERY Option Description $filter Filters the results, based on a Boolean condition. $inlinecount Tells the server to include the total count of matching entities in the response. (Useful for server-side paging.) $orderby Sorts the results. $skip Skips the first n results. $top Returns only the first n the results.
  • 39. ODATA QUERYTEST  http://localhost:24556/api/meetings  http://localhost:24556/api/meetings?$filter=Leader%20eq%20%27Mark%20Nich ols%27  (Leader eq ‘Mark Nichols’)  http://localhost:24556/api/meetings?$top=2  http://localhost:24556/api/meetings?$filter=MeetingDate%20eq%20datetime%2 72013-01-17%27 MeetingDate eq datetime’2013-01-17′
  • 42. ASYNC INWEB API  async = Asynchronous in easy way  async requires await  async support in .NET 4.5 only  .NET 4.5 provides a lot of new asynchronous methods
  • 45. AUTHENTICATION SECURITY  SSL  All of IIS authentications  OAuth2.0  OpenID  Certificate’s Client Request  FormAuthentication
  • 46. BASIC AUTHENTICATION SECURITY  Easy solution for internet application  SSL + BasicAuthentication + ASP.NET MembershipProvider  Pros  Easy  Cons  Username/Password encode to based 64
  • 51. MESSAGE COMPRESSION  You can enable this feature in IIS7 or later
  • 52. HI-PERFORMANCE JAVASCRIPT SERIALIZER  ServiceStack.Text is best of faster javascriptserializer  Create our new Custom Json Formatter and replace old
  • 54. CONCLUSION  New way for WEB Service based on HTTP  Best the way for HTTP Service  Support all of the HTTP Clients  Extensibility, we able to customize all of the modules  Closely with ASP.NET MVC  It’s OPENSOURCE http://aspnetwebstack.codeplex.com/  Official site http://www.asp.net/web-api
  • 56. REAL WORLD IMPLEMENTATION BY CASE STUDY ASP.NETWEB API Advanced course II soon…