Hướng dẫn về dịch vụ web RESTful: API REST là gì với ví dụ
Dịch vụ web yên tĩnh là gì?
Dịch vụ web khôi phục là một dịch vụ nhẹ, có thể bảo trì và có thể mở rộng được xây dựng trên kiến trúc REST. Dịch vụ web Restful, trình bày API từ ứng dụng của bạn theo cách an toàn, thống nhất, không trạng thái cho máy khách gọi. Máy khách gọi có thể thực hiện các hoạt động được xác định trước bằng dịch vụ Restful. Giao thức cơ bản cho REST là HTTP. REST là viết tắt của REpresentational State Transfer.
Các yếu tố chính của RESTful
Các dịch vụ Web REST đã thực sự đi được một chặng đường dài kể từ khi ra đời. Năm 2002, tập đoàn Web đã đưa ra định nghĩa về các dịch vụ web WSDL và SOAP. Điều này hình thành nên tiêu chuẩn về cách triển khai các dịch vụ web.
Năm 2004, tập đoàn web cũng đưa ra định nghĩa về một tiêu chuẩn bổ sung có tên RESTful. Trong vài năm qua, tiêu chuẩn này đã trở nên khá phổ biến. Và đang được sử dụng bởi nhiều trang web phổ biến trên thế giới bao gồm Facebook và Twitter.
REST là một cách để truy cập các tài nguyên nằm trong một môi trường cụ thể. Ví dụ: bạn có thể có một máy chủ có thể lưu trữ các tài liệu, hình ảnh hoặc video quan trọng. Tất cả những điều này là một ví dụ về tài nguyên. Nếu một máy khách, giả sử một trình duyệt web cần bất kỳ tài nguyên nào trong số này, thì nó phải gửi yêu cầu đến máy chủ để truy cập những tài nguyên này. Bây giờ các dịch vụ REST xác định cách truy cập các tài nguyên này.
Các yếu tố chính của việc triển khai RESTful như sau:
- Trung Tâm Tài Liệu – Yếu tố then chốt đầu tiên chính là tài nguyên. Giả sử rằng một ứng dụng web trên máy chủ có hồ sơ của một số nhân viên. Giả sử URL của ứng dụng web là https://demo.guru99.com. Bây giờ để truy cập tài nguyên hồ sơ nhân viên thông qua dịch vụ REST, người ta có thể ra lệnh https://demo.guru99.com/employee/1 – Lệnh này yêu cầu máy chủ web cung cấp thông tin chi tiết về nhân viên có mã số nhân viên là 1.
- Yêu cầu động từ – Chúng mô tả những gì bạn muốn làm với tài nguyên. Trình duyệt đưa ra động từ GET để hướng dẫn điểm cuối mà nó muốn lấy dữ liệu. Tuy nhiên, có rất nhiều động từ khác bao gồm những thứ như POST, PUT và DELETE. Vì vậy trong trường hợp ví dụ https://demo.guru99.com/employee/1 , trình duyệt web thực sự đang đưa ra một động từ GET vì nó muốn lấy thông tin chi tiết về hồ sơ nhân viên.
- Yêu cầu tiêu đề – Đây là những hướng dẫn bổ sung được gửi kèm theo yêu cầu. Những hướng dẫn này có thể xác định loại phản hồi cần thiết hoặc thông tin chi tiết về quyền hạn.
- Nội dung yêu cầu – Dữ liệu được gửi cùng với yêu cầu. Dữ liệu thường được gửi trong yêu cầu khi yêu cầu POST được thực hiện tới dịch vụ web REST. Trong lệnh gọi POST, máy khách thực sự cho dịch vụ web REST biết rằng nó muốn thêm một tài nguyên vào máy chủ. Do đó, nội dung yêu cầu sẽ có thông tin chi tiết về tài nguyên cần được thêm vào máy chủ.
- Nội dung phản hồi - Đây là nội dung chính của câu trả lời. Vì vậy, trong ví dụ API RESTful của chúng tôi, nếu chúng tôi truy vấn máy chủ web thông qua yêu cầu https://demo.guru99.com/employee/1 , máy chủ web có thể trả về một tài liệu XML có đầy đủ thông tin chi tiết về nhân viên trong Nội dung phản hồi.
- Mã trạng thái phản hồi – Các mã này là các mã chung được trả về cùng với phản hồi từ máy chủ web. Một ví dụ là mã 200 thường được trả về nếu không có lỗi khi trả về phản hồi cho máy khách.
Phương pháp thư giãn
Sơ đồ bên dưới hiển thị hầu hết tất cả các động từ (POST, GET, PUT và DELETE) và một ví dụ API REST về ý nghĩa của chúng.
Giả sử rằng chúng ta có dịch vụ web RESTful được xác định tại vị trí. https://demo.guru99.com/employee . Khi máy khách đưa ra bất kỳ yêu cầu nào đối với dịch vụ web này, nó có thể chỉ định bất kỳ động từ HTTP thông thường nào như GET, POST, DELETE và PUT. Dưới đây là những gì sẽ xảy ra nếu các động từ tương ứng được khách hàng gửi.
- POST – Điều này sẽ được sử dụng để tạo một nhân viên mới bằng dịch vụ web RESTful
- GET – Điều này sẽ được sử dụng để lấy danh sách tất cả nhân viên đang sử dụng dịch vụ web RESTful
- PUT – Điều này sẽ được sử dụng để cập nhật tất cả nhân viên sử dụng dịch vụ web RESTful
- DELETE – Điều này sẽ được sử dụng để xóa tất cả nhân viên đang sử dụng dịch vụ RESTful
Chúng ta hãy nhìn từ góc độ của một bản ghi duy nhất. Giả sử có một bản ghi nhân viên với mã số nhân viên là 1.
Các hành động sau đây sẽ có ý nghĩa tương ứng.
- POST – Điều này sẽ không áp dụng được vì chúng tôi đang tìm nạp dữ liệu của nhân viên 1 đã được tạo.
- GET – Điều này sẽ được sử dụng để lấy thông tin chi tiết của nhân viên có Mã số nhân viên là 1 bằng cách sử dụng dịch vụ web RESTful
- PUT – Điều này sẽ được sử dụng để cập nhật thông tin chi tiết của nhân viên có Mã số nhân viên là 1 bằng cách sử dụng dịch vụ web RESTful
- DELETE – Dùng để xóa thông tin chi tiết của nhân viên có Mã số nhân viên là 1
Tại sao yên tĩnh
Restful trở nên phổ biến chủ yếu vì những lý do sau:
1. Ngôn ngữ và môi trường không đồng nhất – Đây là một trong những lý do cơ bản giống như chúng ta đã thấy đối với XÀ BÔNG TẮM là tốt.
- Nó cho phép các ứng dụng web được xây dựng trên nhiều ngôn ngữ lập trình khác nhau có thể giao tiếp với nhau
- Với sự trợ giúp của các dịch vụ Restful, các ứng dụng web này có thể nằm trên các môi trường khác nhau, một số có thể ở trên Windowsvà những thứ khác có thể có trên Linux.
Nhưng cuối cùng, bất kể môi trường thế nào, kết quả cuối cùng luôn giống nhau là họ có thể nói chuyện với nhau. Các dịch vụ web an toàn cung cấp tính linh hoạt này cho các ứng dụng được xây dựng trên nhiều ngôn ngữ lập trình và nền tảng khác nhau để giao tiếp với nhau.
Hình ảnh bên dưới đưa ra ví dụ về một ứng dụng web có yêu cầu giao tiếp với các ứng dụng khác như Facebook, Twitter và Google.
Bây giờ, nếu một ứng dụng khách phải làm việc với các trang web như Facebook, Twitter, v.v., họ có thể phải biết ngôn ngữ mà Facebook, Google và Twitter được xây dựng trên đó là gì cũng như chúng được xây dựng trên nền tảng nào.
Dựa trên điều này, chúng ta có thể viết mã giao tiếp cho ứng dụng web của mình, nhưng điều này có thể là một cơn ác mộng.
Facebook, Twitter và Google thể hiện chức năng của họ dưới dạng dịch vụ web Restful. Điều này cho phép mọi ứng dụng khách gọi các dịch vụ web này thông qua REST.
2. Sự kiện Thiết bị – Ngày nay, mọi thứ cần phải tiếp tục di động thiết bị, cho dù đó là thiết bị di động, máy tính xách tay hay thậm chí là hệ thống ô tô.
Bạn có thể tưởng tượng được lượng công sức bỏ ra để thử và mã hóa các ứng dụng trên các thiết bị này để giao tiếp với các ứng dụng web thông thường không? Một lần nữa, Restful API có thể giúp công việc này trở nên đơn giản hơn vì như đã đề cập ở điểm số 1, bạn thực sự không cần biết lớp cơ bản của thiết bị là gì.
3. Cuối cùng là sự kiện Đám Mây – Mọi thứ đang chuyển sang đám mây. Các ứng dụng đang dần chuyển sang các hệ thống dựa trên đám mây như trong Azure or Amazon. Azure và Amazon cung cấp nhiều API dựa trên kiến trúc Restful. Do đó, các ứng dụng hiện cần được phát triển theo cách tương thích với Đám mây. Vì vậy, vì tất cả các kiến trúc dựa trên Đám mây đều hoạt động theo nguyên tắc REST, nên việc lập trình các dịch vụ web trên kiến trúc dựa trên dịch vụ REST có ý nghĩa hơn để tận dụng tối đa các dịch vụ dựa trên Đám mây.
Yên bình Archikiến trúc
Một ứng dụng hoặc kiến trúc được coi là RESTful hoặc theo phong cách REST có các đặc điểm sau
1. Trạng thái và chức năng được chia thành các tài nguyên phân tán – Điều này có nghĩa là mọi tài nguyên đều có thể truy cập được thông qua các lệnh HTTP thông thường như GET, POST, PUT hoặc DELETE. Vì vậy, nếu ai đó muốn lấy tệp từ máy chủ, họ có thể đưa ra yêu cầu GET và nhận tệp. Nếu họ muốn đặt một tệp trên máy chủ, họ có thể đưa ra yêu cầu POST hoặc PUT. Và cuối cùng, nếu họ muốn xóa một tệp khỏi máy chủ, họ có thể đưa ra yêu cầu XÓA.
2. Kiến trúc là máy khách/máy chủ, không trạng thái, phân lớp và hỗ trợ lưu trữ đệm
- Máy khách-máy chủ là kiến trúc điển hình trong đó máy chủ có thể là máy chủ web lưu trữ ứng dụng và máy khách có thể đơn giản như trình duyệt web.
- Không trạng thái có nghĩa là trạng thái của ứng dụng không được duy trì trong REST. Ví dụ: nếu bạn xóa tài nguyên khỏi máy chủ bằng lệnh DELETE, bạn không thể mong đợi thông tin xóa đó sẽ được chuyển sang yêu cầu tiếp theo.
Để đảm bảo rằng tài nguyên bị xóa, bạn cần đưa ra yêu cầu GET. Yêu cầu GET trước tiên sẽ được sử dụng để lấy tất cả tài nguyên trên máy chủ. Sau đó người ta sẽ cần xem tài nguyên có thực sự bị xóa hay không.
Nguyên tắc và ràng buộc RESTFul
Kiến trúc REST dựa trên một số đặc điểm được trình bày chi tiết bên dưới. Bất kỳ dịch vụ web RESTful nào cũng phải tuân thủ các đặc điểm bên dưới để được gọi là RESTful. Những đặc điểm này cũng được gọi là các nguyên tắc thiết kế cần tuân theo khi làm việc với các dịch vụ dựa trên RESTful.
Đây là yêu cầu cơ bản nhất của kiến trúc dựa trên REST. Điều này có nghĩa là máy chủ sẽ có dịch vụ web RESTful cung cấp chức năng cần thiết cho máy khách. Máy khách gửi yêu cầu đến dịch vụ web trên máy chủ. Máy chủ sẽ từ chối yêu cầu hoặc tuân thủ và cung cấp phản hồi đầy đủ cho máy khách.
- Không quốc tịch
Khái niệm không trạng thái có nghĩa là khách hàng có trách nhiệm đảm bảo rằng tất cả thông tin cần thiết được cung cấp cho máy chủ. Điều này là cần thiết để máy chủ có thể xử lý phản hồi một cách thích hợp. Máy chủ không được duy trì bất kỳ loại thông tin nào giữa các yêu cầu từ máy khách. Đó là một chuỗi câu hỏi-trả lời độc lập rất đơn giản. Khách hàng đặt câu hỏi, máy chủ trả lời thích hợp. Khách hàng sẽ hỏi một câu hỏi khác. Máy chủ sẽ không nhớ kịch bản trả lời câu hỏi trước đó và sẽ cần trả lời câu hỏi mới một cách độc lập.
- Bộ nhớ cache
Khái niệm Cache giúp giải quyết vấn đề không trạng thái đã được mô tả ở điểm cuối cùng. Vì mỗi yêu cầu của máy chủ và máy khách có bản chất độc lập nên đôi khi máy khách có thể yêu cầu lại máy chủ cho cùng một yêu cầu. Điều này mặc dù nó đã yêu cầu nó trong quá khứ. Yêu cầu này sẽ đến máy chủ và máy chủ sẽ đưa ra phản hồi. Điều này làm tăng lưu lượng truy cập trên mạng. Bộ đệm là một khái niệm được triển khai trên máy khách để lưu trữ các yêu cầu đã được gửi đến máy chủ. Vì vậy, nếu máy khách đưa ra yêu cầu tương tự, thay vì đến máy chủ, nó sẽ đi tới bộ đệm và nhận thông tin cần thiết. Điều này giúp tiết kiệm lượng lưu lượng mạng qua lại từ máy khách đến máy chủ.
- Hệ thống phân lớp
Khái niệm về hệ thống phân lớp là bất kỳ lớp bổ sung nào chẳng hạn như lớp phần mềm trung gian đều có thể được chèn giữa máy khách và máy chủ thực tế lưu trữ dịch vụ web RESTFul (Lớp phần mềm trung gian là nơi tạo ra tất cả logic nghiệp vụ. Đây có thể là một dịch vụ bổ sung được tạo mà khách hàng có thể tương tác trước khi thực hiện cuộc gọi đến dịch vụ web.). Nhưng việc giới thiệu lớp này cần phải minh bạch để không làm xáo trộn sự tương tác giữa client và server.
- Giao diện/Hợp đồng thống nhất
Đây là kỹ thuật cơ bản về cách hoạt động của các dịch vụ web RESTful. Về cơ bản, RESTful hoạt động trên lớp web HTTP và sử dụng các động từ chính bên dưới để làm việc với các tài nguyên trên máy chủ
- POST – Để tạo tài nguyên trên máy chủ
- GET – Để lấy tài nguyên từ máy chủ
- PUT - Để thay đổi trạng thái của tài nguyên hoặc cập nhật nó
- XÓA – Để xóa hoặc xóa tài nguyên khỏi máy chủ
Tạo dịch vụ web Restful đầu tiên của bạn trong ASP.NET
Bây giờ trong hướng dẫn API REST này, chúng ta sẽ tìm hiểu cách tạo dịch vụ web Restful trong ASP.NET:
Các dịch vụ web có thể được tạo ra bằng nhiều ngôn ngữ khác nhau. Nhiều môi trường phát triển tích hợp có thể được sử dụng để tạo các dịch vụ dựa trên REST.
Trong ví dụ về RESTful API này, chúng ta sẽ tạo ứng dụng REST của mình trong .Net bằng Visual Studio. Trong ví dụ của chúng tôi, đối với các dịch vụ web Restful, chúng tôi sẽ mô phỏng ví dụ về dịch vụ REST sau.
Chúng tôi sẽ có một dịch vụ web Restful sẽ hoạt động trên tập dữ liệu bên dưới.
Tập hợp dữ liệu bên dưới thể hiện một ví dụ về API REST về việc có một công ty hiển thị Hướng dẫn mà họ có dựa trên Tutorialid.
Hướng dẫn | Tên hướng dẫn |
---|---|
0 | Mảng |
1 | hàng đợi |
2 | Stacks |
Trong ví dụ hướng dẫn API REST của chúng tôi, chúng tôi sẽ triển khai các Động từ Restful bên dưới.
- NHẬN hướng dẫn – Khi khách hàng gọi Restful API này, họ sẽ được cung cấp toàn bộ Bộ Hướng dẫn có sẵn từ dịch vụ web.
- NHẬN Hướng dẫn/Hướng dẫn – Khi khách hàng gọi Restful API này, họ sẽ được đặt tên Hướng dẫn dựa trên Tutorialid do khách hàng gửi.
- POST Hướng dẫn/Tên hướng dẫn – Khi khách hàng gọi Restful API này, khách hàng sẽ gửi yêu cầu chèn Tên hướng dẫn. Sau đó, dịch vụ web sẽ thêm tên Hướng dẫn đã gửi vào bộ sưu tập.
- XÓA Hướng dẫn/Hướng dẫn– Khi khách hàng gọi Restful API này, khách hàng sẽ gửi yêu cầu xóa Tên hướng dẫn dựa trên Tutorialid. Sau đó, dịch vụ web sẽ xóa tên Hướng dẫn đã gửi khỏi bộ sưu tập.
Hãy làm theo các bước dưới đây trong hướng dẫn API RESTful này để tạo các dịch vụ web RESTful đầu tiên của chúng tôi, thực hiện việc triển khai ở trên.
Cách tạo dịch vụ web an toàn đầu tiên của bạn
Bước 1) Tạo dự án mới.
Bước đầu tiên là tạo một khoảng trống Asp.Net Ứng dụng web. Từ Visual Studio 2013, nhấp vào tùy chọn menu File->New project.
Khi bạn nhấp vào tùy chọn New Project, Visual Studio sẽ cung cấp cho bạn một hộp thoại khác để chọn loại dự án và cung cấp các chi tiết cần thiết của dự án. Điều này được giải thích trong bước tiếp theo của hướng dẫn RESTful API này
Bước 2) Nhập tên dự án và vị trí.
- Đảm bảo trước tiên chọn dịch vụ web RESTful C# mẫu web của ứng dụng Web ASP.NET. Dự án phải thuộc loại này để tạo dự án dịch vụ web. Bằng cách chọn tùy chọn này, Visual Studio sẽ thực hiện các bước cần thiết để thêm các tệp cần thiết mà bất kỳ ứng dụng dựa trên web nào cũng yêu cầu.
- Đặt tên cho dự án của bạn, trong trường hợp của chúng tôi là “Webservice.REST”.
- Sau đó đảm bảo cung cấp một vị trí nơi các tệp dự án sẽ được lưu trữ.
Khi hoàn tất, bạn sẽ thấy tệp dự án được tạo trong trình khám phá giải pháp của Visual Studio 2013.
Bước 3) Tạo tập tin dịch vụ web.
Bước tiếp theo là tạo tệp dịch vụ web sẽ có dịch vụ web RESTful
- Đầu tiên Nhấp chuột phải vào tệp dự án như hiển thị bên dưới
- Trong bước này,
- Nhấp chuột phải vào tập tin dự án
- Chọn tùy chọn “Thêm-> mục mới”.
Trong hộp thoại xuất hiện, bạn cần thực hiện các thao tác sau
- Chọn tùy chọn Dịch vụ WCF (hỗ trợ Ajax) – Chọn một tệp thuộc loại này, nó sẽ gây ra Visual studio để thêm một số mã cơ bản giúp tạo dịch vụ web RESTful. WCF là viết tắt của Windows Giao tiếp Foundation. WCF là một thư viện cho các ứng dụng của nhiều nền tảng khác nhau hoặc cùng một nền tảng để giao tiếp qua các giao thức khác nhau như TCP, HTTP, HTTPS. Ajax về cơ bản là Không đồng bộ JavaScript và XML. AJAX cho phép các trang web được cập nhật không đồng bộ bằng cách trao đổi một lượng nhỏ dữ liệu với máy chủ ở chế độ nền.
- Tiếp theo đặt tên cho dịch vụ là TutorialService trong trường hợp của chúng tôi.
- Cuối cùng nhấn nút Add để thêm dịch vụ vào giải pháp.
Bước 4) Thực hiện một cấu hình.
Bước tiếp theo là thực sự thực hiện thay đổi cấu hình để cho phép dự án này hoàn thành công việc với các dịch vụ web RESTful. Điều này yêu cầu thực hiện thay đổi đối với tệp có tên web.config. Tệp này xuất hiện trong cùng cửa sổ với tệp dự án Webservice. Tệp Web.config chứa tất cả các cấu hình giúp ứng dụng web hoạt động bình thường. Thay đổi đang được thực hiện thực sự cho phép ứng dụng gửi và nhận dữ liệu dưới dạng dịch vụ web RESTful thuần túy.
- Bấm vào file Web.config để mở mã
- Tìm dòng
- Thay đổi dòng thành
Bước 5) Thêm mã của chúng tôi để thực hiện.
Bước tiếp theo trong hướng dẫn API RESTful này là thêm mã của chúng tôi để triển khai. Tất cả mã được đề cập dưới đây phải được viết trong tệp TutorialService.svc
- Phần đầu tiên là thêm mã để thể hiện dữ liệu sẽ được sử dụng trong chương trình của chúng tôi. Vì vậy, chúng ta sẽ có một danh sách các biến chuỗi với các giá trị “Mảng”, “Hàng đợi” và “Ngăn xếp”. Điều này sẽ đại diện cho tên hướng dẫn có sẵn thông qua dịch vụ lưu trữ web của chúng tôi.
namespace Webservice.REST { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed public class TutorialService { private static List<String> lst = new List<String> (new String[] {"Arrays","Queues","Stacks"});
Bước 6) Xác định mã cho phương thức GET của chúng tôi.
Tiếp theo chúng ta sẽ xác định mã cho phương thức GET của mình. Mã này cũng sẽ nằm trong cùng một tệp TutorialService.svc. Mã này sẽ chạy bất cứ khi nào chúng tôi gọi dịch vụ từ trình duyệt của mình.
Phương pháp dưới đây sẽ được sử dụng để thực hiện kịch bản được đề cập dưới đây
- Nếu người dùng muốn có danh sách tất cả các Hướng dẫn có sẵn thì cần phải viết mã bên dưới để thực hiện việc này.
[WebGet(UriTemplate="/Tutorial")] public String GetAllTutorial() { int count = 1st.Count; String TutorialList = ""; for (int i = 0; i < count; i++) TutorialList = TutorialList + lst[i] + ","; return TutorialList; }
Giải thích mã: -
- Dòng mã đầu tiên là quan trọng nhất. Nó được sử dụng để xác định cách chúng ta có thể gọi phương thức này thông qua một URL. Vì vậy, nếu liên kết tới dịch vụ web của chúng tôi là http://localhost:52645/TutorialService.svc và nếu chúng tôi thêm '/Tutorial' vào URL dưới dạng http://localhost:52645/TutorialService.svc/Tutorial , đoạn mã trên sẽ được gọi. Thuộc tính của 'WebGet' là tham số cho phép phương thức này trở thành phương thức RESTful để có thể gọi nó thông qua động từ GET.
- Đoạn mã này được sử dụng để duyệt qua danh sách các chuỗi của chúng ta trong biến 'lst' và trả về tất cả chúng cho chương trình gọi điện.
Bước 7) Trả lại đầu ra.
Mã bên dưới đảm bảo rằng nếu lệnh gọi GET được thực hiện tới Dịch vụ hướng dẫn có id Hướng dẫn thì nó sẽ trả về Tên hướng dẫn tương ứng dựa trên id Hướng dẫn.
[WebGet (UriTemplate = "/Tutorial/{Tutorialid}")] public String GetTutorialbyID(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); return lst[pid]; }
Giải thích mã: -
- Dòng mã đầu tiên là quan trọng nhất. Nó được sử dụng để xác định cách chúng ta có thể gọi phương thức này thông qua một URL. Vì vậy, nếu liên kết tới dịch vụ web của chúng tôi là http://localhost:52645/TutorialService.svc và nếu chúng tôi thêm '/Tutorial/{Tutorialid}' vào URL thì chúng tôi có thể gọi dịch vụ web là http://localhost:52645/TutorialService.svc/Tutorial/1 như một ví dụ. Sau đó, dịch vụ web sẽ cần trả về tên Hướng dẫn có id Hướng dẫn #1.
- Phần mã này được sử dụng để trả về “Tên hướng dẫn” có id Hướng dẫn được truyền cho phương thức web.
- Theo mặc định, điều cần nhớ là bất cứ thứ gì được truyền tới URL trong trình duyệt đều là một chuỗi.
- Nhưng bạn phải nhớ rằng Chỉ mục trong danh sách của chúng tôi phải là số nguyên, vì vậy, chúng tôi sẽ thêm mã cần thiết để trước tiên chuyển đổi Tutorialid thành Số nguyên, sau đó sử dụng nó để truy cập vào vị trí chỉ mục trong danh sách của chúng tôi và
- Sau đó trả về giá trị cho chương trình gọi tương ứng.
Bước 8) Viết mã cho phương thức POST.
Bước tiếp theo là viết mã cho phương thức POST của chúng ta. Phương thức này sẽ được gọi bất cứ khi nào chúng ta muốn thêm giá trị chuỗi vào danh sách Hướng dẫn thông qua phương thức POST. Ví dụ: nếu bạn muốn thêm tên Hướng dẫn của “Kiểm thử phần mềm” thì bạn cần sử dụng phương thức POST.
Giải thích mã: -
- Dòng đầu tiên là thuộc tính 'WebInvoke' đã được gắn vào phương thức của chúng tôi. Điều này cho phép phương thức được gọi thông qua lệnh gọi POST. Thuộc tính requestFormat và ResponseFormat phải được đề cập dưới dạng JSON, vì khi đăng các giá trị lên dịch vụ web RESTFul, các giá trị phải ở định dạng này.
- Dòng mã thứ hai được sử dụng để thêm giá trị chuỗi được truyền qua lệnh gọi POST vào danh sách chuỗi Hướng dẫn hiện có của chúng tôi.
Bước 9) Thêm phương thức để xử lý thao tác DELETE.
Cuối cùng, chúng ta sẽ thêm phương thức của mình để xử lý thao tác DELETE. Phương thức này sẽ được gọi bất cứ khi nào chúng ta muốn xóa một giá trị chuỗi hiện có khỏi danh sách Hướng dẫn thông qua phương thức DELETE.
[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json, UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public void DeleteTutorial(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); 1st.RemoveAt(pid); }
Giải thích mã: -
- Dòng đầu tiên là thuộc tính 'WebInvoke' đã được gắn vào phương thức của chúng tôi. Điều này cho phép phương thức được gọi thông qua lệnh gọi POST. Thuộc tính requestFormat và ResponseFormat phải được đề cập dưới dạng JSON, vì khi đăng các giá trị lên dịch vụ web RESTFul, các giá trị phải ở định dạng này. Lưu ý rằng tham số Phương thức đang được đặt thành “DELETE”. Điều này có nghĩa là bất cứ khi nào chúng ta đưa ra động từ DELETE, phương thức này sẽ được gọi.
- Dòng mã thứ hai được sử dụng để lấy Tutorialid được gửi qua lệnh gọi DELETE và sau đó xóa id đó khỏi danh sách của chúng tôi. (Các Int32 hàm trong mã được sử dụng để chuyển đổi ID hướng dẫn từ biến chuỗi thành số nguyên).
Chạy dịch vụ web Restful đầu tiên của bạn
Bây giờ chúng ta đã tạo toàn bộ dịch vụ web của mình trong phần trên. Hãy xem cách chúng ta có thể chạy dịch vụ Hướng dẫn để có thể gọi nó từ bất kỳ máy khách nào.
Để chạy dịch vụ web, vui lòng làm theo các bước dưới đây
Bước 1) Nhấp chuột phải vào tệp Dự án – Webservice.REST
Bước 2) Chọn tùy chọn menu 'Đặt làm Dự án khởi động'. Điều này sẽ đảm bảo rằng dự án này được chạy khi Visual Studio chạy toàn bộ giải pháp
Bước 3) Bước tiếp theo là chạy chính dự án. Bây giờ tùy thuộc vào trình duyệt mặc định được cài đặt trên hệ thống, tên trình duyệt phù hợp sẽ xuất hiện bên cạnh nút chạy trong Visual Studio. Trong trường hợp của chúng tôi, chúng tôi có Google Chrome đang hiển thị. Chỉ cần nhấp vào nút này.
Đầu ra: -
Khi dự án được chạy, bạn có thể duyệt đến phần TutorialService.svc/Tutorial và bạn sẽ nhận được kết quả đầu ra bên dưới.
Trong đầu ra ở trên,
- Bạn có thể thấy rằng trình duyệt đang gọi động từ 'GET' và thực thi phương thức 'GetAllTutorial' trong dịch vụ web. Mô-đun này được sử dụng để hiển thị tất cả các Hướng dẫn được dịch vụ web của chúng tôi cung cấp.
Kiểm tra dịch vụ web Restful đầu tiên của bạn
Trong phần trên, chúng ta đã thấy cách sử dụng trình duyệt để thực thi động từ 'GET' và gọi 'GetAllTutorial.'
- Bây giờ chúng ta hãy sử dụng trình duyệt để thực hiện tình huống sử dụng sau.
NHẬN Hướng dẫn/Tutorialid – Khi khách hàng gọi API Restful này, họ sẽ được cấp tên Hướng dẫn dựa trên Tutorialid do khách hàng gửi
Trong trình duyệt của bạn, hãy thêm chuỗi /1 sau từ Hướng dẫn trong URL. Nếu bạn nhấn nút enter, bạn sẽ nhận được kết quả đầu ra bên dưới
Bây giờ bạn sẽ thấy đầu ra của Hàng đợi thực sự tương ứng với số 1 trong danh sách Chuỗi hướng dẫn của chúng tôi. Điều này có nghĩa là phương thức 'GetTutorialbyID' hiện đang được gọi từ Dịch vụ web của chúng tôi. Nó cũng cho thấy rằng giá trị 1 đang được chuyển thành công qua trình duyệt tới dịch vụ web và phương thức của chúng tôi và đó là lý do tại sao chúng tôi nhận được giá trị tương ứng chính xác của “Hàng đợi” trong trình duyệt.
- Tiếp theo, hãy sử dụng dịch vụ web của chúng tôi bằng cách thực hiện kịch bản bên dưới. Để làm được điều này, bạn cần cài đặt công cụ có tên “Fiddler” là một công cụ có thể tải xuống miễn phí từ trang web.
POST Hướng dẫn/Tên hướng dẫn – Khi khách hàng gọi API Restful này, khách hàng sẽ gửi yêu cầu để chèn Tên hướng dẫn. Sau đó, dịch vụ web sẽ thêm tên Hướng dẫn đã gửi vào bộ sưu tập.
Chạy công cụ Filddler và thực hiện các bước bên dưới;
- Đi tới phần soạn nhạc. Điều này được sử dụng để tạo các yêu cầu có thể được gửi tới bất kỳ ứng dụng web nào.
- Đảm bảo loại yêu cầu là “POST” và URL chính xác đang được truy cập, trong trường hợp của chúng tôi phải là http://localhost:52645/TutorialService.svc/Tutorial
- Đảm bảo Loại nội dung được đánh dấu là ứng dụng/json. Hãy nhớ rằng phương thức yêu cầu POST trong dịch vụ Web của chúng tôi chỉ chấp nhận dữ liệu kiểu json, vì vậy chúng tôi cần đảm bảo điều này được chỉ định khi chúng tôi gửi yêu cầu đến ứng dụng của mình.
- Cuối cùng, chúng ta cần nhập dữ liệu của mình. Hãy nhớ rằng phương thức POST của chúng tôi chấp nhận một tham số có tên là 'str.' Vì vậy, ở đây chúng ta đang xác định rằng chúng ta muốn thêm một giá trị có tên là “Cây” vào bộ sưu tập tên Hướng dẫn của mình và đảm bảo rằng nó được gắn thẻ với tên biến str.
Cuối cùng, chỉ cần nhấp vào nút Execute trong fiddler. Thao tác này sẽ gửi yêu cầu đến dịch vụ web để POST dữ liệu “Trees” lên dịch vụ web của chúng tôi.
Bây giờ, khi chúng tôi duyệt đến URL Hướng dẫn để hiển thị tất cả các chuỗi trong danh sách Hướng dẫn của chúng tôi, bây giờ bạn sẽ thấy giá trị của “Cây” cũng hiện diện. Điều này cho thấy rằng yêu cầu POST tới dịch vụ web đã được thực hiện thành công và nó đã được thêm thành công vào Danh sách hướng dẫn của chúng tôi.
- Tiếp theo, hãy sử dụng dịch vụ web của chúng ta bằng cách thực hiện kịch bản bên dưới. Đối với điều này, chúng ta cũng cần sử dụng công cụ fiddler
XÓA Hướng dẫn/Tutorialid- Khi khách hàng gọi API Restful này, khách hàng sẽ gửi yêu cầu xóa Tên hướng dẫn dựa trên Tutorialid. Sau đó, dịch vụ web sẽ xóa tên Hướng dẫn đã gửi khỏi bộ sưu tập.
Chạy công cụ Filddler và thực hiện các bước bên dưới
- Đi tới phần soạn nhạc. Điều này được sử dụng để tạo các yêu cầu có thể được gửi tới bất kỳ ứng dụng web nào.
- Đảm bảo loại yêu cầu là “XÓA” và URL chính xác đang được truy cập, trong trường hợp của chúng tôi phải là http://localhost:52645/TutorialService.svc/Tutorial. Đảm bảo rằng id được sử dụng để xóa một chuỗi trong danh sách được gửi qua URL dưới dạng tham số. Trong ví dụ REST của chúng tôi, chúng tôi đang gửi 1 nên thao tác này sẽ xóa 2nd phần tử trong bộ sưu tập của chúng tôi là “Hàng đợi”.
Cuối cùng, chỉ cần nhấp vào nút Thực hiện trong fiddler. Thao tác này sẽ gửi yêu cầu đến dịch vụ web để XÓA dữ liệu “Queues” đến dịch vụ web của chúng tôi.
Bây giờ, khi chúng tôi duyệt đến URL Hướng dẫn để hiển thị tất cả các chuỗi trong danh sách Hướng dẫn của chúng tôi, bạn sẽ nhận thấy rằng giá trị của “Hàng đợi” không còn xuất hiện nữa.
Điều này cho thấy yêu cầu DELETE tới dịch vụ web đã được thực hiện thành công. Phần tử ở chỉ mục số 1 trong danh sách Chuỗi hướng dẫn của chúng tôi đã được xóa thành công.
Tổng kết
- REST là viết tắt của Chuyển giao trạng thái đại diện. REST được sử dụng để xây dựng các dịch vụ web có tính chất nhẹ, có thể bảo trì và có thể mở rộng.
- Ngày càng có nhiều ứng dụng chuyển sang kiến trúc Restful. Điều này là do hiện nay có rất nhiều người sử dụng thiết bị di động và nhiều ứng dụng đa dạng hơn chuyển sang đám mây.
- Các khía cạnh chính của REST là các tài nguyên nằm trên máy chủ và các động từ GET, POST, PUT và DELETE, có thể được sử dụng để làm việc với các tài nguyên này.
- Có thể sử dụng Visual Studio và .Net để tạo dịch vụ web Restful.
- Thời Gian Kiểm tra dịch vụ web cho POST và PUT, bạn cần sử dụng một công cụ khác gọi là fiddler để gửi yêu cầu POST và PUT đến máy chủ.