Tạo ứng dụng API Web bằng Visual Studio
Trong bài viết này, tôi sẽ thảo luận về quy trình từng bước để tạo Ứng dụng API Web. Vui lòng đọc bài viết trước của chúng tôi trước khi tiếp tục bài viết này, nơi chúng tôi đã giới thiệu tổng quan về khung API Web ASP.NET . Là một phần của bài viết này, chúng tôi đã ăn để thảo luận về các gợi ý sau.
- Làm cách nào để tạo một ứng dụng ASP.NET Web API bằng Visual Studio?
- Hiểu cấu trúc thư mục và mã tự động tạo trong ứng dụng API web.
- Hiểu về Trình điều khiển API Web.
- Các động từ GET, POST, PUT và DELETE trong API Web là gì?
- Hiểu về WebApiConfig trong Ứng dụng API Web ASP.NET.
- Hiểu các động từ yêu cầu, tiêu đề yêu cầu, thân yêu cầu và thân phản hồi.
Tạo ứng dụng API Web bằng Visual Studio:
Đầu tiên, mở Visual Studio và sau đó chọn File => New => Project (hoặc nhấn Ctrl + Shift + N) như trong hình bên dưới.
Trong “ New Project ” cửa sổ Chọn “ Visual C # ” dưới “ Installed - Templates ” và Từ panel giữa chọn ASP.NET Web Application và đặt tên cho dự án như “ FirstWebAPIDemo ” và sau đó nhấn vào “ OK ” nút như hình trong hình dưới đây.
Khi bạn nhấp vào nút OK , sau đó một cửa sổ mới sẽ mở ra với Tên Dự án ASP.NET mới để chọn Mẫu dự án và từ cửa sổ đó chọn mẫu dự án API Web và nhấp vào nút OK như trong hình bên dưới.
Khi bạn nhấp vào nút OK, sẽ mất một chút thời gian để tạo dự án cho chúng tôi.
Hiểu cấu trúc thư mục của ứng dụng API Web:
Nếu bạn đã làm việc với ASP.NET MVC Framework, thì cấu trúc thư mục dự án sẽ quen thuộc với bạn như hiển thị bên dưới.
Ở đây, chúng tôi có các thư mục riêng cho Models, Views và Controllers và hơn nữa, trong thư mục Controllers, chúng tôi có cả MVC và Web API Controller như trong hình bên dưới.
Điều quan trọng cần ghi nhớ là Web API Controller khác với MVC Controller. Trong ví dụ của chúng tôi, ValuesController là Trình điều khiển WebAPI.
Nếu bạn quan sát Lớp ValuesControll ở trên , thì bạn sẽ thấy rằng nó kế thừa từ lớp ApiControll có trong không gian tên sytem.web.http .
Hơn nữa, nếu bạn nhận thấy rằng lớp HomeController là một MVC Controller, được kế thừa từ lớp Trình điều khiển Controller có trong không gian tên System.Web.Mvc như trong hình bên dưới.
Ở đây chúng ta sẽ tập trung vào bộ điều khiển API Web (tức là Bộ điều khiển giá trị).
Lưu ý rằng trong ValuesController, chúng ta có các phương thức như Get, Put, Post và Xóa bản đồ đó thành các động từ HTTP GET, PUT, POST và DELETE tương ứng như trong hình bên dưới.
Chúng tôi có 2 phiên bản nạp chồng của phương thức Get () - Một phương thức không có bất kỳ tham số nào và một phiên bản khác có tham số id. Cả hai phương thức này đều phản ứng với động từ GET HTTP tùy thuộc vào việc tham số id có được thông qua hay không trong URL.
Bây giờ hãy xem tuyến đường mặc định cho dự án API Web của chúng tôi. Chúng tôi có phương thức Application_Start () trong tệp Global.asax . Phương thức này được thực thi khi ứng dụng khởi động lần đầu tiên. Trong phương thức Application_Start (), chúng tôi có cấu hình cho Bộ lọc, Gói, v.v. như hiển thị bên dưới.
Cái mà chúng tôi quan tâm ở đây là cấu hình cho dự án API Web của chúng tôi, nằm trong phương thức WebApiConfig.Register () . Vì vậy, nhấp chuột phải vào phương thức WebApiConfig.Register và sau đó chọn Phương pháp "Go To Definition" từ menu ngữ cảnh sẽ đưa bạn đến phương thức Register () của lớp WebApiConfig như dưới đây.
Lớp này nằm trong thư mục App_Start.
Bạn có thể thấy một tuyến mặc định được định cấu hình trong phương thức Đăng ký () cho dự án API Web của chúng tôi. Các tuyến API Web khác với các tuyến MVC. Bạn có thể tìm thấy các tuyến MVC trong tệp RouteConfig.cs có trong thư mục App_Start .
Tuyến mặc định trong API Web bắt đầu bằng API từ theo sau là / và sau đó là tên của bộ điều khiển và sau đó là một / và một tham số id tùy chọn như được hiển thị bên dưới.
Api api / {control} / {id}
Tại thời điểm này, nếu bạn sử dụng URI sau trong trình duyệt, bạn sẽ nhận được thông báo lỗi - Ủy quyền đã bị từ chối cho yêu cầu này.
http: // localhost: xxxxx / api / giá trị
Để loại bỏ lỗi này, hãy nhận xét thuộc tính Authorization trên lớp ValuesControll . Điều này có liên quan đến bảo mật mà chúng ta sẽ thảo luận trong một bài viết sau.
Bây giờ nếu bạn phát hành URI http: // localhost: xxxxx / api / value i n trình duyệt, thì bạn sẽ thấy XML sau đây là kết quả
Hãy để chúng tôi hiểu những gì đang xảy ra ở đây.
Tên của bộ điều khiển là giá trị của Viking . Vì vậy, nếu bạn phát hành một URI http: // localhost: portnumber / api / value , thì API API Web sẽ tìm kiếm một bộ điều khiển có tên Values + bộ điều khiển từ tức là ValuesController trong ứng dụng của bạn.
Vì vậy, nếu bạn đã chỉ định các giá trị trong URI, nó sẽ tìm ValuesController , nếu bạn chỉ định Sản phẩm , thì nó sẽ tìm kiếm ProductsController.
Trong một ứng dụng trong thế giới thực, đây có thể là tên miền, ví dụ: http://codelean.vn/api/values Trình duyệt đang đưa ra một yêu cầu GET để ánh xạ tới phương thức Get () trong lớp ValuesController . GET () trong bộ điều khiển giá trị đang trả về value1 và value2, đây là những gì chúng ta thấy trong trình duyệt.
Chúng ta có một quá tải khác của phương thức GET () trong Bộ điều khiển giá trị lấy tham số Id. Nếu bạn nhớ với tuyến mặc định trong tệp WebApiConfig, chúng tôi đã chỉ định tham số id là tùy chọn. Đây là lý do tại sao chúng ta có thể gọi phương thức GET có hoặc không có tham số Id. Vì vậy, nếu bạn đã chỉ định tham số id trong URI, thì phương thức Get () với tham số id trong bộ điều khiển giá trị sẽ được gọi
Nếu không tìm thấy bộ điều khiển có tên được chỉ định bởi Khung API Web, thì Khung sẽ có lỗi. Ví dụ, trong ứng dụng của chúng tôi, nếu chúng tôi nhận xét lớp của ValuesCont điều khiển trong dự án của chúng tôi và sau đó sử dụng các giá trị URI / api / thì bạn sẽ gặp lỗi sau
Không tìm thấy tài nguyên HTTP phù hợp với URI yêu cầu 'http: // localhost: 15648 / api / value'. Không tìm thấy loại nào khớp với bộ điều khiển có tên 'giá trị'.
Chúng ta hãy thảo luận về POST, PUT và DELETE.
Trong một hàng của bảng cơ sở dữ liệu, chúng ta có thể thực hiện 4 hành động sau
Từ quan điểm API Web ASP.NET, 4 hành động này tương ứng với động từ GET, POST, PUT và DELETE như hiển thị bên dưới
Hãy để chúng tôi thảo luận về một số điều khoản và khái niệm có liên quan đến yêu cầu và phản hồi HTTP.
Động từ yêu cầu:
Các động từ HTTP như GET, POST, PUT và DELETE mô tả những gì nên được thực hiện với tài nguyên API Web. Ví dụ, bạn có cần đọc, tạo, cập nhật hoặc xóa một thực thể không? Các động từ HTTP GET, PUT, POST và DELETE là những động từ được sử dụng phổ biến nhất trong các ứng dụng thời gian thực. Để biết danh sách các động từ HTTP hoàn chỉnh, vui lòng kiểm tra URL sau
Tiêu đề yêu cầu:
Khi một máy khách gửi yêu cầu đến máy chủ, yêu cầu chứa một tiêu đề và phần thân. Tiêu đề của yêu cầu chứa một số thông tin bổ sung như loại phản hồi mà khách hàng yêu cầu. Ví dụ, máy khách muốn phản hồi ở định dạng XML hoặc JSON.
Cơ quan yêu cầu:
Phần thân yêu cầu chứa dữ liệu mà bạn muốn gửi đến máy chủ. Ví dụ: một yêu cầu POST chứa dữ liệu trong Phần thân yêu cầu cho mục mới mà bạn muốn tạo. Dữ liệu có thể ở dạng XML hoặc JSON.
Cơ quan phản hồi:
Phần phản hồi chứa dữ liệu được gửi dưới dạng phản hồi từ máy chủ. Ví dụ: nếu bạn yêu cầu một nhân viên cụ thể, thì cơ quan phản hồi bao gồm các chi tiết nhân viên ở dạng XML hoặc JSON.
Mã trạng thái phản hồi:
Mã trạng thái phản hồi là mã trạng thái HTTP sẽ chỉ định trạng thái của yêu cầu. Các mã trạng thái phổ biến nhất là 200 / OK, 204 / Không có nội dung, 500 / Lỗi máy chủ nội bộ, 404 / Không tìm thấy. Nếu bạn muốn xem danh sách đầy đủ các mã trạng thái HTTP thì hãy làm theo cách dưới đây
Để thực hiện các hành động GET, POST, PUT & DELETE, chúng tôi sẽ sử dụng một công cụ có tên là Fiddler. Bạn có thể tải xuống fiddler từ liên kết sau
Sửa đổi ValuesContoder như hiển thị bên dưới, để nó có thể hỗ trợ các hành động POST, PUT và DELETE.
- public class ValuesController : ApiController
- {
- static List<string> strings = new List<string>()
- {
- "value0", "value1", "value2"
- };
- // GET api/values
- public IEnumerable<string> Get()
- {
- return strings;
- }
- // GET api/values/5
- public string Get(int id)
- {
- return strings[id];
- }
- // POST api/values
- public void Post([FromBody]string value)
- {
- strings.Add(value);
- }
- // PUT api/values/5
- public void Put(int id, [FromBody]string value)
- {
- strings[id] = value;
- }
- // DELETE api/values/5
- public void Delete(int id)
- {
- strings.RemoveAt(id);
- }
- }
Tại thời điểm các phương thức Post (), Put () và Delete () trong ValuesController đang trả về khoảng trống. Đó là lý do tại sao chúng tôi nhận được mã trạng thái 204 No Content . Trong ASP.NET Web API, một phương thức hành động trả về void sẽ gửi mã trạng thái 204 No Content theo mặc định, nhưng chúng ta có thể kiểm soát hành vi này mà chúng ta sẽ thảo luận trong một bài viết sau.
Trong bài viết tiếp theo, tôi sẽ thảo luận về cách sử dụng Swagger trong WEB API để ghi lại và kiểm tra các dịch vụ API Web ASP.NET. Ở đây, trong bài viết này, tôi cố gắng giải thích từng bước tạo Ứng dụng API Web bằng một ví dụ. Tôi hy vọng bạn thích bài viết này.
CodeLean.vn
Đăng nhận xét