Strategies for Landing an Oracle DBA Job as a Fresher
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
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
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= “mark@gmail.com” ></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=mark@gmail.com
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
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
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.
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
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