Vous êtes sur la page 1sur 38

ASP.

NET Web API : (Application Programming Interface)

IOTs Internet of things (The devices which all having IP


address and using Internet eg, Security devices , Swipe
machines)

Part 2: Creating a WEB API project


Visual Studio 2015 -> New -> Project -> ASP.net web
application -> Web Api
There are 2 ways to clear the existing errors:
Step 1: Close all the visual studio instances
Step 2: Launch windows PowerShell
Step 3: Start -> All Apps -> Windows power shell
->Windows PowerShell -> right click and run at
administrator -> press R ->

Step 4: Launch the package manager console


Tools-> Nuget packages -> Package manager console
-> press R
ValuesController.cs is the web api controller which is
present in the controller folder
Values controller inherits from Web api controller which is
present in the System.Web.HTTP namespace
Config class is present in the Global.asax and the register
method is

WebApiConfig class present in the App_Start folder which


is contain the default register class and the default
Routes

Part 3: HTTP GET PUT POST and DELETE


Part 4: ASP.net web api and sql server and Part 5:

Part 6: Removing the formatters:


Part 7: Post method
GET Method

Part 8: Delete method

Part 9: PUT method


Part 10: Custom method names in webapi

Part 11: Query string parameter

Part 12: FromBody and FromURI


Part 13: Call ASP.NET WEBAPI from JQuery

Part 13: Cross Domain in JQuery


Write below code in Webapiconfig file

Part 15: Cross origin resource sharing


Enable and disable CORS in specific controller and
method

Part 16: Enable SSL in visual studio development server

Part 17: ASP.NET enable HTTPS


Inherited from AutherizationFilterAttribute class which is
derived from system.web.Http.Filters

Register in webapiconfig

Part 18: Basic Authentication


Part 19: Basic Authentication from Jquery
Part 20 & 21: ASP.net Web API token authentication

Adding bootstrap references:

Bootstrap references:
Part 22 Using asp net identity with Web API
Part 23:

Solution Explorer Startup.Auth.cs

Provider ApplicationOAuthProvider
GrandResourceOwnerCredentials
Token validation is 1 hour

Part 24 ASP NET Web API login page


Storing the token in session

Part 25:
Part 26 ASP NET Web API logout

Part 27 How to get authenticated user identity name in


asp net web api

What is ASP.NET Web API?

ASP.NET Web API is a framework that simplifies building


HTTP services for broader range of clients (including
browsers as well as mobile devices) on top of .NET
Framework.
Using ASP.NET Web API, we can create non-SOAP based
services like plain XML or JSON strings, etc. with many
other advantages including:

Create resource-oriented services using the full


features of HTTP
Exposing services to a variety of clients easily like
browsers or mobile devices, etc.

What are the Advantages of Using ASP.NET Web


API?

It works the HTTP way using standard HTTP verbs


like GET, POST, PUT, DELETE, etc. for all CRUD operations
Complete support for routing
Response generated in JSON or XML format
using MediaTypeFormatter
It has the ability to be hosted in IIS as well as self-
host outside of IIS
Supports Model binding and Validation
Support for OData
and more....

What New Features are Introduced in ASP.NET Web


API 2.0?

Attribute Routing
External Authentication
CORS (Cross-Origin Resource Sharing)
OWIN (Open Web Interface for .NET) Self Hosting
IHttpActionResult
Web API OData

WCF Vs ASP.NET Web API?


Actually, Windows Communication Foundation is
designed to exchange standard SOAP-based messages
using variety of transport protocols like HTTP, TCP,
NamedPipes or MSMQ, etc.

On the other hand, ASP.NET API is a framework for


building non-SOAP based services over HTTP only.

Is it True that ASP.NET Web API has Replaced WCF?

It's a misconception that ASP.NET Web API has replaced


WCF. It's another way of building non-SOAP based
services, for example, plain XML or JSON string, etc.

Yes, it has some added advantages like utilizing full


features of HTTP and reaching more clients such as
mobile devices, etc.

But WCF is still a good choice for following scenarios:

If we intended to use transport other than HTTP, e.g.


TCP, UDP or Named Pipes
Message Queuing scenario using MSMQ
One-way communication or Duplex communication

MVC Vs ASP.NET Web API?

As in previous ASP.NET Web API Interview Questions, we


discussed that the purpose of Web API framework is to
generate HTTP services that reach more clients by
generating data in raw format, for example, plain XML or
JSON string. So, ASP.NET Web API creates simple HTTP
services that renders raw data.
On the other hand, ASP.NET MVC framework is used to
develop web applications that generates Views as well as
data. ASP.NET MVC facilitates in rendering HTML easy.

How to Return View from ASP.NET Web API


Method?

(A tricky Interview question) No, we can't return view


from ASP.NET Web API method. We discussed in the
earlier interview question about the difference between
ASP.NET MVC and Web API that ASP.NET Web API creates
HTTP services that renders raw data. Although, it's quite
possible in ASP.NET MVC application.

How to Restrict Access to Web API Method to


Specific HTTP Verb?

Attribute programming plays its role here. We can easily


restrict access to an ASP.NET Web API method to be
called using a specific HTTP method. For example, we
may require in a scenario to restrict access to a Web API
method through HTTP POST only as follows:

Hide Copy Code


[HttpPost]
public void UpdateStudent(Student aStudent)
{
StudentRepository.AddStudent(aStudent);
}

Can we use Web API with ASP.NET Web Form?

Yes, ASP.NET Web API is bundled with ASP.NET MVC


framework but still it can be used with ASP.NET Web
Form.
1. Create a Web API Controller
2. Add a routing table to Application_Start method
of Global.asax
3. Make a jQuery AJAX Call to Web API method and get
data

jQuery call to Web API for all CRUD (Create, Retrieve,


Update, Delete) operations can be found here.

How Can We Provide an Alias Name for ASP.NET


Web API Action?

We can provide an alias name for ASP.NET Web API action


same as in case of ASP.NET MVC by using "ActionName"
attribute as follows:

Hide Copy Code


[HttpPost]
[ActionName("SaveStudentInfo")]
public void UpdateStudent(Student aStudent)
{
StudentRepository.AddStudent(aStudent);
}

In this ASP.NET Tutorial, we covered the most important


Interview questions on ASP.NET Web API framework.
Hopefully, it will be helpful for Web API developer
Interview but along with these questions, do the practical
implementation as much as you can. In Practical guide
to ASP.NET Web API, you can find a good step by step
approach for understanding and implementing ASP.NET
Web API services.

1) What is Web API?


It is a framework which helps us to build/develop HTTP services.
So there will a client server communication using HTTP protocol.

2) What is Representational state transfer or REST?

REST is architectural style, which has defined guidelines for


creating services which are scalable. REST used with HTTP
protocol using its verbs GET, POST, PUT and DELETE.

3) Explain Web API Routing?

Routing is the mechanism of pattern matching as we have in


MVC. These routes will get registered in Route Tables. Below is
the sample route in Web API

Routes.MapHttpRoute(

Name: "MyFirstWebAPIRoute",

routeTemplate: api/{controller}/{id}

defaults: new { id = RouteParameter.Optional}

};

4) List out the differences between WCF and Web API?

WCF

It is framework build for building or developing service


oriented applications.
WCF can be consumed by clients which can understand
XML.
WCF supports protocols like HTTP, TCP, Named Pipes etc.
Web API

It is a framework which helps us to build/develop HTTP


services
Web API is an open source platform.
It supports most of the MVC features which keep Web API
over WCF.

5) What are the advantages of using REST in Web API?

REST always used to make less data transfers between client


and server which makes REST an ideal for using it in mobile
apps. Web API supports HTTP protocol thereby it reintroduces
the old way of HTTP verbs for communication.

6) Difference between WCF Rest and Web API?

WCF Rest

WebHttpBinding to be enabled for WCF Rest.


For each method there has to be attributes like WebGet
and WebInvoke
For GET and POST verbs respectively.

Web API

Unlike WCF Rest we can use full features of HTTP in Web


API.
Web API can be hosted in IIS or in application.

7) List out differences between MVC and Web API?

Below are some of the differences between MVC and Web API
MVC

MVC is used to create a web app, in which we can build web


pages.
For JSON it will return JSONResult from action method.
All requests are mapped to the respective action methods.

Web API

This is used to create a service using HTTP verbs.


This returns XML or JSON to client.
All requests are mapped to actions using HTTP verbs.

8) What are the advantages of Web API?

OData
Filters
Content Negotiation
Self Hosting
Routing
Model Bindings

9) Can we unit test Web API?

Yes we can unit test Web API.

10) How to unit test Web API?

We can unit test the Web API using Fiddler tool. Below are the
settings to be done in Fiddler
Compose Tab -> Enter Request Headers -> Enter the Request
Body and execute

11) Can we return view from Web API?

No. We cannot return view from Web API.

12) How we can restrict access to methods with specific


HTTP verbs in Web API?

Attribute programming is used for this functionality. Web API will


support to restrict access of calling methods with specific HTTP
verbs. We can define HTTP verbs as attribute over method as
shown below

[HttpPost]

public void UpdateTestCustomer(Customer c)

TestCustomerRepository.AddCustomer(c);

}13) Can we use Web API with ASP.NET Web Forms?

Yes. We can use Web API with ASP.NET Webforms.

14) List out the steps to be made for Web API to work in Web
Forms?

Creating new controller for Web API.


Adding routing table to Application_Start method
in Global.asax
Make a AJAX call to Web API actions.
15) Explain how to give alias name for action methods in
Web API?

[HttpPost]

[ActionName("AliasTestAction")]

public void UpdateTestCustomer(Customer c)

TestCustomerRepository.AddCustomer(c);

16) What is the difference between MVC Routing and Web


API Routing?

There should be atleast one route defined for MVC and Web API
to run MVC and Web API application respectively. In Web API
pattern we can find api/ at the beginning which makes it distinct
from MVC routing. In Web API routing action parameter is not
mandatory but it can be a part of routing.

17) Explain Exception Filters?

Exception filters will be executed whenever controller methods


(actions) throws an exception which is unhandled. Exception
filters will implement IExceptionFilter interface.

18) Explain about the new features added in Web API 2.0
version?

OWIN
Attribute Routing
External Authentication
Web API OData

19) How can we pass multiple complex types in Web API?

Using ArrayList
Newtonsoft JArray

20) Write a code snippet for passing arraylist in Web API?

ArrayList paramList = new ArrayList();


Category c = new Category { CategoryId = 1, CategoryName =
"SmartPhones"};
Product p = new Product { ProductId = 1, Name = "Iphone", Price
= 500, CategoryID = 1 };
paramList.Add(c);
paramList.Add(p);

21) Give an example of Web API Routing?

config.Routes.MapHttpRoute(

name: "MyRoute",//route name

routeTemplate: "api/{controller}/{action}/{id}",//as you can see

"api" is at the beginning.

defaults: new { id = RouteParameter.Optional }

);22) Give an example of MVC Routing?


routes.MapRoute(

name: "MyRoute", //route name

url: "{controller}/{action}/{id}", //route pattern

defaults: new

controller = "a4academicsController",

action = "a4academicsAction",

id = UrlParameter.Optional

);23) How we can handle errors in Web API?

HttpResponseException
Exception Filters
Registering Exception Filters
HttpError

24) Explain how we can handle error from


HttpResponseException?

public TestClass MyTestAction(int id)

TestClass c = repository.Get(id);
if (c == null)

throw new HttpResponseException(HttpStatusCode.NotFound);

} return c;

25) How to register Web API exception filters?

From Action
From Controller
Global registration

26) Write a code snippet to register exception filters from


action?

[NotImplExceptionFilter]

public TestCustomer GetMyTestCustomer(int custid)

//Your code goes here

27) Write a code snippet to register exception filters from


controller?
[NotImplExceptionFilter]
public class TestCustomerController : Controller
{
//Your code goes here
}

28) Write a code snippet to register exception filters


globally?

GlobalConfiguration.Configuration.Filters.Add( new

MyTestCustomerStore.NotImplExceptionFilterAttribute());

29) How to handle error using HttpError?

HttpError will be used to throw the error info in response body.


CreateErrorResponse method is used along with this, which is
an extension method defined in
HttpRequestMessageExtensions.

30) Write a code snippet to show how we can return 404 error
from HttpError?

Below is the code snippet for returning 404 error from HttpError

string message = string.Format("TestCustomer id = {0} not

found", customerid);

return Request.CreateErrorResponse(HttpStatusCode.NotFound,

message);

31) How to enable tracing in Web API?


To enable tracing place below code in Register method
of WebAPIConfig.cs file.
config.EnableSystemDiagnosticsTracing();

32) Explain how Web API tracing works?

Tracing in Web API done in faade pattern i.e, when tracing for
Web API is enabled, Web API will wrap different parts of request
pipeline with classes, which performs trace calls.

33) Can we unit test Web API?


Yes we can unit test Web API.
34) Explain Authentication in Web API?

Web API authentication will happen in host. In case of IIS it uses


Http Modules for authentication or we can write custom Http
Modules. When host is used for authentication it used to create
principal, which represent security context of the application.

35) Explain ASP.NET Identity?

One ASP.NET Identity System


Persistence Control

36) What are Authentication Filters in Web API?

Authentication Filter will let you set the authentication scheme for
actions or controllers. So this way our application can support
various authentication mechanisms.

37) How to set the Authentication filters in Web API?


Authentication filters can be applied at the controller or action
level. Decorate attribute "IdentityBasicAuthentication over
controller where we have to set the authentication filter.

38) Explain method AuthenticateAsync in Web API?

AuthenticateAsync method will create IPrincipal and will set


on request. Below is the sample code snippet for
AuthenticateAsync

Task AuthenticateAsync(HttpAuthenticationContext

mytestcontext,CancellationToken mytestcancellationToken)

39) How to set the Error Result in Web API?

HttpResponseMessage myresponse = new

HttpResponseMessage(HttpStatusCode.Unauthorized);

myresponse.RequestMessage = Request;

myresponse.ReasonPhrase = ReasonPhrase;

40) Explain method ChallengeAsync in Web API?

ChallengeAsync method is used to add authentication


challenges to response. Below is the method signature

Task ChallengeAsync( HttpAuthenticationChallengeContext

mytestcontext,CancellationToken mytestcancellationToken)
41) What are media types?

It is also called MIME, which is used to identify the data . In Html,


media types is used to describe message format in the body.

42) List out few media types of HTTP?

Image/Png
Text/HTML
Application/Json

43) Explain Media Formatters in Web API?

Media Formatters in Web API can be used to read the CLR object
from our HTTP body and Media formatters are also used for
writing CLR objects of message body of HTTP.

44) How to serialize read-only properties?

Read-Only properties can be serialized in Web API by setting the


value true to the property

SerializeReadOnlyTypes of class

DataContractSerializerSettings.

45) How to get Microsoft JSON date format ?

Use DateFormatHandling property in serializer settings as


below

var myjson =

GlobalConfiguration.Configuration.Formatters.JsonFormatter;
myjson.SerializerSettings.DateFormatHandling =

Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;

46) How to indent the JSON in web API?

Below is the code snippet to make JSON indenting


var mytestjson =

GlobalConfiguration.Configuration.Formatters.JsonFormatter;

mytestjson.SerializerSettings.Formatting =

Newtonsoft.Json.Formatting.Indented;

47) How to JSON serialize anonymous and weakly types


objects?

Using Newtonsoft.Json.Linq.JObject we can serialize and


deserialize weakly typed objects.

48) What is the use of IgnoreDataMember in Web API?

By default if the properties are public then those can be serialized


and deserialized, if we does not want to serialize the property
then decorate the property with this attribute.

49) How to write indented XML in Web API?

To write the indented xml set Indent property to true.

50) How to set Per-Type xml serializer?


We can use method SetSerializer. Below is the sample code
snippet for using it

var mytestxml =

GlobalConfiguration.Configuration.Formatters.XmlFormatter;

// Use XmlSerializer for instances of type "Product":

mytestxml.SetSerializer<Product>(new

XmlSerializer(typeof(MyTestCustomer)));

51) What is Under-Posting and Over-Posting in Web API?

Under-Posting - When client leaves out some of the


properties while binding then its called under posting.
Over-Posting If the client sends more data than expected
in binding then its called over-posting.

52) How to handle validation errors in Web API?

Web API will not return error to client automatically on validation


failure. So its controllers duty to check the model state and
response to that. We can create a custom action filter for handling
the same.

53) Give an example of creating custom action filter in Web


API?

Below is the sample code for creating custom action filter

public class MyCustomModelAttribute : ActionFilterAttribute

{
public override void OnActionExecuting(HttpActionContext

actionContext)

if (actionContext.ModelState.IsValid == false)

//Code goes here

In case validation fails here it returns HTTP response which


contains validation errors.

54) How to apply custom action filter in WebAPI.config?

Add a new action filter in Register method as shown -

public static class WebApiConfig

public static void Register(HttpConfiguration config)

config.Filters.Add(new MyCustomModelAttribute());
}

}55) How to set the custom action filter in action methods in

Web API?

public class MyCustomerTestController : ApiController

[MyCustomModelAttribute]

public HttpResponseMessage Post(MyTestCustomer customer)}

}56) What is BSON in Web API?

Its is a binary serialization format. BSON stands for Binary


JSON. BSON serializes objects to key-value pair as in JSON. Its
light weight and its fast in encode/decode.

57) How to enable BSON in server?

Add BsonMediaTypeFormatter in WebAPI.config as shown


below

public static class WebApiConfig

public static void Register(HttpConfiguration config)

{
config.Formatters.Add(new BsonMediaTypeFormatter());

// Other Web API configuration goes here

58) How parameter binding works in Web API?

If it is simple parameters like bool,int, double etc. then


value will be obtained from the URL.
Value read from message body in case of complex types.

59) Why to use FromUri in Web API?

In Web API to read complex types from URL we will use


FromUri attribute to the parameter in action method. Eg:

public MyValuesController : ApiController

public HttpResponseMessage Get([FromUri] MyCustomer c)

{ ... }

60) Why to use FromBody in Web API?


This attribute is used to force Web API to read the simple type
from message body. FromBody attribute is along with
parameter. Eg:

public HttpResponseMessage Post([FromBody] int customerid,

[FromBody] string customername) { ... }

61) Why to use IValueprovider interface in Web API?

This interface is used to implement custom value provider.

Vous aimerez peut-être aussi