Skip to content
Home » Asp Mvc Web Api | Web Api Trong Asp.Net Core

Asp Mvc Web Api | Web Api Trong Asp.Net Core

How To Consume WEB API in ASP.NET Core MVC | ASP.NET Web API | Read Data

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 IEnumerable GetAllProducts() { 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 IEnumerable type.
  • 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 { 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

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.

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

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:
  • 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/

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.
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

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.

[WebAPI-NET5] #1 - Tạo API đầu tiên
[WebAPI-NET5] #1 – Tạo API đầu tiên

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:


<br /> Product App<br />

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.

  1. [HttpPut]
  2. public void Put(int id, [FromBody]string value)
  3. [HttpPost]
  4. public void Post([FromBody]string value)
  5. [HttpDelete]
  6. public void Delete(int id)
  7. {}

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.

  1. GET IEnumerable

    1. [HttpGet]
    2. public IEnumerable

      GetAllcarDetails()
    3. CarsStock ST = new CarsStock();
    4. CarsStock ST1 = new CarsStock();
    5. List

      li = new List

      ();

    6. ST.CarName = "Maruti Waganor";
    7. ST.CarPrice = "4 Lakh";
    8. ST.CarModel = "VXI";
    9. ST.CarColor = "Brown";
    10. ST1.CarName = "Maruti Swift";
    11. ST1.CarPrice = "5 Lakh";
    12. ST1.CarModel = "VXI";
    13. ST1.CarColor = "RED";
    14. li.Add(ST);
    15. li.Add(ST1);
    16. 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.

  2. GET by id

    1. public IEnumerable

      Get(int id)
    2. CarsStock ST = new CarsStock();
    3. CarsStock ST1 = new CarsStock();
    4. List

      li = new List

      ();

    5. if (id == 1)
    6. ST.CarName = "Maruti Waganor";
    7. ST.CarPrice = "4 Lakh";
    8. ST.CarModel = "VXI";
    9. ST.CarColor = "Brown";
    10. li.Add(ST);
    11. else
    12. ST1.CarName = "Maruti Swift";
    13. ST1.CarPrice = "5 Lakh";
    14. ST1.CarModel = "VXI";
    15. ST1.CarColor = "RED";
    16. li.Add(ST1);
    17. return li;

    In this GET method, you can retrieve records for the database by passing an id.

  3. POST

    1. [HttpPost]
    2. 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.

  4. PUT

    1. [HttpPut]
    2. 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.

  5. DELETE

    1. [HttpDelete]
    2. 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.

  1. 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.

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

Ứ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!

.NET 8 Web API & Entity Framework 🚀 Full CRUD Course (with Code-First Migrations & SQL Server)
.NET 8 Web API & Entity Framework 🚀 Full CRUD Course (with Code-First Migrations & SQL Server)

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.

Xây dựng Backend ứng dụng chứng khoán với ASP .NET Core 7 Api và Websocket
Xây dựng Backend ứng dụng chứng khoán với ASP .NET Core 7 Api và Websocket

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.

.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

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.

    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

    Basics

    1. What is Web API?
    2. Create Web API Project in Visual Studio
    3. Test Web API
    4. Web API Controllers
    5. Configure Web API
    6. Routing in ASP.NET Web API
    7. Parameter Binding in ASP.NET Web API
    8. Return Types of Web API Action Method
    9. Request, Response Formats in ASP.NET Web API
    10. Media Type Formatters in ASP.NET Web API
    11. Web API Filters
    12. Configure Dependency Injection in ASP.NET Web API
    13. Web API Hosting
    14. 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.

    ASP.NET Core MVC 6.0 Full Course ( Giỏ hàng, Tìm kiếm nâng cao, Phân trang...)
    ASP.NET Core MVC 6.0 Full Course ( Giỏ hàng, Tìm kiếm nâng cao, Phân trang…)

    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.

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

    Keywords searched by users: asp mvc web api

    Tutorial: Create A Web Api With Asp.Net Core | Microsoft Learn
    Tutorial: Create A Web Api With Asp.Net Core | Microsoft Learn
    Web Api Là Gì? Tài Liệu Web Api Tiếng Việt
    Web Api Là Gì? Tài Liệu Web Api Tiếng Việt
    Asp .Net Core Web Api Using Sql Server | C# Tutorial For Beginners - Youtube
    Asp .Net Core Web Api Using Sql Server | C# Tutorial For Beginners – Youtube
    Web Api Crud Operations And Consume Service In Asp.Net Mvc Application
    Web Api Crud Operations And Consume Service In Asp.Net Mvc Application
    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
    Nghiên Cứu Web Api Với Asp.Net Mvc4
    Nghiên Cứu Web Api Với Asp.Net Mvc4
    Business Application Using Html5, Asp.Net Mvc, Web Api And Knockout.Js -  Part 1 | Dotnetcurry
    Business Application Using Html5, Asp.Net Mvc, Web Api And Knockout.Js – Part 1 | Dotnetcurry
    Làm Quen Với Web Api 2 Trong .Net
    Làm Quen Với Web Api 2 Trong .Net

    See more here: kientrucannam.vn

    Leave a Reply

    Your email address will not be published. Required fields are marked *