Chuyển tới nội dung
Home » Mvc And Web Api | Configure The Site To Use Mvc

Mvc And Web Api | Configure The Site To Use Mvc

What is the difference between Web API and MVC Controller?

Additional resources

This article shows how to start migrating an ASP.NET MVC project to ASP.NET Core MVC 2.1. In the process, it highlights many of the things that have changed from ASP.NET MVC. Migrating from ASP.NET MVC is a multi-step process. This article covers:

  • Initial setup
  • Basic controllers and views
  • Static content
  • Client-side dependencies.

For migrating configuration and Identity code, see Migrate configuration to ASP.NET Core and Migrate Authentication and Identity to ASP.NET Core.

Note

The version numbers in the samples might not be current, update the projects accordingly.

Solve HTTP 500 errors

There are many problems that can cause an HTTP 500 error messages that contain no information on the source of the problem. For example, if the

Views/_ViewImports.cshtml

file contains a namespace that doesn’t exist in the project, a HTTP 500 error is generated. By default in ASP.NET Core apps, the

UseDeveloperExceptionPage

extension is added to the

IApplicationBuilder

and executed when the configuration is Development. See an example in the following code:


public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }

ASP.NET Core converts unhandled exceptions into HTTP 500 error responses. Normally, error details aren’t included in these responses to prevent disclosure of potentially sensitive information about the server. For more information, see Developer Exception Page.

What is the difference between Web API and MVC Controller?
What is the difference between Web API and MVC Controller?

Static content

In ASP.NET MVC 5 and earlier, static content was hosted from the root of the web project and was intermixed with server-side files. In ASP.NET Core, static content is hosted in the wwwroot directory. Copy the static content from the ASP.NET MVC app to the wwwroot directory in the ASP.NET Core project. In this sample conversion:

  • Copy the favicon.ico file from the ASP.NET MVC project to the wwwroot directory in the ASP.NET Core project.

The ASP.NET MVC project uses Bootstrap for its styling and stores the Bootstrap files in the Content and Scripts directories. The template, which generated the ASP.NET MVC project, references Bootstrap in the layout file (

Views/Shared/_Layout.cshtml

). The

bootstrap.js

and

bootstrap.css

files could be copied from the ASP.NET MVC project to the wwwroot directory in the new project. Instead, this document adds support for Bootstrap (and other client-side libraries) using CDNs, in the next section.

Create the ASP.NET Core project

Create a new empty ASP.NET Core web app with the same name as the previous project (WebApp1) so the namespaces in the two projects match. Having the same namespace makes it easier to copy code between the two projects. Create this project in a different directory than the previous project to use the same name.

  • Optional: Create a new ASP.NET Core app using the Web Application project template. Name the project WebApp1, and select an authentication option of Individual User Accounts. Rename this app to FullAspNetCore. Creating this project saves time in the conversion. The end result can be viewed in the template-generated code, code can be copied to the conversion project, or compared with the template-generated project.
How To Consume WEB API in ASP.NET Core MVC | ASP.NET Web API | Read Data
How To Consume WEB API in ASP.NET Core MVC | ASP.NET Web API | Read Data

Difference between ASP.NET MVC and ASP.NET Web API: An Overview

While developing your web application using MVC, many developers get confused about when to use Web API, since the MVC framework can also return JSON data using JsonResult and handle simple AJAX requests. Understanding this distinction is essential, especially in ASP.NET Core training. In the previous article, I have explained the Difference between WCF and Web API and WCF REST and Web Service and when to use Web API over other services. In this Web API Tutorial, you will learn when to use Web API with MVC.

Create the starter ASP.NET MVC project

To demonstrate the upgrade, we’ll start by creating an ASP.NET MVC app. Create it with the name WebApp1 so the namespace matches the ASP.NET Core project created in the next step.

Optional: Change the name of the Solution from WebApp1 to Mvc5. Visual Studio displays the new solution name (Mvc5), which makes it easier to tell this project from the next project.

(#70) Web API in MVC 5 project | mvc tutorial for beginners in .net c# | MVC By Nitish
(#70) Web API in MVC 5 project | mvc tutorial for beginners in .net c# | MVC By Nitish

Difference between MVC and Web API

There are many differences between MVC and Web API, including:

  • We can use the MVC for developing the Web application that replies as both data and views but the Web API is used for generating the HTTP services that replies only as data.
  • In the Web API the request performs tracing with the actions depending on the HTTP services but the MVC request performs tracing with the action name.
  • The Web API returns the data in various formats, such as JSON, XML and other format based on the accept header of the request. But the MVC returns the data in the JSON format by using JSONResult.
  • The Web API supports content negotiation, self hosting. All these are not supported by the MVC.
  • The Web API includes the various features of the MVC, such as routing, model binding but these features are different and are defined in the “System.Web.Http” assembly. And the MVC features are defined in the ” System.Web.Mvc” assembly.
  • The Web API helps the creation of RESTful services over the .Net Framework but the MVC does not support.

When we combined the MVC with Web API:

  • When we do the self hosting on the application, in it we combine both the MVC controller and the API in a single project and it helps for managing the AJAX requests and returns the response in XML, JSON and other Formats.
  • We combined the MVC and Web API for enabling the authorization for an application. In it we create two filters, one for the Web API and another for MVC.

This figure describes the combination of ASP.NET MVC and ASP.NET Web API.

18

feb.

Difference between ASP.NET MVC and ASP.NET Web API

Controllers and views

  • Copy each of the methods from the ASP.NET MVC


    HomeController

    to the new

    HomeController

    . In ASP.NET MVC, the built-in template’s controller action method return type is ActionResult; in ASP.NET Core MVC, the action methods return

    IActionResult

    instead.

    ActionResult

    implements

    IActionResult

    , so there’s no need to change the return type of the action methods.

  • Copy the


    About.cshtml

    ,

    Contact.cshtml

    , and

    Index.cshtml

    Razor view files from the ASP.NET MVC project to the ASP.NET Core project.

Full CRUD Operations | How To Consume WEB API in ASP.NET Core MVC | Consuming Web API
Full CRUD Operations | How To Consume WEB API in ASP.NET Core MVC | Consuming Web API

Overview of the Web API

The ASP.NET Web API allows for displaying the data in various formats, such as XML and JSON. It is a framework that uses the HTTP services and makes it easy to provide the response to the client request. The response depends on the request of the clients. The web API builds the HTTP services and manages the request using the HTTP protocols. The Web API is an open source and it can be hosted in the application or on the IIS .The request may be GET, POST, DELETE or PUT. We can say that the Web API:

  • Is an HTTP service.
  • Is designed for reaching the broad range of clients.
  • Uses the HTTP application.

Add a controller and view

In this section, a minimal controller and view are added to serve as placeholders for the ASP.NET MVC controller and views migrated in the next section.

  • Add a Controllers directory.

  • Add a Controller Class named


    HomeController.cs

    to the Controllers directory.

  • Add a Views directory.

  • Add a Views/Home directory.

  • Add a Razor View named


    Index.cshtml

    to the Views/Home directory.

The project structure is shown below:

Replace the contents of the

Views/Home/Index.cshtml

file with the following markup:

Hello world!

Run the app.

For more information, see Controllers and Views.

The following functionality requires migration from the example ASP.NET MVC project to the ASP.NET Core project:

  • client-side content (CSS, fonts, and scripts)

  • controllers

  • views

  • models

  • bundling

  • filters

  • Log in/out, Identity (This is done in the next tutorial.)

How To Consume WEB API in ASP.NET MVC
How To Consume WEB API in ASP.NET MVC

Configure the site to use MVC

  • When targeting .NET Core, the Microsoft.AspNetCore.App metapackage is referenced by default. This package contains packages commonly used by MVC apps. If targeting .NET Framework, package references must be listed individually in the project file.


Microsoft.AspNetCore.Mvc

is the ASP.NET Core MVC framework.

Microsoft.AspNetCore.StaticFiles

is the static file handler. ASP.NET Core apps explicitly opt in for middleware, such as for serving static files. For more information, see Static files.

  • Open the

    Startup.cs

    file and change the code to match the following:


public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }

The UseStaticFiles extension method adds the static file handler. The

UseMvc

extension method adds routing. For more information, see Application Startup and Routing.

Phản hồi

Gửi và xem ý kiến phản hồi dành cho

Nghiên cứu Web API với ASP.NET MVC4

Bài đăng này đã không được cập nhật trong 8 năm

ASP.NET Web API là 1 framework để xây dựng các dịch vụ HTTP có thể truy cập từ nhiều client như trình duyệt hay các thiết bị di động. Web API được giới thiệu là 1 phần của MVC4. Trong bài viết này tôi sẽ giới thiệu thiết kế, khái niệm, tính năng và so sánh Web API với WCF.

Thực thi 1 WEB API project

Hãy bắt đầu với việ tạo 1 project ví dụ về Web API. Bước đầu cần tạo 1 ASP.NET MVC 4 project dùng Web API template như hình sau:

Tiếp đó ta cần tạo 1 Model tên là Product với các thuộc tính như sau:

Sau khi tạo Product model ta có thể tạo API controller để xử lý Product model:

Tiếp đó ta tạo 1 số dữ liệu mẫu:


public class ProductsController : ApiController { List products = new List (); public IEnumerable GetAllProducts() { GetProducts(); return products; } private void GetProducts() { products.Add(new Product {Id = 1, Name = "Television", Category="Electronic", Price=82000}); products.Add(new Product { Id = 2, Name = "Refrigerator", Category = "Electronic", Price = 23000 }); products.Add(new Product { Id = 3, Name = "Mobiles", Category = "Electronic", Price = 20000 }); products.Add(new Product { Id = 4, Name = "Laptops", Category = "Electronic", Price = 45000 }); products.Add(new Product { Id = 5, Name = "iPads", Category = "Electronic", Price = 67000 }); products.Add(new Product { Id = 6, Name = "Toys", Category = "Gift Items", Price = 15000 }); } public IEnumerable GetProducts(int selectedId) { if (products.Count() > 0) { return products.Where(p => p.Id == selectedId); } else { GetProducts(); return products.Where(p => p.Id == selectedId); } }

Chạy project và thử truy cập API theo 2 url sau ta có thể thấy kết quả như mong đợi:

http://localhost:11715/api/products

http://localhost:11715/api/products?selectedID=2

Truyền những đối tượng phức tạp vào phương thức của Web API:

Hãy cùng thử 1 ví dụ nếu ta cần truyền 1 object tới phương thức của Web API như sau:


namespace WebApiProject.Controllers { public class SampleController : ApiController { public string GetTime(Time t) { return string.Format("Received Time: {0}:{1}.{2}", t.Hour, t.Minute, t.Second); } } public class Time { public int Hour { get; set; } public int Minute { get; set; } public int Second { get; set; } } }

Sau khi chạy thử project truyền vào các tham số Hour, Minute và Second. Ta có thể thấy nó sẽ trả về null exception.




An error has occurred.


Object reference not set to an instance of an object.


System.NullReferenceException


at WebApiProject.Controllers.SampleController.GetTime(Time t) in c:\Users\Trungx\Documents\Visual Studio 2013\Projects\WebApiProject\WebApiProject\Controllers\SampleController.cs:line 14 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.

b__9(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ApiControllerActionInvoker.

d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ActionFilterResult.

d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Dispatcher.HttpControllerDispatcher.

d__0.MoveNext()






Giờ hãy cùng xem sự thay đổi khi ta sửa lại code và thêm thuộc tính [FromUri] để xử lý object truyền vào từ query string:


public string GetTime([FromUri] Time t)

Kết quả:



Received Time: 10:25.12

Làm việc với HttpClient API:

Ta có thể gọi đến Web API bằng nhiều cách trong đó có cách sử dụng lớp HttpClient có sẵn của ASP.NET, đoạn code dưới đây giới thiệu cách tạo 1 HttpClient object và dùng nó để truy cập bất đồng bộ đến phương thức API:


// asynchronous accessing of web api method async Task GetData() { StringBuilder result = new StringBuilder(); // Define the httpClient object using (HttpClient client = new HttpClient()) { // Define the base address of the MVC application hosting the web api // accessing the web api from the same solution client.BaseAddress = new Uri(HttpContext.Current.Request.Url.AbsoluteUri); // Define the serialization used json/xml/ etc client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); // Call the method HttpResponseMessage response = client.GetAsync("api/products").Result; if (response.IsSuccessStatusCode) { // Convert the result into business object var products = response.Content.ReadAsAsync
>().Result; foreach (var p in products) { result.Append(string.Format("{0} --- [Price: {1} Category: {2}] ", p.Name, p.Price, p.Category)); } } else { result.Append(string.Format("Error Code:-{0} Error Details: {1}", (int)response.StatusCode, response.ReasonPhrase)); } } data.Text = result.ToString(); }

Truy cập Web API từ jQuery:

Việc truy cập Web API cũng rất dễ dàng với hàm getJSON:

Kết quả:


Television Electronic 82000 Refrigerator Electronic 23000 Mobiles Electronic 20000 Laptops Electronic 45000 iPads Electronic 67000 Toys Gift Items 15000

Để truyền tham số dùng jQuery ta thêm vào như sau:


$.getJSON("api/products", { selectedId: '4' }, function (data) { ….});

Các phương thức Serialization:

Web API hỗ trợ nhiều phương thức serialization bao gồm: XML, JSON và MessagePack. Trong phần này chúng ta sẽ tìm hiểu cách thực thi 3 phương thức này và so sách cách thể hiện của chúng. Để làm việc đó trước hết hãy sửa project ví dụ của chúng ta trả về 1 lượng dữ liệu để chúng ta hiểu và so sánh hiệu suất của 3 phương thức 1 cách tốt hơn.


private void GetProducts() { for (int i = 0; i < 5000; i++) { products.Add(new Product { Id = i, Name = "Product - "+i, Category = "The ASP.NET and Visual Web Developer teams have released the ASP.NET and Web Tools 2012.2 update, which extends the existing ASP.NET runtime and adds new web tooling to Visual Studio 2012. Whether you use Web Forms, MVC, Web API, or any other ASP.NET technology, there is something cool in this update for you.", Price = 1 }); } }

Mặc định Web API dùng JSON là phương thức serialization mặc định. Để dùng XML serialization ta cần chỉnh sửa trong Global.asax thêm vào 2 dòng sau:


GlobalConfiguration.Configuration.Formatters.RemoveAt(0); GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;

Với MessagePack serialization:

Để dùng phương thức này trước hết ta phải cài đặt MessagePack tại địa chỉ: http://msgpack.org/. Sau khi cài đặt hãy thêm reference thư viện: MsgPack.dll. Tiếp đó tạo 1 MediaTypeFormatter sử dụng MessagePack để serialize.


public class MediaTypeFormatterCompatibleMessagePack : MediaTypeFormatter { private readonly string _mime = "application/x-msgpack"; Func

IsAllowedType = (t) => { if (!t.IsAbstract && !t.IsInterface && t != null && !t.IsNotPublic) return true; if (typeof(IEnumerable).IsAssignableFrom(t)) return true; return false; }; public MediaTypeFormatterCompatibleMessagePack() { SupportedMediaTypes.Add(new MediaTypeHeaderValue(_mime)); } public override bool CanWriteType(Type type) { if (type == null) throw new ArgumentNullException("Type is null"); return IsAllowedType(type); } public override Task WriteToStreamAsync(Type type, object value, System.IO.Stream stream, HttpContent content, TransportContext transportContext) { if (type == null) throw new ArgumentNullException("type is null"); if (stream == null) throw new ArgumentNullException("Write stream is null"); var tcs = new TaskCompletionSource
(); if (type != typeof(string) && typeof(IEnumerable).IsAssignableFrom(type)) { value = (value as IEnumerable
).ToList(); } var serializer = MessagePackSerializer.Create

(); serializer.Pack(stream, value); tcs.SetResult(null); return tcs.Task; } public override Task
ReadFromStreamAsync(Type type,Stream stream, HttpContent content, IFormatterLogger formatterLogger) { var tcs = new TaskCompletionSource
(); if (content.Headers != null && content.Headers.ContentLength == 0) return null; try { var serializer = MessagePackSerializer.Create(type); object result; using (var mpUnpacker = Unpacker.Create(stream)) { mpUnpacker.Read(); result = serializer.UnpackFrom(mpUnpacker); } tcs.SetResult(result); } catch (Exception e) { if (formatterLogger == null) throw; formatterLogger.LogError(String.Empty, e.Message); tcs.SetResult(GetDefaultValueForType(type)); } return tcs.Task; } public override bool CanReadType(Type type) { if (type == null) throw new ArgumentNullException("type is null"); return IsAllowedType(type); } }



Tiếp đó ta cấu hình trong Global.asax tương tự như với phương thức XML:


GlobalConfiguration.Configuration.Formatters.Clear(); GlobalConfiguration.Configuration.Formatters.Add(new MediaTypeFormatterCompatibleMessagePack());

So sánh 3 phương thức ta thu được kết quả về khả năng nén dữ liệu: MessagePack > JSON > XML

WCF và Web API:

Tất nhiên WCF hỗ trợ rất nhiều giao thức trong đó có cả HTTP tuy nhiên để thực thi 1 service dựa trên HTTP bằng WCF khá khó khăn và phức tạp và không sử dụng được các tính năng chính của HTTP như Caching hay Status Code. Trong khi đó sử dụng WEB API ta có thể thực thi tất cả GET,POST,PUT,DELETE và đầy đủ các tính năng của HTTP 1 cách dễ dàng.

All rights reserved

Cổ phiếu top 2 mai tăng: VGS, TLH, DIG, DXG Cảnh giá vùng 1200 | Nhận định thị trường chứng khoán
Cổ phiếu top 2 mai tăng: VGS, TLH, DIG, DXG Cảnh giá vùng 1200 | Nhận định thị trường chứng khoán

Summary

MVC and Web API, while similar, serve distinct functions. MVC creates online applications with data and views, whereas online API generates data-driven HTTP services. Key distinctions include data output (Web API is data-only), request tracing, format flexibility (Web API includes JSON, XML, and others), and features such as content negotiation and self-hosting (exclusive to Web API). They can be coupled to create self-hosted apps with AJAX and many data formats.

ASP.NET MVC ControllerWeb API: Understanding the Key Differences

Amr Saafan

ASP.NET developers often face a common dilemma when building web applications: which should be employed; ASP.NET MVC controllers or Web API handling their application’s logic and serving of data. This blog post will examine distinct features of ASP.NET MVC Controllers vs. Web API; also, some C# code case studies.

ASP.NET MVC Controller:

The Model-View-Controller (MVC) framework in ASP.NET is perfect for creating web applications with intricate user interfaces. It is made to deal with visual rendering, user interactions, and state management for the application. MVC controllers are mostly responsible for HTML production and user interfaces.

This is a basic illustration of an action method for an ASP.NET MVC Controller:

public class ProductController : Controller { public ActionResult Details(int id) { // Retrieve product details from a data source var product = productService.GetProductById(id); // Render a view with product details return View(product); } }

In this example, the

ProductController

handles the rendering of product details on the web page.

Web API:

However, web APIs are meant for creating RESTful APIs which provide data of various forms including XML or JSON formats. It can be used to develop online applications, mobile app or web services which are meant to serve many users.

This is a simple illustration of a Web API controller:

public class ProductApiController : ApiController { [HttpGet] public IHttpActionResult GetProduct(int id) { // Retrieve product details from a data source var product = productService.GetProductById(id); if (product == null) { return NotFound(); } // Return product details in JSON format return Ok(product); } }

In this example, the

ProductApiController

serves product details as JSON data, making it suitable for client applications that consume this data via HTTP requests.

Key Differences:

  1. Use Case: ASP.NET MVC Controllers are used for building web applications with dynamic user interfaces, while Web API Controllers are used for exposing data and services over HTTP for various clients.
  2. Response Format: MVC Controllers typically return HTML views, while Web API Controllers return data in various formats, often in JSON or XML.
  3. Routing: MVC Controllers use conventional routing to handle requests based on URLs, while Web API Controllers use attribute-based routing for more fine-grained control.
  4. ActionResult: In MVC Controllers, you return

    ActionResult

    types for rendering views or handling various HTTP responses. In Web API Controllers, you return

    IHttpActionResult

    for HTTP-specific responses.
  5. View vs. Data: MVC Controllers are focused on generating views and managing the application’s user interface. Web API Controllers are focused on providing data and services.
Full Course - Learn ASP.NET Core MVC in .NET 8 | CRUD Operations | EntityFramework | MVC Tutorial
Full Course – Learn ASP.NET Core MVC in .NET 8 | CRUD Operations | EntityFramework | MVC Tutorial

Difference between MVC & Web APIs

MVC is used for developing Web applications that reply to both data and views

Web API is used for generating HTTP services that reply only as data.

When receiving the request, MVC performs tracing based on the action name.

When receiving the request, Web API performs tracing based on HTTP requests.

By using JSONResult, MVC returns the data in the JSON format

Depending on the accepted header of the request, The Web API returns data in JSON, XML, and different formats

“System.Web.MVC” assembly has all defined features of MVC.

“System.Web.Http” assembly has all features of MVC but does not have routing, and model binding which are exclusive to Web API.

MVC does not either support content negotiation or self-hosting.

Web API supports content negotiation, self-hosting

MVC controller is extremely heavy and we can see the number of interfaces the code uses.

Web API has a lighter controller and it can distinguish requests by their passed parameters

MVC controller cant support API views as it is tightly coupled with the views.

Web API can be hosted anywhere without worrying about the views.

Popular MVC Frameworks are Ruby on Rails, Django, CherryPy, Spring MVC, Catalyst, etc. Popular API Examples are Google Maps API, YouTube API, Twitter API, etc.

Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!

Looking for a place to share your ideas, learn, and connect? Our Community portal is just the spot! Come join us and see what all the buzz is about!

Last Updated :
08 Nov, 2023

Like Article

Save Article

Share your thoughts in the comments

Please Login to comment…

Nhận hoa hồng

API được ví như “cánh tay phải” đắc lực không thể thiếu đối với lập trình website và thiết kế các phần mềm ứng dụng di động. Nó có tác dụng liên kết các tính năng của web, app với các cơ sở dữ liệu; tăng tương tác tối đa giữa người dùng và ứng dụng. Bên cạnh đó, công cụ này còn có rất nhiều điều hấp dẫn khác, hãy cùng Mona Media khám phá về API trong bài viết hôm nay nhé!

API được viết tắt bởi cụm từ tiếng Anh Application Programming Interface, tức giao diện lập trình ứng dụng. Đây là phương tiện cho hai hoặc nhiều ứng dụng trao đổi, tương tác với nhau, tạo ra tương tác giữa người dùng với ứng dụng hiệu quả và tiện lợi hơn.

Với API, các lập trình viên có thể tiếp cận, truy xuất dữ liệu từ máy chủ thể hiện chúng trên ứng dụng phần mềm hoặc website của mình một cách dễ dàng hơn.

Bạn có thể hình dung như thế này: Giả sử bạn đang viết một phần mềm cho Windows 10 và bạn muốn phần mềm của mình có thể dễ dàng tương tác được với các tính năng hay dịch vụ của Windows như thay đổi hình nền, điều khiển con lăn, các thao tác liên quan tới giao diện người dùng hay thậm chí tính năng/ứng dụng cao cấp hơn. Tất cả điều đó đều có thể thực hiện được qua Windows API miễn phí dành cho Windows.

Tính tới nay, API đã phát triển với nhiều loại ứng dụng và phần mềm khác nhau. Thế hệ mới nhất của web/ app API có thể ứng dụng được ở mọi hệ thống từ cơ sở dữ liệu, hệ điều hành, hệ thống nền web, thư viện hay thậm chí là phần cứng máy tính.

Tìm hiểu về khái niệm của API trong lập trình.

Hiểu một cách đơn giản, API là giao diện cho phép ứng dụng này giao tiếp với các ứng dụng khác thông qua một hoặc nhiều câu lệnh khác nhau. Những lệnh này có thể được gửi, định dạng và truy xuất dữ liệu thông qua API khác với API SOAP hoặc REST, nhưng vẫn sẽ tuân thủ theo một số quy định và quy luật chung.

Giao diện API hoạt động bằng cách đặt lên trên các Server Side Scripts, Classes và Functions. Giao diện này sẽ thực hiện những tác vụ chi tiết hơn, cho phép các ứng dụng, tập lệnh bên ngoài và bên trong yêu cầu API thông báo cho máy chủ thực hiện một số tác vụ nhất định.

Ví dụ, khi người dùng đăng nhập vào ứng dụng, thông tin của người đó sẽ được ứng dụng thu thập. Về mặt API REST, người dùng sẽ có API endpoint theo dạng http://api.mysite.com/myuserid/details. Kế tiếp, ứng dụng sẽ tiến hành gọi endpoint thông qua cURL, AJAX bằng một phương thức cụ thể, tùy thuộc vào cách thức mà API được gọi.

Tên của một số phương thức API chính là các từ mô tả hành động của API. Một số hành động có thể xảy ra như:

API hiện có 2 chính sách bảo vệ cơ bản gồm:

Với loại thứ 1: ở đây các công ty tường sẽ chủ trương bảo vệ API và thu lời từ các nhà phát triển phần mềm thứ 3 đăng ký, xin phép họ. Họ thường là những công ty sản xuất thiết bị, game, công nghệ, ví dụ như Sony cùng hệ thống playstation.

Với loại thứ 2: họ là các công ty chuyên cung cấp các sản phẩm API miễn phí. Người dùng có thể thoải mái sử dụng API này để viết lên phần mềm bên thứ 3. Tuy nhiên, người dùng vẫn cần mua thêm phần mềm để sử dụng. Đây cũng chính là nguồn lợi của các nhà cung cấp API miễn phí, đồng thời vừa có thể đem tới hiệu quả lan tỏa và marketing mạnh mẽ hơn.

Điển hình cho loại thứ 2 đó là hệ sinh thái của Microsoft, Google hay Apple. Họ hầu như đều cung cấp các API miễn phí, đổi lại là các lập trình viên sẽ viết phần mềm hệ điều hành, người dùng phải mua của Window, Google để có thể sử dụng phần mềm đó. Đặc biệt trong đó, API của Google chính là ứng dụng trong hệ sinh thái giúp họ ngày càng phổ biến và dễ dàng tiếp cận mọi người khắp thế giới hơn.

Hiện nay, xu hướng người dùng chủ yếu thiên về loại thứ 2. Điều này khiến cho cá API miễn phí ngày càng trở nên phổ biến hơn, vận hành và có mặt ở mọi nơi trên internet và cuộc sống.

Mức độ phổ biến của công cụ này ngày càng tăng khi chúng được nâng cao về các tiêu chuẩn về sự thân thiện, đơn giản, dễ sử dụng. Không những thế, tiêu chuẩn về bảo mật cũng được nâng cấp, giúp giảm thiểu các rủi ro hoặc khai thác các lỗ hổng bảo mật tốt hơn. Mọi hoạt động của API đều được giám sát nên hiệu suất của chúng cũng được cải thiện tốt hơn.

Với sự phát triển của các thiết bị di động và ứng dụng đi kèm, API giờ đây cũng được nâng cấp nhằm thích nghi tốt hơn với các thiết bị di động. Thực tế cho thấy, hầu hết các ứng dụng nền web và ứng dụng di động tận dụng nhiều API hơn, tạo động lực tăng trưởng APi vượt bậc.

Trang Programmableweb cũng từng đánh giá, một trong những kho API miễn phí lớn nhất thế giới hiện nay có tới hơn 21.000 API được chia thành 450 mục khác nhau, bao phủ toàn bộ các lĩnh vực trong đời sống con người. Có thể thấy, API trở thành công cụ quan trọng giúp cho hỏa động vận hành hệ thống tốt hơn, trở thành chìa khóa thông minh, đồng bộ và tự động hóa đặc biệt của con người.

Phân loại API

Trên thực tế, nền tảng API bao gồm rất nhiều loại và được phân loại theo những cách dưới đây:

Nếu phân loại dựa trên các phân ngành nhỏ trong ngành công nghệ thông tin thì có các loại API sau:

Phân loại API dựa trên quyền hạn truy cập bao gồm 3 loại:

SQL Injection hay Injection là một lỗi nghiêm trọng khá thường gặp. Những kẻ tấn công mạng sẽ lợi dụng một số lỗ hổng của quy trình kiểm tra dữ liệu trong ứng dụng web để chuyển đến hệ thống quản lý cơ sở dữ liệu. Bằng cách này, chúng sẽ khai thác được các thông tin nhạy cảm. Để khắc phục vấn đề này, bạn cần ràng buộc kỹ dữ liệu mà người dùng nhập vào. Hướng khắc phục phổ biến nhất để thực hiện là dùng Regular Expression để loại bỏ các ký tự lạ, ký tự không phải số. Ngoài ra, người dùng cũng có thể dùng một số hàm sẵn có để giảm thiểu nguy cơ gặp lỗi.

Các request ở chế độ công khai thường dễ gặp phải tình trạng spam. Chẳng hạn những trường hợp mà người dùng chỉ cần nhập tên và password để đăng ký tài khoản, có thể có hoặc không có bước xác thực. Cách khắc phục đơn giản nhất là làm những request của bạn trở nên phức tạp hơn. Bạn có thể thêm một số yêu cầu, câu hỏi bảo mật hoặc yêu cầu người dùng chờ một lúc trước khi thực hiện những thao tác tiếp theo,… Cách này sẽ giúp đảm bảo an toàn bảo mật và giảm thiểu được tình trạng spam.

Ngoài xác thực người sử dụng cuối cùng, bạn cũng cần chú ý đến quá trình xác thực ứng dụng. Vì nếu bạn đang sử dụng ứng dụng AirBnB, Uber, các ứng dụng này sẽ thực hiện quy trình gọi các API của chúng. Nhờ đó, ứng dụng sẽ được xác thực một cách đầy đủ hơn.

Sử dụng chứng chỉ SSL là giải pháp đơn giản nhất để bạn làm được việc này. Giúp bạn dễ dàng mã hóa được các dữ liệu quan trọng để ngăn chặn tình trạng bị tấn công, bị đánh cắp dữ liệu trong quá trình truyền tải.

Vì lười biếng, nhiều người dùng thường lựa chọn mật khẩu cố định rất dễ đoán. Thậm chí họ còn sử dụng mật khẩu, thông tin được lưu cục bộ trên nhiều ứng dụng di động. Điều này cần được giải quyết triệt để nếu như bạn không muốn thông tin của mình bị đánh cắp.

Chữ ký số là chuỗi ký tự duy nhất, tượng trưng cho một người dùng. Nó giúp bạn dễ dàng lưu trữ các chuỗi này trong cơ sở dữ liệu, và chỉ cung cấp nếu người sử dụng nhập đúng tên, mật khẩu phù hợp. Đây là một giải pháp đơn giản để kiểm tra và tăng tính bảo mật cho API.

Web API là công nghệ mới nhất, tân tiến và đột phá nhất hiện nay. Nó vẫn tuân thủ các tiêu chuẩn của một API phổ biến, kèm theo là những ưu điểm mới vượt trội hơn công nghệ cũ.

Tìm hiểu về Rest API – Hình mẫu quy định cách ứng dụng giao tiếp.

REST được viết tắt bởi Representational State Transfer, là cấu trúc mẫu quy định các ứng dụng giao tiếp và tương tác với nhau. Nó bao gồm 3 bộ phận cơ bản như: bộ máy chủ ngoài chứa dữ liệu (external server), máy chủ API và máy chủ khách (client). Trong đó, máy khách có thể là bất cứ thứ gì, ứng dụng trên nền web, thư viện hoặc thậm chí là các phần mềm khác nhau của một phần mềm máy tính.

REST cho phép các máy khách truy cập máy chủ API và thực hiện các lệnh lấy về, chỉnh sửa hay xóa dữ liệu từ external server. Các lập trình viên có thể thoải mái truy xuất, chỉnh sửa dữ liệu từ máy chủ mà không cần biết hệ thống hoạt động như thế nào.

Giao thức chính của REST sử dụng là HTTP, một giao thức phổ biến với hầu hết các ứng dụng hay dịch vụ web hiện nay. Nó đem tới hiệu quả nhanh chóng trong bối cảnh đường truyền mạnh mẽ và khiến cho REST kiến trúc tốc độ nhanh hơn.

Ngoài ra, REST cũng có ưu điểm khi sử dụng giao thức stateless (không trạng thái). Hệ thống này không sử dụng session, cookie, không cần biết những thông tin đó trong mỗi lần request đến máy chủ ngoài. Điều này giúp REST giảm tải cho máy chủ ngoài, nâng cao hiệu suất làm việc.

REST ban đầu được thiết kế để sử dụng cho các dịch vụ web. Tuy nhiên, bất cứ phần mềm nào cũng có thể ứng dụng REST làm cầu nối giao tiếp với các ứng dụng khác tốt và hiệu quả hơn. Đó cũng là lý do giúp cho REST trở thành tiêu chuẩn mặc định cho hầu hết các giao thức. Và những API được thiết kế theo cấu trúc REST được gọi là RESTful API.

CRUB bao gồm: Create, Read, Update, Delete. Đây là 4 chức năng cơ bản của bất kỳ cơ sở dữ liệu nào. REST và RESTful cũng không ngoại lệ. Cá kiến trúc này đều hỗ trợ đầy đủ 4 lệnh, giúp bạn có thể thao tác với dữ liệu lấy từ máy chủ dễ dàng hơn.

Một số lệnh cơ bản của Rest API trong lập trình.

Trong REST, 4 lệnh có tên gọi hơi khác một chút:

Trong đs, Get được đánh giá là lệnh an toàn và phổ biến nhất, được cho phép bởi hầu hết các Restful API hiện nay. 3 lệnh còn lại ít nhiều làm theo đổi các dữ liệu gốc máy chủ, có nguy cơ dẫn tới tai nạn ngoài ý muốn. Cho nên, chỉ những API được thiết kế riêng hay được cấp thẩm quyền như API đối tác, Admin mới được thực hiện các lệnh đó.

Web API hay ASP.NET Web API là một framework dùng để xây dựng và lập trình các dịch vụ web HTTP. Nó có dạng là một RESTful API hiện đại, hội tụ đủ các điều kiện của REST cũng như các tiêu chuẩn tương tự, được tối ưu cho các dịch vụ trực tuyến cũng như ứng dụng web hiện nay. Web API sở hữu những ưu điểm vượt trội mà một API cũ có cùng nhiều ưu điểm mới tuyệt vời, giúp nó nhận được nhiều sự tin tưởng từ các nhà phát triển và lập trình website.

Web API và ứng dụng trong thiết kế website hiện nay.

Từ những phân tích trên có thể thấy, Web APi cung cấp những tính năng, cải thiện hiệu suất làm việc website cực tốt. Thay vì sử dụng các trang tĩnh với nội dung cứng nhắc, website hiện đại ngày nay có thể ứng dụng Web API để cung cấp nội dung linh hoạt với tính cá nhân hóa cao hơn.

Một số ứng dụng Web API trong lĩnh vực thiết kế và lập trình website nổi bật như:

Công cụ tìm kiếm (search engine – SE) là một bộ phận cơ bản của các trang web. Nhưng nếu bạn sử dụng chức năng tìm kiếm thông thường, người dùng có thể sẽ khó mà tìm được những thông tin mong muốn khi số lượng nội dung quá phức tạp, đồ sộ hay tìm kiếm một nội dung đặc thù nào đó.

Ví dụ: nếu website nấu ăn hẳn sẽ thường được tìm kiếm về các công thức, thông tin dinh dưỡng,… Không những thế, khi cần thiết họ sẽ tìm kiếm về cả các món ăn ít chất béo, dành cho trẻ em hay bà bầu, các thành phần có thể gây dị ứng, nấu trong bao lâu là đủ,… Rất nhiều điều được quan tâm tìm kiếm.

Khi đó, website đòi hỏi phải có một API sử dụng SE mạnh mẽ, phổ biến hỗ trợ người dùng tìm kiếm được thông tin chính xác nhất. Điều này không chỉ nâng cao trải nghiệm người dùng mà còn góp phần giúp đem tới cái nhìn tích cực hơn từ người dùng.

Các kênh mạng xã hội như Zalo, Facebook,… đang trở thành những thị trường lớn, nơi thu hút và sở hữu đông đảo người dùng trên toàn thế giới. Hầu hết các website hiện đại đều tích hợp với các nền tảng mạng xã hội.

Chúng ta có thể dễ dàng thấy điều này khi kéo xuống cuối trang web, bên sườn giao diện website hay dưới mỗi bài viết. Một số trang web còn sử dụng cả khung bình luận, nút like, theo dõi hay share Fanpage cho các bài viết hay cuộc thảo luận dưới bài viết. Người xem có thể dùng chính tài khoản mạng xã hội của mình để đăng nhập và tương tác. Rất tiện lợi và nhanh chóng.

Muốn làm được điều đó thì các lập trình và thiết kế website cần sử dụng API của nền tảng mạng xã hội nhúng các chức năng mạng xã hội này vào trang web của mình. Thông qua API, website và mạng xã hội có thể trao đổi dữ liệu qua lại dễ dàng hơn. Người dùng cũng không cần thoát website mà vẫn có thể tương tác với cả ứng dụng mạng xã hội một cách bình thường và thoải mái.

Không chỉ cải thiện trải nghiệm người dùng, API còn là công cụ quan trọng hỗ trợ công việc của các lập trình viên. Nhất là trong việc xây dựng hệ thống hạ tầng website, thiết kế website bán hàng trên nền tảng shopify (nền tảng bán hàng online đầy đủ chức năng của trang Thương mại điện tử).

Chỉ cần sử dụng API của Shopify, gắn vào các nút, thành phần website, trang web của bạn sẽ có những chức năng điển hình mà một web thương mại điện tử cần có. Điều này rút ngắn được quá trình xây dựng nhưng vẫn đảm bảo đầy đủ các tính năng cần thiết cho một website bán hàng online.

Mỗi khi bạn sử dụng một ứng dụng chẳng hạn Facebook, gửi tin nhắn tức thì hoặc kiểm tra thời tiết trên điện thoại của mình tức là bạn đang sử dụng một API.

Các API là cần thiết để có thể kết hợp các ứng dụng lại với nhau để thực hiện một chức năng được thiết kế được xây dựng xung quanh việc chia sẻ dữ liệu và thực thi những quy trình được xác định trước. Nó hoạt động với tư cách là người trung gian, cho phép các nhà phát triển ứng dụng xây dựng các tương tác có lập trình mới giữa những ứng dụng khác nhau mà mọi người và doanh nghiệp sử dụng hàng ngày.

API là từ viết tắt của Application Programming Interface, được hiểu là một phần mềm trung gian cho phép hai ứng dụng giao tiếp với nhau.

Hi vọng với những phân tích chi tiết trên đây của Mona Media có thể giúp bạn nắm bắt và hiểu rõ hơn về API là gì, các giá trị và ứng dụng của API hay Web API trong thiết kế website và đời sống.

Từ những giao thức tách biệt, API như một cầu nối gắn kết chúng, giúp người dùng có thể tương tác giữ ứng dụng và website, cải thiện và mở rộng vận hành trên mọi thiết bị và phần cứng dù trực tuyến hay ngoại tuyến.

API giúp giảm tải phần lớn các công việc, nâng cao sự chính xác trong quá trình thiết kế website bán hàng online và các loại web khác, tạo sự chuyên nghiệp, nhanh chóng và thuận tiện hơn cho các lập trình viên. Tất cả những ưu điểm đó giúp cho API và Web API trở thành những chiếc chìa khóa vạn năng, cải thiện cuộc sống tiện lợi, thông minh và hiện đại hơn.

Dịch vụ thiết kếwebsite chuyên nghiệp

Sở hữu website với giao diện đẹp, độc quyền 100%, bảo hành trọn đời với khả năngmở rộng tính năng linh hoạt theo sự phát triển doanh nghiệp ngay hôm nay!

Tổng quan về MVC API trong .NET 6

Mô hình MVC

  • Model : là nơi chứa những nghiệp vụ tương tác với dữ liệu hoặc hệ quản trị cơ sở dữ liệu (mysql, mssql… ); nó s0ẽbao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn dữ liệu, th• êm –• xóa •– sửa• dữ liệu…

  • View : là nới chứa những giao diện như một nút bấm, khung nhập, menu, hình ảnh… nó đảm nhiệm nhiệm vụ hiển thị dữ liệu và giúp người dùng tương tác với hệ thống.

  • Controller : là nới tiếp nhận những yêu cầu xử lý được gửi từ người dùng, nó sẽ gồm những class/ function xử lý nhiều nghiệp vụ logic giúp lấy đúng dữ liệu thông tin cần thiết nhờ các nghiệp vụ lớp Model cung cấp và hiển thị dữ liệu đó ra cho người dùng nhờ lớp View.

  • Tương tác giữa các thành phần:

    • Controller tương tác với qua lại với View
    • Controller tương tác qua lại với Model
    • Model và View không có sự tương tác với nhau mà nó tương tác với nhau thông qua Controller.

API

  • API viết tắt là Application Programming Interface – giao diện lập trình ứng dụng. Nó cung cấp khả năng giao tiếp trao đổi giữa các ứng dụng thông qua internent.
  • Ở phần trước khi không sử dụng api .net 6 thì ứng dụng sẽ bao gồm phần backend và frontend chung.

  • Khi sử dụng web api thì thường sẽ chia backend ra riêng và frontend ra riêng. Và frontend website sẽ giao tiếp với backend qua API hoặc có các app mobile sẽ giao tiếp với backend qua API.

  • Ứng dụng web

  • Ứng dụng mobile

Restful là gì?

  • RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource. Nó chú trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP.

  • Các giao thức HTTP:

    • GET (SELECT): Trả về một Resource hoặc một danh sách Resource.
    • POST (CREATE): Tạo mới một Resource.
    • PUT (UPDATE): Cập nhật thông tin cho Resource.
    • DELETE (DELETE): Xoá một Resource.
  • Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa.

Status code

  • Khi chúng ta request một API nào đó thường thì sẽ có vài status code để nhận biết sau:

    • 200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH hoặc DELETE.
    • 201 Created – Trả về khi một Resouce vừa được tạo thành công.
    • 204 No Content – Trả về khi Resource xoá thành công.
    • 304 Not Modified – Client có thể sử dụng dữ liệu cache.
    • 400 Bad Request – Request không hợp lệ
    • 401 Unauthorized – Request cần có auth.
    • 403 Forbidden – bị từ chối không cho phép.
    • 404 Not Found – Không tìm thấy resource từ URI
    • 405 Method Not Allowed – Phương thức không cho phép với user hiện tại.
    • 410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ.
    • 415 Unsupported Media Type – Không hỗ trợ kiểu Resource này.
    • 422 Unprocessable Entity – Dữ liệu không được xác thực
    • 429 Too Many Requests – Request bị từ chối do bị giới hạn
  • Đọc thêm về http code: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

  • Tương ứng với trong .NET 6:

    • return Ok(Value) : trả về http code 200 và kết quả.
    • return BadRequest(): trả về http code 400
    • return NotFound(): trả về http code 404
    • return NoContent(): trả về http code 204
    • return new UnsupportedMediaTypeResult(): trả về http code 415
  • Trả về HTML

    • Phương thức View() sẽ trả về một ViewResult là một HTML response.
    • Phương thức PartialView() sẽ trả về một phần của View. Sử dụng khi muốn cập nhật 1 phần của view mà không muốn load lại toàn bộ view (hữu ích trong Single Page Application)
  • Trả về File

    • FileContentResult: đọc một mảng byte và trả về như một file.
    • FileStreamResult: đọc một luồng stream và trả về một file.
    • VirtualFileResult: đọc nội dung file từ một đường dẫn tương đối trên hosting và trả về cho client.
    • PhysicalFileResult: đọc nội dung file từ một đường dẫn vật lý và trả về cho client.
  • Trả về nội dung văn bản

    • Content(value): ActionResult trả về một nội dung cụ thể như một văn bản thuần.
    • new JsonResult(value): ActionResult này trả về dữ liệu định dạng JSON. Có thể chuyển một object sang Json và trả về cho client
  • Đọc thêm về Json: https://www.w3schools.com/js/js_json_intro.asp

Thực hành MVC API

  • Tạo 5 api:

    • GET: api/categories
    • GET: api/categories/{id}
    • POST: api/categories
    • PUT: api/categories/{id}
    • DELETE: api/categories/{id}
  • Cài đặt postman để test api: https://www.postman.com/downloads/

Sử dụng Javascript làm frontend để call api

  • Tham khảo: https://learn.microsoft.com/vi-vn/aspnet/core/tutorials/web-api-javascript?view=aspnetcore-6.0

  • Bài tập về nhà: Làm chức năng create new categories, update category và delete category.

Routing trong .net core

  • Routing là quá trình điều hướng các URL request đến đúng các controller và action tương ứng.

  • Route template

    • Để url request tìm đến đúng controller action tương ứng cần có một template đóng vai trò như bản đồ chỉ dẫn.
    • Ví dụ: {controller=Post}/{action=GetByIdl}/{id?}
  • Có 2 cách để cài đặt route template:

    • Attribute routing: Ví dụ: [Route(“api/[controller]”)]
    • Convention Based Routing: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-6.0

Environment trong .NET 6

  • Development: môi trường cho nhà phát triển

  • Staging: môi trường để testing (gần giống production)

  • Production: môi trường thực tế khách hàng sử dụng.

  • Cấu hình (configuration) trong .net

    • .NET cung cấp appsettings.json file để lưu trữ các cấu hình cho ứng dụng.
    • Ví dụ: lưu trữ cấu hình ConnectionString đến cơ sở dữ liệu, thông tin tham số ứng dụng, đường dẫn thư mục hình ảnh,….
  • Cấu hình (configuration) tùy theo môi trường

    • appsettings.json
    • appsettings.Development.json cho môi trường development.
    • appsettings.Staging.json cho môi trường staging.
    • appsettings.Production.json cho môi trường production.
  • launchSettings.json sẽ dựa vào ASPNETCORE_ENVIRONMENT để biết ứng dụng đang chạy môi trường nào.

Đọc file cấu hình appsettings.json bằng IConfiguration

  • Tham khảo: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-6.0

  • Binding data trong file cấu hình thành object với IOptions

    • Khai báo dependence injection:

      builder.Services.Configure (builder.Configuration.GetSection("Position"));
    • Sử dụng IOptions Inject vào constructor:
  • Khai báo dependence injection:
  • Lấy giá trị connection string từ appsettings.json

Tham khảo:

  • https://medium.com/@joespinelli_6190/mvc-model-view-controller-ef878e2fd6f5
  • https://www.geeksforgeeks.org/benefit-of-using-mvc/
  • API là gì? Tại sao API được sử dụng nhiều hiện nay?

  • https://www.guru99.com/what-is-api.html
  • https://viblo.asia/p/restful-api-la-gi-1Je5EDJ4lnL
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
  • https://learn.microsoft.com/vi-vn/aspnet/core/tutorials/web-api-javascript?view=aspnetcore-6.0

All rights reserved

Khi lập trình với MVC, nhiều bạn vẫn thường nhầm lẫn sang Web API, vì MVC cũng trả về dữ liệu kiểu JSON bằng cách sử dụng JsonResult và cũng sử dụng được với các Ajax request. Trong bài viết này chúng ta cùng đi phân tích một số điểm giống và khác nhau giữa Asp.Net Web API và Asp.Net MVC:

  1. MVC trả về cả View và Data trong đó Web API chỉ trả về Data.
  2. Web APi giúp xây dựng REST-full services trên nền tảng .NET. Hỗ trợ content-negitiation (tự động trả dữ liệu có kiểu phù hợp với client – Json, Xml, Atom,…), self-hosting mà MVC không có.
  3. Web API sẽ giúp bạn chuyển kiểu dữ liệu trả về theo thuộc tính Accept trong header của request và bạn không cần quan tâm đến điều đó. MVC thì chỉ trả về kiểu JSON.
  4. Web API, Request được mapping với các Actions dựa trên phương thức, vd: GET, PUT, POST, … Còn MVC thì Request được mapping với tên các Action.
  5. Asp.Net Web API là một nền tảng mới và là một phần của Asp.net. Các tính năng như model binding, filters, routing và nhiều tính năng khcá của MVC cũng có trong Web API nhưng nó được đóng gói vào System.Web.Http. Trong MVC những tính năng này nằm trong System.Web.MVC. Vì vậy Web API có thể được sử dụng với Asp.Net hay đứng độc lập.
  6. Bạn có thể dùng cả Web API và MVC controller trong cùng 1 project để xử lý các Ajax Request trả về dữ liệu kiểu Json, Xml,.. . Cái này gọi là Web API self-hosting.
  7. Khi dùng cả Web API và Web MVC, bạn cần kiểm soát quyền truy cập. Và như vậy trong hệ thống của bạn sẽ tồn tại 2 filter, một cho Web Api và một cho Web MVC.
  8. Hơn hết, Web API là một kiến trúc gọn nhẹ ngoài việc dùng cho các ứng dụng web, nó còn dùng được với các ứng dụng smart phone.

Theo http://www.dotnet-tricks.com/

Upgrade from ASP.NET MVC and Web API to ASP.NET Core MVC

This article shows how to upgrade an ASP.NET Framework MVC or Web API app to ASP.NET Core MVC using the Visual Studio .NET Upgrade Assistant and the incremental update approach.

Conclusion:

ASP.NET apps’ right architectural decisions are predicated on knowledge of the variation that ASP.NET MVC controllers and web api controllers have. Although both tools serve different purposes, it’s crucial to select a solution that is suited towards the unique demands of your undertaking. Having this C# code samples will help understand when to use and when not to use each controller in your ASP.NET apps.

Difference Between REST API vs Web API vs SOAP API Explained
Difference Between REST API vs Web API vs SOAP API Explained

Overview of MVC

Model View Controller (MVC) divides an application into the three parts, Model, View and Controller. ASP.NET has many options for creating Web applications using the ASP.NET Web forms. MVC framework Combines the ASP.NET features such as Master pages, Membership based authentication. MVC exists in the “System.Web.MVC” assembly.

The components that are included by the MVC:

  • Models: Models are the objects used to retrieve and store the model state in the database. Let’s see an example. There is an “item” object that fetches the data from the database and performs an operation and then stores the updated data into the database. If an application only reads the dataset and sends it to the view then the application does not have any associated class and physical layer model.
  • View: View components show the User Interface (UI) of the applications that is created by the data model. For example the view of the Items table shows the drop down list and textboxes that depend on the current state of the “item” object.
  • Controllers: In MVC, controllers are also called the components. These components manage the user interaction and chooses a view for displaying the UI. The main work of the controller is that it manages the query string values and transfers these values to the models.

The Models retrieve the information and store the updated information in the database. Views are used for only displaying the information, and the controllers are used for managing and responding to the user inputs and their interaction.

Test each method

The layout file and styles have not been migrated yet, so the rendered views only contain the content in the view files. The layout file generated links for the

About

and

Contact

views will not be available yet.

Invoke the rendered views from the browser on the running ASP.NET core app by replacing the current port number with the port number used in the ASP.NET core project. For example:

https://localhost:44375/home/about

.

Note the lack of styling and menu items. The styling will be fixed in the next section.

JSON Web Tokens (JWT) in .NET 6 Web API 🔒 - User Registration / Login / Authentication
JSON Web Tokens (JWT) in .NET 6 Web API 🔒 – User Registration / Login / Authentication

Migrate the layout file

  • Copy the


    _ViewStart.cshtml

    file from the ASP.NET MVC project’s Views directory into the ASP.NET Core project’s Views directory. The

    _ViewStart.cshtml

    file has not changed in ASP.NET Core MVC.

  • Create a Views/Shared directory.

  • Optional: Copy


    _ViewImports.cshtml

    from the FullAspNetCore MVC project’s Views directory into the ASP.NET Core project’s Views directory. Remove any namespace declaration in the

    _ViewImports.cshtml

    file. The

    _ViewImports.cshtml

    file provides namespaces for all the view files and brings in Tag Helpers. Tag Helpers are used in the new layout file. The

    _ViewImports.cshtml

    file is new for ASP.NET Core.

  • Copy the


    _Layout.cshtml

    file from the ASP.NET MVC project’s Views/Shared directory into the ASP.NET Core project’s Views/Shared directory.

Open

_Layout.cshtml

file and make the following changes (the completed code is shown below):

  • Replace


    @Styles.Render("~/Content/css")

    with aelement to load

    bootstrap.css

    (see below).

  • Remove


    @Scripts.Render("~/bundles/modernizr")

    .

  • Comment out the


    @Html.Partial("_LoginPartial")

    line (surround the line with

    @*...*@

    ). For more information, see Migrate Authentication and Identity to ASP.NET Core

  • Replace


    @Scripts.Render("~/bundles/jquery")

    with a

    The updated

    _Layout.cshtml

    file is shown below:


    <br /> @ViewBag.Title - My ASP.NET Application<br />

    @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
    • @Html.ActionLink("Home", "Index", "Home")
    • @Html.ActionLink("About", "About", "Home")
    • @Html.ActionLink("Contact", "Contact", "Home")

    @*@Html.Partial("_LoginPartial")*@

    @RenderBody()

    © @DateTime.Now.Year - My ASP.NET Application

    @RenderSection("scripts", required: false)


    View the site in the browser. It should now load correctly, with the expected styles in place.

    • Optional: Try using the new layout file. Copy the layout file from the FullAspNetCore project. The new layout file uses Tag Helpers and has other improvements.

    ASP.NET Web API

    The ASP.NET Web API supports displaying data in a variety of forms, including XML and JSON. It is a framework that makes it simple to respond to client requests by utilizing HTTP services. The response is determined by the client’s requests. The web API creates HTTP services and manages requests via HTTP protocols. The Web API is open source and can be hosted within an application or on IIS. A GET, POST, DELETE, or PUT request can be made. We can define the Web API as:

    • An HTTP service.
    • Is intended to reach a wide spectrum of clients.
    • The HTTP application is used.
    .NET 7.0 Web API Full course with CRUD actions, Authentication, FileHandling & IIS Deployment - 2023
    .NET 7.0 Web API Full course with CRUD actions, Authentication, FileHandling & IIS Deployment – 2023

    Add a controller and view

    In this section, a minimal controller and view are added to serve as placeholders for the ASP.NET MVC controller and views migrated in the next section.

    • Add a Controllers directory.

    • Add a Controller Class named


      HomeController.cs

      to the Controllers directory.

    • Add a Views directory.

    • Add a Views/Home directory.

    • Add a Razor View named


      Index.cshtml

      to the Views/Home directory.

    The project structure is shown below:

    Replace the contents of the

    Views/Home/Index.cshtml

    file with the following markup:

    Hello world!

    Run the app.

    For more information, see Controllers and Views.

    The following functionality requires migration from the example ASP.NET MVC project to the ASP.NET Core project:

    • client-side content (CSS, fonts, and scripts)

    • controllers

    • views

    • models

    • bundling

    • filters

    • Log in/out, Identity (This is done in the next tutorial.)

    Migrate the layout file

    • Copy the


      _ViewStart.cshtml

      file from the ASP.NET MVC project’s Views directory into the ASP.NET Core project’s Views directory. The

      _ViewStart.cshtml

      file has not changed in ASP.NET Core MVC.

    • Create a Views/Shared directory.

    • Optional: Copy


      _ViewImports.cshtml

      from the FullAspNetCore MVC project’s Views directory into the ASP.NET Core project’s Views directory. Remove any namespace declaration in the

      _ViewImports.cshtml

      file. The

      _ViewImports.cshtml

      file provides namespaces for all the view files and brings in Tag Helpers. Tag Helpers are used in the new layout file. The

      _ViewImports.cshtml

      file is new for ASP.NET Core.

    • Copy the


      _Layout.cshtml

      file from the ASP.NET MVC project’s Views/Shared directory into the ASP.NET Core project’s Views/Shared directory.

    Open

    _Layout.cshtml

    file and make the following changes (the completed code is shown below):

    • Replace


      @Styles.Render("~/Content/css")

      with aelement to load

      bootstrap.css

      (see below).

    • Remove


      @Scripts.Render("~/bundles/modernizr")

      .

    • Comment out the


      @Html.Partial("_LoginPartial")

      line (surround the line with

      @*...*@

      ). For more information, see Migrate Authentication and Identity to ASP.NET Core

    • Replace


      @Scripts.Render("~/bundles/jquery")

      with a

      The updated

      _Layout.cshtml

      file is shown below:


      <br /> @ViewBag.Title - My ASP.NET Application<br />

      @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
      • @Html.ActionLink("Home", "Index", "Home")
      • @Html.ActionLink("About", "About", "Home")
      • @Html.ActionLink("Contact", "Contact", "Home")

      @*@Html.Partial("_LoginPartial")*@

      @RenderBody()

      © @DateTime.Now.Year - My ASP.NET Application

      @RenderSection("scripts", required: false)


      View the site in the browser. It should now load correctly, with the expected styles in place.

      • Optional: Try using the new layout file. Copy the layout file from the FullAspNetCore project. The new layout file uses Tag Helpers and has other improvements.
      React with .NET Web API – Basic App Tutorial
      React with .NET Web API – Basic App Tutorial

      Migrate controllers and views

      In the ASP.NET Core project, a new empty controller class and view class would be added to serve as placeholders using the same names as the controller and view classes in any ASP.NET MVC project to migrate from.

      The ASP.NET Core WebApp1 project already includes a minimal example controller and view by the same name as the ASP.NET MVC project. So those will serve as placeholders for the ASP.NET MVC controller and views to be migrated from the ASP.NET MVC WebApp1 project.

      1. Copy the methods from the ASP.NET MVC

        HomeController

        to replace the new ASP.NET Core

        HomeController

        methods. There’s no need to change the return type of the action methods. The ASP.NET MVC built-in template’s controller action method return type is ActionResult; in ASP.NET Core MVC, the action methods return

        IActionResult

        instead.

        ActionResult

        implements

        IActionResult

        .
      2. In the ASP.NET Core project, right-click the Views/Home directory, select Add > Existing Item.
      3. In the Add Existing Item dialog, navigate to the ASP.NET MVC WebApp1 project’s Views/Home directory.
      4. Select the

        About.cshtml

        ,

        Contact.cshtml

        , and

        Index.cshtml

        Razor view files, then select Add, replacing the existing files.

      For more information, see Handle requests with controllers in ASP.NET Core MVC and Views in ASP.NET Core MVC.

      In this article, we will see what is Web API & MVC, their features & components, along with knowing their advantages & disadvantages, finally, will see the difference between them.

      The Model View Controller (MVC) is part of an architecture pattern that separates the application into 3 major Logical components that consist of a data model that contains only the pure application data, without containing any logic that describes how to present the data to a user. The Presentation(view) signifies the model’s data to the user. The view knows how to access the model’s data, but it does not know what this data means or what the user can do to manipulate it. The final part is the controller that exists between the view and the model. It listens to events triggered by the view (or another external source) and executes the appropriate reaction to these events. In most cases, the reaction is to call a method on the model. It is basically responsible for managing the query string values and transferring the result values to the models.

      Controllers and views

      • Copy each of the methods from the ASP.NET MVC


        HomeController

        to the new

        HomeController

        . In ASP.NET MVC, the built-in template’s controller action method return type is ActionResult; in ASP.NET Core MVC, the action methods return

        IActionResult

        instead.

        ActionResult

        implements

        IActionResult

        , so there’s no need to change the return type of the action methods.

      • Copy the


        About.cshtml

        ,

        Contact.cshtml

        , and

        Index.cshtml

        Razor view files from the ASP.NET MVC project to the ASP.NET Core project.

      Intro to Web API in .NET 6 - Including Minimal APIs, Swagger, and more
      Intro to Web API in .NET 6 – Including Minimal APIs, Swagger, and more

      Incremental update

      Follow the steps in Get started with incremental ASP.NET to ASP.NET Core migration to continue the update process.

      This article shows how to start migrating an ASP.NET MVC project to ASP.NET Core MVC. In the process, it highlights related changes from ASP.NET MVC.

      Migrating from ASP.NET MVC is a multi-step process. This article covers:

      • Initial setup.
      • Basic controllers and views.
      • Static content.
      • Client-side dependencies.

      For migrating configuration and Identity code, see Migrate configuration to ASP.NET Core and Migrate Authentication and Identity to ASP.NET Core.

      Migrate the layout files

      Copy the ASP.NET MVC project layout files to the ASP.NET Core project:

      1. In the ASP.NET Core project, right-click the Views directory, select Add > Existing Item.
      2. In the Add Existing Item dialog, navigate to the ASP.NET MVC WebApp1 project’s Views directory.
      3. Select the

        _ViewStart.cshtml

        file then select Add.

      Copy the ASP.NET MVC project shared layout files to the ASP.NET Core project:

      1. In the ASP.NET Core project, right-click the Views/Shared directory, select Add > Existing Item.
      2. In the Add Existing Item dialog, navigate to the ASP.NET MVC WebApp1 project’s Views/Shared directory.
      3. Select the

        _Layout.cshtml

        file, then select Add, replacing the existing file.

      In the ASP.NET Core project, open the

      _Layout.cshtml

      file. Make the following changes to match the completed code shown below:

      Update the Bootstrap CSS inclusion to match the completed code below:

      1. Replace

        @Styles.Render("~/Content/css")

        with aelement to load

        bootstrap.css

        (see below).
      2. Remove

        @Scripts.Render("~/bundles/modernizr")

        .

      The completed replacement markup for Bootstrap CSS inclusion:

      Update the jQuery and Bootstrap JavaScript inclusion to match the completed code below:

      1. Replace

        @Scripts.Render("~/bundles/jquery")

        with a

        The updated

        _Layout.cshtml

        file is shown below:


        <br /> @ViewBag.Title - My ASP.NET Application<br />

        @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
        • @Html.ActionLink("Home", "Index", "Home")
        • @Html.ActionLink("About", "About", "Home")
        • @Html.ActionLink("Contact", "Contact", "Home")
        @RenderBody()

        © @DateTime.Now.Year - My ASP.NET Application

        @RenderSection("scripts", required: false)


        View the site in the browser. It should render with the expected styles in place.

        .NET Core 3.1 MVC REST API - Full Course
        .NET Core 3.1 MVC REST API – Full Course

        Features of MVC

        • MVC is helpful in developing web applications that process request and sends both views and data. It helps to understand the business logic & Ul logic separately from each other.
        • MVC represents resultant data in JSON format using JsonResult.
        • System.web.MVC has all features defined by MVC.
        • It is a powerful URL-mapping component that can be utilized to build applications that have comprehensible and searchable URLs.

        Advantages of using MVC

        • Helps in organizing Large scale web applications.
        • The development process is made much faster.
        • Ease of planning and better maintenance
        • MVC returns data without formatting.
        • It has extensive support for test-driven development.

        Disadvantages of using MVC

        • MVC is not suitable for small applications.
        • If the model keeps on going with frequent changes then the views could be overburdened sometimes with update requests.
        • Implementing MVC sometimes requires deep technical knowledge.

        MVC is used for Web application development. MVC returns both data and view of the data whereas, Web API returns only the HTTP services data i.e. only in form of data.

        NOTE : Web APIs are the services for any type of devices and any clients but MVC provides service only to it’s clients.

        The Web API is an API that can be accessed over the web using the HTTP protocol, i.e., it is basically a framework that facilitates us to create and develop HTTP-based RESTFUL services. Technologies such as java, ASP.NET, etc. can be utilized to develop the web API, which can be used in either a web server or a web browser. Web APIs does not include web browser since web development concepts strictly adhere to the Client-side (including Frameworks). Being open-source, Web APIs generally offer lower bandwidth which facilitates passing not only JSON /XML but also HTML. They offer centralization of Business Logic which helps in maintaining consistency across all the layers.

        Solve HTTP 500 errors

        There are many problems that can cause an HTTP 500 error messages that contain no information on the source of the problem. For example, if the

        Views/_ViewImports.cshtml

        file contains a namespace that doesn’t exist in the project, a HTTP 500 error is generated. By default in ASP.NET Core apps, the

        UseDeveloperExceptionPage

        extension is added to the

        IApplicationBuilder

        and executed when the configuration is Development. See an example in the following code:


        public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }

        ASP.NET Core converts unhandled exceptions into HTTP 500 error responses. Normally, error details aren’t included in these responses to prevent disclosure of potentially sensitive information about the server. For more information, see Developer Exception Page.

        Project mẫu: ASP.Net Core MVC API
        Project mẫu: ASP.Net Core MVC API

        Create the starter ASP.NET MVC project

        Create an example ASP.NET MVC project in Visual Studio to migrate:

        1. From the File menu, select New > Project.
        2. Select ASP.NET Web Application (.NET Framework) and then select Next.
        3. Name the project WebApp1 so the namespace matches the ASP.NET Core project created in the next step. Select Create.
        4. Select MVC, and then select Create.

        Difference between MVC and Web API

        There are numerous distinctions between MVC and Web API, including:

        • We can use MVC to create a Web application that responds as both data and views, while the Web API is used to create HTTP services that only respond as data.
        • The Web API request traces with the actions based on the HTTP services, but the MVC request traces with the action name.
        • Based on the accepted header of the request, the Web API returns data in various formats such as JSON, XML, and others. However, the MVC uses JSONResult to return data in JSON format.
        • The Web API allows for content negotiation and self-hosting. The MVC does not support any of these.
        • The Web API supports MVC elements like as routing and model binding, although these are distinct and described in the “System.Web.Http” assembly. Furthermore, the MVC functionalities are defined in the “System.Web.Mvc” assembly.
        • The Web API facilitates the development of RESTful services over the .Net Framework, which the MVC does not provide.
        ASP.NET Core Web API and Entity Framework Core - Full Course Including CRUD
        ASP.NET Core Web API and Entity Framework Core – Full Course Including CRUD

        Test each method

        The layout file and styles have not been migrated yet, so the rendered views only contain the content in the view files. The layout file generated links for the

        About

        and

        Contact

        views will not be available yet.

        • Invoke the rendered views from the browser on the running ASP.NET core app by replacing the current port number with the port number used in the ASP.NET core project. For example:

          https://localhost:44375/home/about

          .

        Note the lack of styling and menu items. The styling will be fixed in the next section.

        Migrate static content

        In ASP.NET MVC 5 and earlier, static content was hosted from the web project’s root directory and was intermixed with server-side files. In ASP.NET Core, static files are stored within the project’s web root directory. The default directory is {content root}/wwwroot, but it can be changed. For more information, see Static files in ASP.NET Core.

        Copy the static content from the ASP.NET MVC WebApp1 project to the wwwroot directory in the ASP.NET Core WebApp1 project:

        1. In the ASP.NET Core project, right-click the wwwroot directory, select Add > Existing Item.
        2. In the Add Existing Item dialog, navigate to the ASP.NET MVC WebApp1 project.
        3. Select the favicon.ico file, then select Add, replacing the existing file.
        Consuming Web API In ASP.NET MVC | CRUD Operations In ASP.NET MVC with Web API
        Consuming Web API In ASP.NET MVC | CRUD Operations In ASP.NET MVC with Web API

        Create the starter ASP.NET MVC project

        To demonstrate the upgrade, we’ll start by creating an ASP.NET MVC app. Create it with the name WebApp1 so the namespace matches the ASP.NET Core project created in the next step.

        Optional: Change the name of the Solution from WebApp1 to Mvc5. Visual Studio displays the new solution name (Mvc5), which makes it easier to tell this project from the next project.

        Combining MVC with Web API

        • When we self-host an application, we integrate the MVC controller and the API into a single project. This facilitates the management of AJAX requests and allows for the return of responses in XML, JSON, and other formats.
        • To enable application authorization, we integrated MVC and Web API. We create two filters in it: one for MVC and one for the Web API.
        [WebAPI-NET5] #1 - Tạo API đầu tiên
        [WebAPI-NET5] #1 – Tạo API đầu tiên

        Static content

        In ASP.NET MVC 5 and earlier, static content was hosted from the root of the web project and was intermixed with server-side files. In ASP.NET Core, static content is hosted in the wwwroot directory. Copy the static content from the ASP.NET MVC app to the wwwroot directory in the ASP.NET Core project. In this sample conversion:

        • Copy the favicon.ico file from the ASP.NET MVC project to the wwwroot directory in the ASP.NET Core project.

        The ASP.NET MVC project uses Bootstrap for its styling and stores the Bootstrap files in the Content and Scripts directories. The template, which generated the ASP.NET MVC project, references Bootstrap in the layout file (

        Views/Shared/_Layout.cshtml

        ). The

        bootstrap.js

        and

        bootstrap.css

        files could be copied from the ASP.NET MVC project to the wwwroot directory in the new project. Instead, this document adds support for Bootstrap (and other client-side libraries) using CDNs, in the next section.

        Components of Web API

        • Model: In WebAPI, models are objects that are used to retrieve and store the model state in the database.
        • Component Negotiation: Content negotiation is performed at the server-side to determine the media type formatted (i.e. whether it is a JSON or XML or another file) to be used based to return the response for an incoming request from the client-side
        Web API CRUD Operations Using Asp Net MVC and Entity Framework
        Web API CRUD Operations Using Asp Net MVC and Entity Framework

        Configure the ASP.NET Core site to use MVC

        In ASP.NET Core 3.0 and later projects, .NET Framework is no longer a supported target framework. Your project must target .NET Core. The ASP.NET Core shared framework, which includes MVC, is part of the .NET Core runtime installation. The shared framework is automatically referenced when using the

        Microsoft.NET.Sdk.Web

        SDK in the project file:

        For more information, see Framework reference.

        In ASP.NET Core, the

        Startup

        class:

        • Replaces Global.asax.
        • Handles all app startup tasks.

        For more information, see App startup in ASP.NET Core.

        In the ASP.NET Core project, open the

        Startup.cs

        file:


        public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } }

        ASP.NET Core apps must opt in to framework features with middleware. The previous template-generated code adds the following services and middleware:

        • The AddControllersWithViews extension method registers MVC service support for controllers, API-related features, and views. For more information on MVC service registration options, see MVC service registration
        • The UseStaticFiles extension method adds the static file handler

          Microsoft.AspNetCore.StaticFiles

          . The

          UseStaticFiles

          extension method must be called before

          UseRouting

          . For more information, see Static files in ASP.NET Core.
        • The UseRouting extension method adds routing. For more information, see Routing in ASP.NET Core.

        This existing configuration includes what is needed to migrate the example ASP.NET MVC project. For more information on ASP.NET Core middleware options, see App startup in ASP.NET Core.

        Upgrade using the .NET Upgrade Assistant

        If your .NET Framework project has supporting libraries in the solution that are required, they should be upgraded to .NET Standard 2.0, if possible. For more information, see Upgrade supporting libraries.

        1. Install the .NET Upgrade Assistant Visual Studio extension.
        2. Open the ASP.NET MVC or Web API solution in Visual Studio.
        3. In Solution Explorer, right click on the project to upgrade and select Upgrade. Select Side-by-side incremental project upgrade, which is the only upgrade option.
        4. For the upgrade target, select New project.
        5. Name the project and select the template. If the project you’re migrating is a API project, select ASP.NET Core Web API. If it’s an MVC project or MVC and Web API, select ASP.NET Core MVC.
        6. Select Next
        7. Select the target framework version and then select Next. For more information, see .NET and .NET Core Support Policy.
        8. Review the Summary of changes, then select Finish.
        9. The Summary step displays is now connected tovia Yarp proxy. and a pie chart showing the migrated endpoints. Select Upgrade Controller and then select a controller to upgrade.
        10. Select the component to upgrade, then select Upgrade selection.
        how to create web api in asp.net mvc
        how to create web api in asp.net mvc

        Create the ASP.NET Core project

        Create a new empty ASP.NET Core web app with the same name as the previous project (WebApp1) so the namespaces in the two projects match. Having the same namespace makes it easier to copy code between the two projects. Create this project in a different directory than the previous project to use the same name.

        • Optional: Create a new ASP.NET Core app using the Web Application project template. Name the project WebApp1, and select an authentication option of Individual User Accounts. Rename this app to FullAspNetCore. Creating this project saves time in the conversion. The end result can be viewed in the template-generated code, code can be copied to the conversion project, or compared with the template-generated project.

        Features of Web APIs

        • Helps in developing HTTP services (both RESTful and non-RESTful services) that process the request and return the data.
        • Web APIs return data in JSON, XML, or other formats.
        • System.Web.Http assembly has all the features defined by Web APIs.

        Advantages of using Web API

        • Lightweight architecture, along with having support for Routing.
        • Supports both model binding and data validation
        • We can perform HTTP terminologies like GET, POST, PUT, and DELETE for all CRUD operations
        • We can generate JSON and XML responses.

        Disadvantages of using Web API

        • It is a bit costlier & expensive for use.
        • Only JSON and XML are present in Web API unlike MVC where return views, action results, etc are present
        ASP.NET MVC Web API - Truy vấn dòng thông qua Web API & Ajax
        ASP.NET MVC Web API – Truy vấn dòng thông qua Web API & Ajax

        Additional resources

        This article shows how to start migrating an ASP.NET MVC project to ASP.NET Core MVC 2.2. In the process, it highlights many of the things that have changed from ASP.NET MVC. Migrating from ASP.NET MVC is a multi-step process. This article covers:

        • Initial setup
        • Basic controllers and views
        • Static content
        • Client-side dependencies.

        For migrating configuration and Identity code, see Migrate configuration to ASP.NET Core and Migrate Authentication and Identity to ASP.NET Core.

        Note

        The version numbers in the samples might not be current, update the projects accordingly.

        Test each method

        Each controller endpoint can be tested, however, layout and styles are covered later in the document.

        1. Run the ASP.NET Core app.
        2. Invoke the rendered views from the browser on the running ASP.NET Core app by replacing the current port number with the port number used in the ASP.NET Core project. For example,

          https://localhost:44375/home/about

          .
        Top 20 Interview Questions - Web API - .NET C#
        Top 20 Interview Questions – Web API – .NET C#

        Create the ASP.NET Core project

        Create a new solution with a new ASP.NET Core project to migrate to:

        1. Launch a second instance of Visual Studio.
        2. From the File menu, select New > Project.
        3. Select ASP.NET Core Web Application and then select Next.
        4. In the Configure your new project dialog, Name the project WebApp1.
        5. Set the location to a different directory than the previous project to use the same project name. Using the same namespace makes it easier to copy code between the two projects. Select Create.
        6. In the Create a new ASP.NET Core Web Application dialog, confirm that .NET Core and ASP.NET Core 3.1 are selected. Select the Web Application (Model-View-Controller) project template, and select Create.

        Solve HTTP 500 errors

        There are many problems that can cause an HTTP 500 error message that contains no information on the source of the problem. For example, if the

        Views/_ViewImports.cshtml

        file contains a namespace that doesn’t exist in the project, an HTTP 500 error is generated. By default in ASP.NET Core apps, the

        UseDeveloperExceptionPage

        extension is added to the

        IApplicationBuilder

        and executed when the environment is Development. This is detailed in the following code:


        public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } }

        ASP.NET Core converts unhandled exceptions into HTTP 500 error responses. Normally, error details aren’t included in these responses to prevent disclosure of potentially sensitive information about the server. For more information, see Developer Exception Page.

        Components of MVC

        The MVC includes the following components:

        • Models: Models are the objects that are utilized to get and save model state in a database. Let’s look at an example. An “item” object retrieves data from the database, conducts an operation, and then stores the changed data back in the database. If an application merely reads the dataset and sends it to the view, it lacks a corresponding class and physical layer model.
        • View: View components display the User Interface (UI) of applications generated by the data model. For example, the Items table view displays a drop-down list and textboxes based on the current state of the “item” object.
        • Controllers: Controllers are also known as components in MVC. These components handle user interaction and select a view to display the UI. The controller’s primary function is to manage query string values and send them to the models.

        Configure the site to use MVC

        • When targeting .NET Core, the Microsoft.AspNetCore.App metapackage is referenced by default. This package contains packages commonly used by MVC apps. If targeting .NET Framework, package references must be listed individually in the project file.


        Microsoft.AspNetCore.Mvc

        is the ASP.NET Core MVC framework.

        Microsoft.AspNetCore.StaticFiles

        is the static file handler. ASP.NET Core apps explicitly opt in for middleware, such as for serving static files. For more information, see Static files.

        • Open the

          Startup.cs

          file and change the code to match the following:


        public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }

        The UseStaticFiles extension method adds the static file handler. For more information, see Application Startup and Routing.

      Keywords searched by users: mvc and web api

      Asp.Net Mvc Web Api - Tech Prastish
      Asp.Net Mvc Web Api – Tech Prastish
      Creating Asp.Net Web Api With Mvc 6 | Dotnetcurry
      Creating Asp.Net Web Api With Mvc 6 | Dotnetcurry
      Api Là Gì? Những Đặc Điểm Nổi Bật Của Web Api | Devmaster
      Api Là Gì? Những Đặc Điểm Nổi Bật Của Web Api | Devmaster
      Consume Web Api In Asp.Net Mvc
      Consume Web Api In Asp.Net Mvc
      Mvc Vs Asp.Net Web Api? - Youtube
      Mvc Vs Asp.Net Web Api? – Youtube
      Get Started With Asp.Net Web Api 2 (C#) - Asp.Net 4.X | Microsoft Learn
      Get Started With Asp.Net Web Api 2 (C#) – Asp.Net 4.X | Microsoft Learn
      Difference Between Asp.Net Mvc And Asp.Net Web Api
      Difference Between Asp.Net Mvc And Asp.Net Web Api
      Consume Web Api For Crud Operation
      Consume Web Api For Crud Operation
      Developer Points: The Lifecycle Of An Asp.Net Web Api
      Developer Points: The Lifecycle Of An Asp.Net Web Api
      Tổng Quan Về Mvc Api Trong .Net 6
      Tổng Quan Về Mvc Api Trong .Net 6
      Lifecycle Of An Asp.Net Web Api Message | Dotnetcurry
      Lifecycle Of An Asp.Net Web Api Message | Dotnetcurry
      Full Crud Using Consuming Api - Calling Web Api From Mvc [Asp.Net Core] -  Youtube
      Full Crud Using Consuming Api – Calling Web Api From Mvc [Asp.Net Core] – Youtube

      See more here: kientrucannam.vn

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *