Adding a Controller
In Web API, a controller is an object that handles HTTP requests. We’ll add a controller that can return either a list of products or a single product specified by ID.
Note
If you have used ASP.NET MVC, you are already familiar with controllers. Web API controllers are similar to MVC controllers, but inherit the ApiController class instead of the Controller class.
In Solution Explorer, right-click the Controllers folder. Select Add and then select Controller.
In the Add Scaffold dialog, select Web API Controller – Empty. Click Add.
In the Add Controller dialog, name the controller “ProductsController”. Click Add.
The scaffolding creates a file named ProductsController.cs in the Controllers folder.
Note
You don’t need to put your controllers into a folder named Controllers. The folder name is just a convenient way to organize your source files.
If this file is not open already, double-click the file to open it. Replace the code in this file with the following:
using ProductsApp.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Web.Http; namespace ProductsApp.Controllers { public class ProductsController : ApiController { Product[] products = new Product[] { new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } }; public IEnumerableGetAllProducts() { return products; } public IHttpActionResult GetProduct(int id) { var product = products.FirstOrDefault((p) => p.Id == id); if (product == null) { return NotFound(); } return Ok(product); } } }
To keep the example simple, products are stored in a fixed array inside the controller class. Of course, in a real application, you would query a database or use some other external data source.
The controller defines two methods that return products:
-
The
GetAllProducts
method returns the entire list of products as an IEnumerabletype. -
The
GetProduct
method looks up a single product by its ID.
That’s it! You have a working web API. Each method on the controller corresponds to one or more URIs:
Controller Method | URI |
GetAllProducts | /api/products |
GetProduct | /api/products/id |
For the
GetProduct
method, the id in the URI is a placeholder. For example, to get the product with ID of 5, the URI is
api/products/5
.
For more information about how Web API routes HTTP requests to controller methods, see Routing in ASP.NET Web API.
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 { Listproducts = 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
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
Get Started with ASP.NET Web API 2 (C#)
by Mike Wasson
In this tutorial, you will use ASP.NET Web API to create a web API that returns a list of products.
HTTP is not just for serving up web pages. HTTP is also a powerful platform for building APIs that expose services and data. HTTP is simple, flexible, and ubiquitous. Almost any platform that you can think of has an HTTP library, so HTTP services can reach a broad range of clients, including browsers, mobile devices, and traditional desktop applications.
ASP.NET Web API is a framework for building web APIs on top of the .NET Framework.
Feedback
Submit and view feedback for
APIs with ASP.NET Core
Build secure REST APIs on any platform with C#
Build secure REST APIs on any platform with C#
ASP.NET makes it easy to build services that reach a broad range of clients, including browsers and mobile devices.
With ASP.NET you use the same framework and patterns to build both web pages and services, side-by-side in the same project.
var app = WebApplication.Create(); app.MapGet("/people", () => new[] { new Person("Ana"), new Person("Filipe"), new Person("Emillia") }); app.Run(); record Person(string Name);
curl https://localhost:5001/people [{"name":"Ana"},{"name":"Felipe"},{"name":"Emillia"}]
ASP.NET was designed for modern web experiences. Endpoints automatically serialize your classes to properly formatted JSON out of the box. No special configuration is required. Of course, serialization can be customized for endpoints that have unique requirements.
Secure API endpoints with built-in support for industry standard JSON Web Tokens (JWT). Policy-based authorization gives you the flexibility to define powerful access control rules—all in code.
curl -H "Content-Type: application/json" -X POST -d "{'name':'Ana'}" https://localhost:5001/people/create -i HTTP/2 202
// MapGroup organizes groups of endpoints under "people" var group = app.MapGroup("/people"); group.MapGet("/", async (PersonContext db) => { return await db.Person.ToListAsync(); }); group.MapGet("/{id}", async (int id, PersonContext db) => { return await db.Person.FindAsync(id); }); group.MapPost("/create", async (Person person, PersonContext db) => { db.Person.Add(person); await db.SaveChangesAsync(); return Results.Created($"/people/{person.Id}", person); }); app.Run();
ASP.NET lets you define routes and verbs inline with your code, using attributes. Data from the request path, query string, and request body are automatically bound to method parameters.
You don’t deploy your apps without security, so why test them without security? ASP.NET provides first class support for HTTPS out of the box. Automatically generate a test certificate and easily import it to enable local HTTPS so you run, and debug, your apps the way they are intended to be… secured.
APIs built with ASP.NET Core perform faster than any popular web framework in the independent TechEmpower benchmarks.
Data sourced from official tests available at TechEmpower Round 21.
Using Power Apps, anyone can build professional-grade business applications with low-code. Extend Power Apps further as a professional developer with custom connectors and logic. Learn how to build these services using OpenAPI-enabled ASP.NET Web APIs and make them available to Power Apps creators.
Build, debug, and deploy from any platform to any platform.
Issues in production? Not a problem… simply attach the debugger to your production instance and debug from your laptop!
Our beginner’s guide to building APIs with ASP.NET Core is designed to provide you with the foundation you need to start building APIs with .NET in a collection of short, pragmatic videos.
Our step-by-step tutorial will help you get APIs with ASP.NET Core running on your computer.
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:
- 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/
-
- 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:
- MVC trả về cả View và Data trong đó Web API chỉ trả về Data.
- 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ó.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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/
This article explains what the Web API is and its basics.
Let’s start with a definition first.
Kết luận
Trong bài học này chúng ta bắt đầu làm quen với Web API:
- Web API được sử dụng làm thành phần server cho nhiều loại ứng dụng khác nhau (SPA, mobile, desktop);
- Web API trao đổi dữ liệu ở dạng JSON hoặc XML với client qua HTTP;
- Trong Asp.net Core, Web API được xây dựng trên MVC framework chứ không phải là một framework riêng;
- Dự án Asp.net Core Web API cũng chính là dự án MVC nhưng có một số thay đổi về kỹ thuật.
- Để khai thác Web API bạn phải xây dựng client riêng.
Tạo dự án Asp.net Core Web API
Sử dụng Visual Studio
Chúng ta bắt đầu bằng một bài thực hành: tạo dự án Asp.net Core Web Api đầu tiên trong Visual Studio.
Bước 1. Tạo một ứng dụng Asp.net Core Web Application trong Visual Studio theo các thông tin cấu hình sau:
Bạn thu được một project với cấu trúc như sau:
Bước 2. Chạy thử ứng dụng mới.
Bạn có thể lựa chọn chạy ứng dụng tích hợp với IIS Express hoặc trong ứng dụng Console.
Bước 3. Mở trình duyệt và nhập vào URL
localhost:5000/weatherforcast
Lưu ý: nếu chạy ứng dụng console, cổng mặc định là 5000 hoặc 5001 (https); nếu chạy cùng IIS Express, cổng mặc định là 50040. Các giá trị này có thể thay đổi trong file Properties/launchSettings.json.
Bạn thu được kết quả như sau:
Hãy để ý, kết quả bạn thu được giờ là một chuỗi JSON chứ không phải là trang web bình thường nữa.
Sử dụng dotnet CLI
Tương tự như với dự án Razor Pages và MVC, bạn cũng có thể tạo dự án Web API từ dotnet CLI. Hãy cùng thực hiện.
Bước 1. Mở command prompt hoặc power shell và chuyển thư mục (lệnh CD) đến thư mục làm việc mong muốn.
Bước 2. Gõ lệnh sau:
dotnet new webapi -f netcoreapp3.1 -o HelloWebApi2
Kết quả chạy lệnh trên như sau:
The template “ASP.NET Core Web API” was created successfully. Processing post-creation actions… Running ‘dotnet restore’ on HelloWebApi2\HelloWebApi2.csproj… Determining projects to restore… Restored C:\Users\tuhocict.com\Documents\WebApi\HelloWebApi2\HelloWebApi2.csproj (in 93 ms). Restore succeeded.
Ở đây bạn đã yêu cầu dotnet CLI tạo dự án Web API mới trong thư mục HelloWebApi2 và sử dụng framework .NET Core 3.1. Nếu sử dụng framework .NET 5 mới, bạn cần thay
-f netcoreapp3.1
bằng tham số
-f net5.0
.
Khi này bạn có thể chạy luôn dự án từ giao diện dòng lệnh (
dotnet run -p .\HelloWebApi2\
), hoặc mở trong Visual Studio và chạy debug như trường hợp 1. Bạn sẽ thu được cùng kết quả như trường hợp 1.
Create a Web API Project
In this tutorial, you will use ASP.NET Web API to create a web API that returns a list of products. The front-end web page uses jQuery to display the results.
Start Visual Studio and select New Project from the Start page. Or, from the File menu, select New and then Project.
In the Templates pane, select Installed Templates and expand the Visual C# node. Under Visual C#, select Web. In the list of project templates, select ASP.NET Web Application. Name the project “ProductsApp” and click OK.
In the New ASP.NET Project dialog, select the Empty template. Under “Add folders and core references for”, check Web API. Click OK.
Note
You can also create a Web API project using the “Web API” template. The Web API template uses ASP.NET MVC to provide API help pages. I’m using the Empty template for this tutorial because I want to show Web API without MVC. In general, you don’t need to know ASP.NET MVC to use Web API.
Calling the Web API with Javascript and jQuery
In this section, we’ll add an HTML page that uses AJAX to call the web API. We’ll use jQuery to make the AJAX calls and also to update the page with the results.
In Solution Explorer, right-click the project and select Add, then select New Item.
In the Add New Item dialog, select the Web node under Visual C#, and then select the HTML Page item. Name the page “index.html”.
Replace everything in this file with the following:
Product App
Let's begin with adding Web API Controller
Now let's begin with adding a Web API Controller. It is nearly similar to adding a Controller in ASP.NET MVC.
Right-click on the Controller folder and add a new Web API Controller with the name CarDetailsController and in the template select API Controller with an empty read / write action.
After adding the Controller you will see the code as in the following snapshot.
You can keep this Web API controller anywhere in the application.
If you want to follow the convention then create the new folder in the root your of application with the name API.
Inside that you can add a Web API controller.
You have successfully added a Web API controller to your application.
Now you can run the application and test it.
For testing I am passing http://localhost:32359/api/cardetails/1 for calling the method get.
Wow, it's working!
It's easy to configure it as a Web API.
The ASP.Net MVC and ASP.Net Web API makes heavy use of convention for configuration to lighten the work load for creating the services.
For example, add a decorating method with attributes to make it easy to do CRUD operations.
Else it will make it difficult to understand and code.
- [HttpPut]
- public void Put(int id, [FromBody]string value)
- [HttpPost]
- public void Post([FromBody]string value)
- [HttpDelete]
- public void Delete(int id)
- {}
The HTTP actions and their corresponding CRUD operations are:
- GET (Read)Retrieves the representation of the resource.
- PUT(Update)Update an existing resource.
- POST (Create)Create new resource.
- DELETE (Delete)Delete an existing resource.
Now let's begin with how to create a CRUD operation with the WEB API.
Let's start by adding a Model.
To add the model right-click on the model folder and add a class with the name CarsStock.
After adding the Model CarsStock.cs now let's start with adding properties to the class.
After adding the model properties now I will consume the HTTP service developed using the ASP.NET Web API in a simple cshtml page with jQuery and Ajax.
For that in the View folder I will add a folder named Car and inside that folder will add a CarStock named view. To add it just right-click on the View folder and select View.
The following snapshot shows how I had added the view.
After adding the view you will get a blank view because we are not using any tightly coupled model here.
Then add a Controller with the name CarController. Call this view Carstock for the demo of consuming the Web API.
In this I called the view CarStock.
After adding the Controller and View now let us move back towards the Web API and make some changes that we have already created with the name “CarDetailsController”.
Let's get to the first method in CarDetailsController.
- GET IEnumerable
- [HttpGet]
- public IEnumerable
GetAllcarDetails()
- CarsStock ST = new CarsStock();
- CarsStock ST1 = new CarsStock();
- List
li = new List
();
- ST.CarName = "Maruti Waganor";
- ST.CarPrice = "4 Lakh";
- ST.CarModel = "VXI";
- ST.CarColor = "Brown";
- ST1.CarName = "Maruti Swift";
- ST1.CarPrice = "5 Lakh";
- ST1.CarModel = "VXI";
- ST1.CarColor = "RED";
- li.Add(ST);
- li.Add(ST1);
- return li;
This method is used to get a list of data.
In this method, I have used the Model CarsStock and created a list of CarsStock “List
“.
And returning it.
- GET by id
- public IEnumerable
Get(int id)
- CarsStock ST = new CarsStock();
- CarsStock ST1 = new CarsStock();
- List
li = new List
();
- if (id == 1)
- ST.CarName = "Maruti Waganor";
- ST.CarPrice = "4 Lakh";
- ST.CarModel = "VXI";
- ST.CarColor = "Brown";
- li.Add(ST);
- else
- ST1.CarName = "Maruti Swift";
- ST1.CarPrice = "5 Lakh";
- ST1.CarModel = "VXI";
- ST1.CarColor = "RED";
- li.Add(ST1);
- return li;
In this GET method, you can retrieve records for the database by passing an id.
- POST
- [HttpPost]
- public void PostCar([FromBody] CarsStock cs)
In this POST method, you can post data (CREATE) to the database. In this, I am using the Carstock model to post the data.
- PUT
- [HttpPut]
- public void Putcar(int id, [FromBody]CarsStock cs)
In this PUT method you can UPDATE the data (UPDATE) to the database. I am using the Carstock model to update the data.
- DELETE
- [HttpDelete]
- public void Deletecar(int id)
In this DELETE method you can delete data (DELETE) from the database. I am using an id to delete the data.
Here is a snapshot of all the methods and models after adding the attributes to it.
Now let's move to the view and do CRUD operations from there.
For getting a list of data I have created a function in jQuery.
- Calling GET IEnumerable List from Ajax and getting data from the Web API.
Learn ASP.NET Web API
ASP.NET Web API is a framework for building HTTP services that can be accessed from any client including browsers and mobile devices. It is an ideal platform for building RESTful applications on the .NET Framework.
Ứng dụng client/server qua HTTP
Trong các phần trước của tập tài liệu bạn đã học cách xây dựng ứng dụng web truyền thống sử dụng hai framework MVC và Razor Pages. Điểm chung của loại ứng dụng web này là giao diện người dùng (HTML + JS + CSS) được server sinh ra và gửi cho trình duyệt qua HTTP. Asp.net Core sử dụng Razor template cho nhiệm vụ này.
Tuy nhiên hiện nay rất phổ biến các loại ứng dụng trong đó phần giao diện người dùng là một ứng dụng độc lập chạy trên một thiết bị khác và tương tác với ứng dụng server qua giao thức HTTP.
Phần giao diện người dùng được gọi là client. Client rất đa dạng, bao gồm ứng dụng đơn trang SPA (Single-Page Application, chạy trong trình duyệt), ứng dụng desktop truyền thống, ứng dụng mobile. Thậm chí một ứng dụng web khác cũng có thể trở thành client.
Ứng dụng đơn trang (Single-Page Application, SPA) trong những năm qua trở nên rất phổ biến. Hàng loạt framework do các hãng lớn phát triển dành cho phát triển SPA client như React (Facebook), Angular (Google).
Trong SPA, thành phần client chạy trên trình duyệt và được xây dựng hoàn toàn bằng JavaScript. Thành phần server gửi cho trình duyệt code JavaScript một lần lúc trình duyệt truy xuất ứng dụng. Sau đó SPA và server chỉ còn trao đổi dữ liệu (qua HTTP) ở dạng JSON hoặc XML.
Ứng dụng mobile cũng vô cùng phổ biến trong nhiều năm qua. Do đặc thù của thiết bị di động, việc xử lý và lưu trữ dữ liệu của các loại ứng dụng này thường không thực hiện ngay trên thiết bị. Thay vào đó, chúng được thực hiện trên một server. Ứng dụng mobile cùng truy xuất server theo cách tương tự như ứng dụng SPA qua HTTP.
Ứng dụng desktop hiện nay, nhất là các ứng dụng business, cũng theo xu hướng sử dụng một server chung để lưu trữ và xử lý dữ liệu. Loại ứng dụng desktop triển khai theo mô hình này tiện lợi trong mạng cục bộ và thậm chí có thể hoạt động qua Internet.
Thành phần server xây dựng bằng Asp.net Core được gọi là Web API. Web API chịu trách nhiệm cung cấp dữ liệu, chủ yếu ở dạng JSON và XML, cho client. Web API cung cấp một loạt URL mà client có thể sử dụng để truy xuất hoặt thay đổi dữ liệu trên server qua HTTP.
Một điểm đặc biệt là cùng một Web API có thể đồng thời được sử dụng bởi SPA, mobile, desktop và các ứng dụng khác. Điều này dẫn đến Web API trở thành một phần vô cùng quan trọng trong các hệ thống ứng dụng hiện đại.
Web API có thể triển khai song song với một ứng dụng web truyền thống hoặc có thể hoạt động hoàn toàn độc lập phục vụ các ứng dụng client khác nhau.
Khai thác dịch vụ Web API
Ở phần trên, khi chạy debug ứng dụng web API bạn đã mở xem thông tin trên trình duyệt. Hẳn bạn đã thấy, dữ liệu bạn nhận được chỉ là một chuỗi JSON.
Đối với người dùng đầu cuối, chuỗi JSON này không có nhiều tác dụng.
Trên thực tế, dữ liệu trả về của web API không hướng tới người dùng cuối mà dành cho chương trình khác sử dụng. Điều này có nghĩa là (1) bạn không thể đơn thuần khai khác Web API trực tiếp qua trình duyệt như đối với ứng dụng web truyền thống, và (2) bạn phải xây dựng chương trình client riêng để nhận và diễn giải dữ liệu.
Tương tự như vậy, nếu bạn có các yêu cầu tương tác khác với dữ liệu thông qua Web API (như thêm / sửa / xóa), bạn không thể trực tiếp thực hiện trên trình duyệt. Bạn phải xây dựng chương trình riêng để giúp người dùng đầu cuối làm việc này.
Như đã trình bày ở phần đầu tiên của bài, chương trình client của Web API rất đa dạng, bao gồm cả ứng dụng desktop, SPA, mobile.
Để minh họa việc khai thác dữ liệu từ Web API, chúng ta sẽ xây dựng một ứng dụng console rất đơn giản.
Bước 1. Tạo dự án Console trong cùng solution với HelloWebApi
Bước 2. Cài đặt gói thư viện NewtonSoft.Json cho dự án Console.
Bạn có thể sử dụng giao diện đồ họa Nuget Package Manager của Visual Studio hoặc qua giao diện dòng lệnh Nuget Package Manager Console.
Nếu sử dụng Package manager console, hãy sử dụng lệnh
Install-Package Newtonsoft.Json
.
Chú ý chọn Default project là console app bạn đang cần cài.
Tương tự, cài đặt gói thư viện sau cho console:
Install-Package System.Net.Http.Formatting.Extension
Bước 3. Viết code như sau cho Program.cs
using System; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { RunAsync().Wait(); Console.ReadKey(); } static async Task RunAsync() { using var client = new HttpClient { BaseAddress = new Uri("http://localhost:5000") }; client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync("/weatherforecast"); if (response.IsSuccessStatusCode) { var data = await response.Content.ReadAsAsync
(); Console.WriteLine($"Records retrieved: {data.Length}"); foreach (var d in data) { Console.WriteLine($"{d.Date}\t{d.TemperatureC}\t\t{d.Summary}"); } } } } public class WeatherForecast { public DateTime Date { get; set; } public int TemperatureC { get; set; } public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); public string Summary { get; set; } } }
Bước 4. Thiết lập để có thể debug đồng thời cả HelloWebApi và Console
Click phải vào tên solution chọn Properties. Điều chỉnh trong hộp thoại như dưới đây:
Bước 5. Chạy debug và thu được kết quả như sau:
Như bạn thấy, trong .NET, để khai thác dịch vụ của Web API bạn phải sử dụng HttpClient – thư viện chuyên cho làm việc với giao thức HTTP.
Tùy thuộc vào từng công nghệ khi xây dựng client, bạn phải sử dụng các loại kỹ thuật khác nhau.
Ở phần sau của loạt bài học này chúng ta sẽ điểm qua một số công nghệ phổ biến.
+ Nếu bạn thấy site hữu ích, trước khi rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.+ Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.+ Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.Cảm ơn bạn!
Adding a Model
A model is an object that represents the data in your application. ASP.NET Web API can automatically serialize your model to JSON, XML, or some other format, and then write the serialized data into the body of the HTTP response message. As long as a client can read the serialization format, it can deserialize the object. Most clients can parse either XML or JSON. Moreover, the client can indicate which format it wants by setting the Accept header in the HTTP request message.
Let's start by creating a simple model that represents a product.
If Solution Explorer is not already visible, click the View menu and select Solution Explorer. In Solution Explorer, right-click the Models folder. From the context menu, select Add then select Class.
Name the class "Product". Add the following properties to the
Product
class.
namespace ProductsApp.Models { public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public decimal Price { get; set; } } }
Building a Web API
Let's start with creating a Web API project.
Start Visual Studio and select New project from the Start page or from the File menu select "File" -> "New" -> "Project...".
In the template pane select Installed Templates and expand the Visual C# menu. Inside that Visual C# select Web. In the list of projects select ASP.Net MVC 4 Web Application.
And name the project WebAPI_Basic.
For reference see the following snapshot.
After adding, a new dialog will pop-up.
Inside the project template select Web API and in the view engine select Razor.
A new project is created now.
See this App Running on Azure
Would you like to see the finished site running as a live web app? You can deploy a complete version of the app to your Azure account.
You need an Azure account to deploy this solution to Azure. If you do not already have an account, you have the following options:
- Open an Azure account for free - You get credits you can use to try out paid Azure services, and even after they're used up you can keep the account and use free Azure services.
- Activate MSDN subscriber benefits - Your MSDN subscription gives you credits every month that you can use for paid Azure services.
Tạo API Controller đầu tiên
Ở phần trước chúng ta đã tạo được dự án Web API đầu tiên. Tuy nhiên chúng ta chưa thay đổi bất cứ nội dung gì. Tiếp theo đây chúng ta sẽ tạo API Controller riêng đầu tiên.
Giả sử bạn sử dụng Visual Studio.
Bước 1. Click phải vào thư mục Controller => Chọn Add => Controller …
Bước 2. Chọn node Common / API (bên trái) và chọn mục API Controller – Empty bên khung phải.
Đặt tên cho file code mới là PresidentController.cs
Bước 3. Viết code cho PresidentController.cs như sau:
using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; namespace HelloWebApi.Controllers { [Route("api/[controller]")] [ApiController] public class PresidentController : ControllerBase { IEnumerable
_presidents = new List
{ "Biden", "Trump", "Bush", "Clinton" }; public IEnumerable
Index() { return _presidents; } } }
Bước 4. Chạy debug và mở Url sau trong trình duyệt
http://localhost:5000/api/president
Bạn thu được kết quả như sau:
Hãy để ý mấy vấn đề sau:
-
Bạn tiếp tục sử dụng các class trong namespace
Microsoft.AspNetCore.Mvc
như trong dự án MVC. -
Chúng ta đang sử dụng attribute routing (
[Route("api/[controller]")]
) với
PresidentController
; -
Lớp PresidentController được đánh dấu với attribute
[ApiController]
; -
Lớp PresidentController kế thừa từ
ControllerBase
; -
Action Index có kiểu trả về là IEnumerable
chứ không phải IActionResult như thường lệ trong MVC.
Trong các bài học tiếp theo chúng ta sẽ lần lượt phân tích các vấn đề trên.
Why to use the Web API
Currently most mobile devices, browsers and tablets are the medium for accessing most of the internet and in this also people are using mobile apps the most and to provide data to apps we are now going to use the Microsoft new technology called Web API.
When to use it
If you want to expose the data/information of your application to your clients and other people then that other people can use your data and interact with the data/information you expose to them.
For example, a mobile application requires a service.
HTML 5 requires a service.
Desktop PC and tablets require services.
Currently most device apps require Web API services.
The ASP.Net Framework leverages both web standards such as HTTP, JSON and XML and it provides a simple way to build and expose REST based data services.
Some core concepts of ASP.Net MVC are similar to the ASP.Net Web API such as routing and controllers.
Requirements
We are using Visual Studio 2012 for a demo application.
Search by ID
There are several ways to get jQuery. In this example, I used the Microsoft Ajax CDN. You can also download it from http://jquery.com/, and the ASP.NET “Web API” project template includes jQuery as well.
Getting a List of Products
To get a list of products, send an HTTP GET request to “/api/products”.
The jQuery getJSON function sends an AJAX request. The response contains array of JSON objects. The
done
function specifies a callback that is called if the request succeeds. In the callback, we update the DOM with the product information.
$(document).ready(function () { // Send an AJAX request $.getJSON(apiUrl) .done(function (data) { // On success, 'data' contains a list of products. $.each(data, function (key, item) { // Add a list item for the product. $('', { text: formatItem(item) }).appendTo($('#products')); }); }); });
Getting a Product By ID
To get a product by ID, send an HTTP GET request to “/api/products/id”, where id is the product ID.
function find() { var id = $('#prodId').val(); $.getJSON(apiUrl + '/' + id) .done(function (data) { $('#product').text(formatItem(data)); }) .fail(function (jqXHR, textStatus, err) { $('#product').text('Error: ' + err); }); }
We still call
getJSON
to send the AJAX request, but this time we put the ID in the request URI. The response from this request is a JSON representation of a single product.
Basics
- What is Web API?
- Create Web API Project in Visual Studio
- Test Web API
- Web API Controllers
- Configure Web API
- Routing in ASP.NET Web API
- Parameter Binding in ASP.NET Web API
- Return Types of Web API Action Method
- Request, Response Formats in ASP.NET Web API
- Media Type Formatters in ASP.NET Web API
- Web API Filters
- Configure Dependency Injection in ASP.NET Web API
- Web API Hosting
- ASP.NET Web API Learning Resources
Web API Test |
Web API Tests |
Bắt đầu từ bài học này chúng ta chuyển sang một dạng ứng dụng web hơi khác biệt, trong đó Asp.net Core chạy trên server giờ chỉ đóng vai trò cung cấp dữ liệu ở dạng JSON hoặc XML. Loại chương trình Asp.net Core như thế được gọi là Web API. Web API trong Asp.net Core chia sẻ phần lớn kỹ thuật với MVC framework mà bạn vừa học.
Using F12 to View the HTTP Request and Response
When you are working with an HTTP service, it can be very useful to see the HTTP request and response messages. You can do this by using the F12 developer tools in Internet Explorer 9. From Internet Explorer 9, press F12 to open the tools. Click the Network tab and press Start Capturing. Now go back to the web page and press F5 to reload the web page. Internet Explorer will capture the HTTP traffic between the browser and the web server. The summary view shows all the network traffic for a page:
Locate the entry for the relative URI “api/products/”. Select this entry and click Go to detailed view. In the detail view, there are tabs to view the request and response headers and bodies. For example, if you click the Request headers tab, you can see that the client requested “application/json” in the Accept header.
If you click the Response body tab, you can see how the product list was serialized to JSON. Other browsers have similar functionality. Another useful tool is Fiddler, a web debugging proxy. You can use Fiddler to view your HTTP traffic, and also to compose HTTP requests, which gives you full control over the HTTP headers in the request.
Next Steps
- For a more complete example of an HTTP service that supports POST, PUT, and DELETE actions and writes to a database, see Using Web API 2 with Entity Framework 6.
- For more about creating fluid and responsive web applications on top of an HTTP service, see ASP.NET Single Page Application.
- For information about how to deploy a Visual Studio web project to Azure App Service, see Create an ASP.NET web app in Azure App Service.
Web API trong Asp.net Core
Khi xây dựng Web API trong Asp.net Core, về cơ bản bạn tiếp tục sử dụng MVC framework với một số thay đổi về kỹ thuật.
Điều này có nghĩa là khi xây dựng Web API, bạn xây dựng hoặc sử dụng các thành phần Model như trong ứng dụng MVC. Controller trong Web API chính là Controller của MVC.
Trong Asp.net cổ điển, MVC và Web API là hai framework khác nhau. Trong Asp.net Core bạn sử dụng cùng một framework MVC để tạo ra cả ứng dụng web truyền thống và web API.
Do vậy bạn tiếp tục làm việc với những khái niệm quen thuộc từ MVC như action, routing, model binding, model validation, view model.
Sự khác biệt lớn nhất khi sử dụng MVC để tạo ra Web API nằm ở chỗ: thành phần View của MVC giờ được thay thế bằng JSON hoặc XML. Thay vì sử dụng các Razor template để sinh HTML, action trong Web API sẽ chuyển đổi dữ liệu thành chuỗi JSON hoặc XML. Quá trình chuyển đổi này được gọi là serialization.
Có thể hình dung rằng thành phần View của MVC trong Web API giờ không còn dành cho người dùng (user-friendly) nữa mà là dành cho chương trình khác sử dụng (machine-friendly).
Như vậy, Web API trong Asp.net Core không phải là một framework riêng rẽ.
Ứng dụng Web API có thể triển khai song song bên cạnh ứng dụng MVC hoặc có thể xây dựng hoàn toàn độc lập.
Tuy nhiên cần lưu ý, mỗi loại client có cách khác nhau để sử dụng dịch vụ do Web API cung cấp.
Keywords searched by users: asp mvc web api
Categories: Có được 78 Asp Mvc Web Api
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/