Hướng dẫn về dịch vụ web RESTful: Ví dụ về API REST

⚡ Tóm tắt thông minh

Dịch vụ web RESTful cung cấp một phương pháp nhẹ nhàng, không trạng thái cho các ứng dụng trao đổi dữ liệu qua HTTP bằng cách sử dụng các động từ chuẩn. Chúng hiển thị các tài nguyên thông qua giao thức sạch. URLcho phép giao tiếp có khả năng mở rộng và độc lập với nền tảng giữa các máy khách, máy chủ, thiết bị di động phân tán và các nền tảng đám mây và trí tuệ nhân tạo hiện đại.

  • 📊 Các động từ cốt lõi: GET, POST, PUT và DELETE tương ứng trực tiếp với các thao tác đọc, tạo, cập nhật và xóa được thực hiện trên các tài nguyên máy chủ.
  • 🧩 Các yếu tố chính: Tài nguyên, động từ yêu cầu, tiêu đề, nội dung yêu cầu, nội dung phản hồi và mã trạng thái cùng nhau định nghĩa mọi tương tác REST.
  • 🌐 Archikiến trúc: REST tuân theo mô hình máy khách-máy chủ, duy trì trạng thái phi tập trung, phân lớp và thân thiện với bộ nhớ đệm để thực hiện các yêu cầu lặp lại nhanh hơn và đáng tin cậy hơn.
  • 🛠️ Thực hiện: ASP.NET với mẫu dịch vụ WCF cho phép các nhà phát triển hiển thị các điểm cuối RESTful trong Visual Studio với cấu hình tối thiểu.
  • 🧪 Thử nghiệm: Trình duyệt xử lý các cuộc gọi GET, trong khi Fiddler or Postman Gửi các yêu cầu POST, PUT và DELETE để xác minh.
  • 🔐 Thực hành tốt nhất: HTTPS, xác thực bằng mã thông báo, mã trạng thái có ý nghĩa và phiên bản. URLĐảm bảo API REST trong môi trường sản xuất luôn an toàn và dễ bảo trì.
  • 🤖 Tích hợp AI: OpenAI, Anthropic và Google Công bố các API REST hỗ trợ chatbot, tác nhân tự động và quy trình làm việc của máy học.

Hướng dẫn dịch vụ web RESTful

Dịch vụ web yên tĩnh là gì?

Dịch vụ web khôi phục REST là một dịch vụ nhẹ, dễ bảo trì và có khả năng mở rộng, được xây dựng trên kiến ​​trúc REST. Một dịch vụ web RESTful cung cấp API từ ứng dụng của bạn một cách an toàn, thống nhất và không lưu trạng thái cho máy khách gọi. Máy khách gọi sau đó có thể thực hiện các thao tác được định nghĩa trước bằng cách sử dụng dịch vụ RESTful. Giao thức cơ bản của REST là HTTP, và REST là viết tắt của REpresentational State Transfer (Truyền trạng thái đại diện).

Nói một cách đơn giản, REST định nghĩa một phương thức chuẩn để tạo, đọc, cập nhật và xóa các tài nguyên, chẳng hạn như tài liệu, hình ảnh hoặc bản ghi cơ sở dữ liệu, thông qua web. Vì nó dựa trên giao thức HTTP thông thường, hầu hết mọi ngôn ngữ lập trình hoặc thiết bị đều có thể sử dụng dịch vụ RESTful mà không cần công cụ đặc biệt.

Tại sao nên sử dụng dịch vụ web RESTful?

Trước khi đi sâu vào các chi tiết kỹ thuật, điều quan trọng là phải hiểu tại sao REST lại trở nên phổ biến đến vậy. Dịch vụ web RESTful nổi lên 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, cũng giống như những lý do chúng ta đã thấy trước đây. 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 giao tiếp với nhau.
  • Nhờ các dịch vụ Restful, các ứng dụng web này có thể hoạt động trong nhiều môi trường khác nhau; một số có thể được đặt trên máy chủ cục bộ (ví dụ: máy chủ vật lý). Windowsvà những thứ khác có thể có trên Linux.

Cuối cùng, bất kể môi trường như thế nào, kết quả luôn phải giống nhau: các ứng dụng phải có khả năng giao tiếp với nhau. Dịch vụ web RESTful cung cấp sự 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.

Hình ảnh bên dưới là một ví dụ về ứng dụng web cần giao tiếp với các ứng dụng khác như Facebook, Twitter, v.v. Google.

Nếu một ứng dụng khách cần làm việc với các trang web như Facebook và Twitter, các nhà phát triển thường cần biết ngôn ngữ lập trình và nền tảng mà các trang web đó được xây dựng. Dựa trên đó, họ có thể viết mã giao diện, nhưng cách tiếp cận này có thể trở thành một cơn ác mộng về bảo trì.

Thay vào đó, Facebook, Twitter và Google Chúng thể hiện chức năng của mình dưới dạng các dịch vụ web Restful. Điều này cho phép bất kỳ ứng dụng khách nào cũng có thể gọi các dịch vụ web này thông qua REST, bất kể công nghệ nền tảng là gì.

Tại sao nên sử dụng dịch vụ web RESTful?

2. Sự kiện Thiết bị – Ngày nay, mọi thứ cần phải tiếp tục Số Điện Thoại các thiết bị, dù đó là điện thoại di động, máy tính xách tay hay thậm chí là hệ thống âm thanh trên xe hơi.

Hãy tưởng tượng lượng công sức cần thiết để lập trình các ứng dụng trên những thiết bị này để giao tiếp với các ứng dụng web thông thường. Một lần nữa, API Restful giúp công việc này đơn giản hơn vì, như đã đề cập ở điểm một, bạn thực sự không cần phải biết về lớp nền tảng của thiết bị.

3. Sự kiện Đám mây – Mọi thứ đang chuyển lên đá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, chẳng hạn như... Azure or Amazon. Azure và Amazon Nhiều API được cung cấp dựa trên kiến ​​trúc RESTful. Do đó, các ứng dụng hiện nay cần được phát triển sao cho tương thích với điện toán đám mây. Vì tất cả các kiến ​​trúc dựa trên điện toán đám mây đều hoạt động trên 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 REST là điều hợp lý để tận dụng tối đa các dịch vụ đám mây.

Các yếu tố chính của RESTful

Các dịch vụ web REST đã trải qua một chặng đường dài kể từ khi ra đời. Năm 2002, Hiệp hội Web đã công bố định nghĩa về WSDL và các dịch vụ web SOAP. Điều này đã hình thành nên tiêu chuẩn về cách thức triển khai các dịch vụ web.

Năm 2004, Hiệp hội Web cũng công bố định nghĩa về một tiêu chuẩn bổ sung gọi là RESTful. Trong vài năm qua, tiêu chuẩn này đã trở nên khá phổ biến và hiện được sử dụng bởi nhiều trang web nổi tiếng nhất trên thế giới, bao gồm cả Facebook và Twitter.

REST là một phương thức để 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ủ lưu trữ các tài liệu, hình ảnh hoặc video quan trọng. Tất cả những thứ này đều là ví dụ về tài nguyên. Nếu một máy khách, chẳng hạn như trình duyệt web, cần bất kỳ tài nguyên nào trong số này, nó phải gửi yêu cầu đến máy chủ. Các dịch vụ REST định nghĩa một cách chuẩn để 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:

  1. Trung Tâm Tài Liệu – Yếu tố quan trọng đầu tiên là chính nguồn tài nguyên đó. Giả sử một ứng dụng web trên máy chủ có lưu trữ thông tin của nhiều nhân viên. Giả sử... URL của ứng dụng web là https://demo.guru99.comGiờ đây, để truy cập vào tài nguyên hồ sơ nhân viên thông qua dịch vụ REST, người ta có thể sử dụng lệnh sau: https://demo.guru99.com/employee/1Lệnh này yêu cầu máy chủ web cung cấp thông tin chi tiết của nhân viên có mã số nhân viên là 1.
  2. Yêu cầu động từ – Những từ khóa này mô tả những gì bạn muốn làm với tài nguyên. Trình duyệt sử dụng động từ GET để hướng dẫn điểm cuối rằng nó muốn lấy dữ liệu. Tuy nhiên, có nhiều động từ khác có sẵn, bao gồm POST, PUT và DELETE. Vì vậy, trong trường hợp ví dụ trên... https://demo.guru99.com/employee/1Trên thực tế, trình duyệt web đang thực hiện yêu cầu GET vì nó muốn lấy thông tin chi tiết của hồ sơ nhân viên.
  3. Yêu cầu tiêu đề – Đây là các hướng dẫn bổ sung được gửi kèm theo yêu cầu. Chúng có thể xác định loại phản hồi cần thiết hoặc chi tiết ủy quyền.
  4. Nội dung yêu cầu – Đây là dữ liệu được gửi kèm theo yêu cầu. Dữ liệu thường được gửi trong phần thân yêu cầu khi thực hiện yêu cầu POST đến dịch vụ web REST. Trong một cuộc gọi POST, máy khách thông báo cho dịch vụ web REST rằng nó muốn thêm một tài nguyên vào máy chủ. Do đó, phần thân yêu cầu sẽ chứa thông tin chi tiết về tài nguyên cần được thêm vào.
  5. Nội dung phản hồi – Đây là phần nội dung chính của phản hồi. Vì vậy, trong ví dụ về API RESTful của chúng ta, nếu chúng ta truy vấn máy chủ web thông qua yêu cầu này, thì sẽ xảy ra trường hợp như sau: https://demo.guru99.com/employee/1Máy chủ web có thể trả về một tài liệu XML chứa tất cả thông tin chi tiết của nhân viên trong phần nội dung phản hồi.
  6. Mã trạng thái phản hồi – Đây là các mã lỗi chung được trả về cùng với phản hồi từ máy chủ web. Ví dụ như mã 200, thường được trả về khi không có lỗi nào xảy ra trong quá trình 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 các động từ (POST, GET, PUT và DELETE) và một ví dụ về API REST minh họa ý nghĩa của chúng.

Giả sử chúng ta có một dịch vụ web RESTful được định nghĩa tại vị trí này. https://demo.guru99.com/employeeKhi máy khách gửi bất kỳ yêu cầu nào đến 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 máy khách gửi các động từ tương ứng.

  1. POST – Chức năng này sẽ được sử dụng để tạo nhân viên mới bằng dịch vụ web RESTful.
  2. GET – Chức năng này sẽ được sử dụng để lấy danh sách tất cả nhân viên sử dụng dịch vụ web RESTful.
  3. PUT – Chức năng này sẽ được sử dụng để cập nhật thông tin cho tất cả nhân viên bằng cách sử dụng dịch vụ web RESTful.
  4. DELETE – Chức năng này sẽ được sử dụng để xóa tất cả nhân viên bằng dịch vụ RESTful.

Bây giờ chúng ta hãy xem xét 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 của chúng.

  1. POST – Điều này không áp dụng được, vì chúng ta đang lấy dữ liệu của nhân viên 1, người đã được tạo sẵn.
  2. GET – Chức năng 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 1 bằng cách sử dụng dịch vụ web RESTful.
  3. PUT – Chức năng 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.
  4. DELETE – Chức năng này được sử 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.

Phương pháp thư giãn

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 kiểu REST có những đặ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 phải 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 một tệp từ máy chủ, họ có thể gửi yêu cầu GET để lấy tệp đó. Nếu họ muốn tải một tệp lên máy chủ, họ có thể gửi yêu cầu POST hoặc PUT. Cuối cùng, nếu họ muốn xóa một tệp khỏi máy chủ, họ có thể gửi yêu cầu DELETE.

2. Kiến trúc này là kiến ​​trúc máy chủ/máy khách, không lưu trạng thái, phân lớp và hỗ trợ bộ nhớ đệ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 tài nguyên được xóa, bạn cần thực hiện yêu cầu GET. Yêu cầu GET sẽ được sử dụng để lấy tất cả các tài nguyên trên máy chủ trước, sau đó cần kiểm tra xem tài nguyên đó đã thực sự bị xóa hay chưa.

Nguyên tắc và ràng buộc RESTFul

Kiến trúc REST dựa trên một vài đặ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 dưới đây để đượ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.

  1. Máy khách-máy chủ RESTFul

    Nguyên tắc máy chủ-máy khách 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ó một 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ủ. Sau đó, máy chủ sẽ từ chối yêu cầu hoặc chấp nhận và cung cấp phản hồi thích hợp cho máy khách.

  1. Không quốc tịch

Khái niệm "không trạng thái" có nghĩa là máy khách phải đảm bảo cung cấp đầy đủ thông tin cần thiết 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 chính xác. Máy chủ không nên lưu giữ bất kỳ thông tin nào giữa các yêu cầu từ máy khách. Đó là một chuỗi hỏi-đáp rất đơn giản và độc lập. Máy khách đặt câu hỏi, và máy chủ trả lời một cách thích hợp. Khi máy khách đặt một câu hỏi khác, máy chủ sẽ không nhớ kịch bản hỏi-đáp trước đó và cần phải trả lời câu hỏi mới một cách độc lập.

  1. Bộ nhớ cache

Nguyên tắc bộ nhớ đệm RESTful

Khái niệm bộ nhớ đệm giúp giải quyết vấn đề không trạng thái được mô tả ở điểm cuối. Vì mỗi yêu cầu giữa máy chủ và máy khách đều độc lập, đôi khi máy khách có thể yêu cầu máy chủ thực hiện cùng một yêu cầu một lần nữa, ngay cả khi nó đã yêu cầu điều đó trước đây. Yêu cầu này sẽ được gửi đến máy chủ và máy chủ sẽ trả lời, điều này làm tăng lưu lượng mạng. Bộ nhớ đệ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 cùng một yêu cầu, thay vì gửi đến máy chủ, nó sẽ truy cập vào bộ nhớ đệm và lấy 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 hai chiều từ máy khách đến máy chủ.

  1. 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 trung gian, đều có thể được chèn vào giữa máy khách và máy chủ thực sự lưu trữ dịch vụ web RESTful. (Lớp 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 mà máy khách tương tác trước khi gọi đến dịch vụ web.) Nhưng việc thêm lớp này cần phải minh bạch để không làm gián đoạn sự tương tác giữa máy khách và máy chủ.

  1. Giao diện/Đồng nhấttract

Đây là kỹ thuật cơ bản về cách thức 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 dưới đây để làm việc với các tài nguyên trên máy chủ.

  • POST – Phương thức để tạo tài nguyên trên máy chủ.
  • GET – Phương thức để truy xuất tài nguyên từ máy chủ.
  • PUT – Dùng để thay đổi trạng thái của một tài nguyên hoặc cập nhật trạng thái của nó.
  • DELETE – Lệnh này dùng để xóa hoặc loại bỏ một tài nguyên khỏi máy chủ.

REST so với SOAP: Những điểm khác biệt chính

Các nhà phát triển thường cân nhắc giữa REST và SOAP khi thiết kế dịch vụ web. Cả hai đều cho phép các ứng dụng phân tán giao tiếp với nhau, nhưng chúng khác biệt rõ rệt về triết lý. REST là một kiểu kiến ​​trúc sử dụng các động từ HTTP đơn giản và các định dạng nhẹ như JSON, trong khi SOAP thì ngược lại. XÀ BÔNG TẮM là một giao thức nghiêm ngặt dựa trên các bao bì XML và một cấu hình chính thức.tracBảng dưới đây tóm tắt những điểm khác biệt quan trọng nhất.

Yếu tố REST của XÀ BÔNG TẮM
Kiểu Archiphong cách kiến ​​trúc Quy trình nghiêm ngặt
Định dạng dữ liệu JSON, XML, văn bản thuần túy, HTML Chỉ XML
Giao thông chỉ HTTP HTTP, SMTP, TCP và các giao thức khác.
Tiểu bang Không quốc tịch Không quốc tịch hoặc có quốc tịch
HIỆU QUẢ Nhanh hơn và nhẹ hơn Nặng hơn do chi phí xử lý XML.
Tốt nhất cho API dành cho web, thiết bị di động và công cộng Ứng dụng doanh nghiệp cần bảo mật nghiêm ngặt

Trên thực tế, REST là lựa chọn mặc định cho các API web và di động công cộng vì nó nhanh hơn và dễ sử dụng hơn, trong khi SOAP vẫn hữu ích cho các hệ thống doanh nghiệp yêu cầu bảo mật tích hợp và giao thức chính thức.tracTs.

Tạo dịch vụ web Restful đầu tiên của bạn trong ASP.NET

Trong hướng dẫn về REST API này, chúng ta sẽ học cách tạo một 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, và nhiều môi trường phát triển tích hợp có thể được sử dụng để tạo ra các dịch vụ dựa trên REST.

Trong ví dụ về API RESTful này, chúng ta sẽ tạo ứng dụng REST của mình trong .NET bằng Visual Studio. Chúng ta sẽ có một dịch vụ web RESTful hoạt động trên tập dữ liệu bên dưới.

Tập dữ liệu bên dưới thể hiện một ví dụ về API REST của một công ty cung cấp các bài hướng dẫn 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 về API REST này, chúng ta sẽ triển khai các động từ Restful dưới đây.

  1. NHẬN hướng dẫn – Khi khách hàng gọi API Restful này, họ sẽ được cung cấp toàn bộ các hướng dẫn có sẵn từ dịch vụ web.
  2. NHẬN Hướng dẫn/Hướng dẫn – Khi một máy khách gọi API Restful này, họ sẽ nhận được tên bài hướng dẫn dựa trên Tutorialid do máy khách gửi đến.
  3. POST Hướng dẫn/Tên hướng dẫn – Khi một máy khách gọi API Restful này, máy khách sẽ gửi yêu cầu để chèn tên bài hướng dẫn. Dịch vụ web sau đó sẽ thêm tên bài hướng dẫn đã gửi vào bộ sưu tập.
  4. XÓA Hướng dẫn/Hướng dẫn – Khi một máy khách gọi API Restful này, máy khách sẽ gửi yêu cầu xóa một Tutorialname dựa trên Tutorialid. Dịch vụ web sau đó 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 để tạo dịch vụ web RESTful đầu tiên của chúng ta, dịch vụ này sẽ thực hiện việc triển khai như 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 một 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.

Tạo dịch vụ web an toàn

Sau khi bạn nhấp vào tùy chọn Tạo dự án mới, Visual Studio sẽ hiển thị một hộp thoại khác để bạn chọn loại dự án và nhập các thông tin cần thiết. Điều này sẽ được giải thích ở bước tiếp theo.

Bước 2) Nhập tên dự án và địa điểm.

  1. Đảm bảo rằng trước tiên bạn chọn 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 cho bất kỳ ứng dụng web nào.
  2. Hãy đặt tên cho dự án của bạn, trong trường hợp này là “Webservice.REST”.
  3. Sau đó, hãy đảm bảo bạn chỉ định vị trí lưu trữ các tệp dự án.

Tạo dịch vụ web an toàn

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

Tạo dịch vụ web an toàn

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ẽ chứa dịch vụ web RESTful.

  1. Đầu tiên, nhấp chuột phải vào tệp dự án như hình bên dưới.

Tạo dịch vụ web an toàn

  1. Trong bước này,
    1. Nhấp chuột phải vào tệp dự án.
    2. Chọn tùy chọn “Thêm -> Mục mới”.

Tạo dịch vụ web an toàn

Trong hộp thoại hiện ra, bạn cần thực hiện các bước sau.

  1. Chọn tùy chọn Dịch vụ WCF (có hỗ trợ Ajax). Việc chọn tệp thuộc loại này sẽ khiến Visual Studio thêm một số mã cơ bản giúp bạn tạo dịch vụ web RESTful. WCF là viết tắt của... Windows Giao tiếp FoundationWCF là một thư viện cho phép các ứng dụng trên nhiều nền tảng khác nhau (hoặc cùng một nền tảng) giao tiếp với nhau thông qua nhiều giao thức khác nhau như TCP, HTTP và HTTPS. Ajax là giao thức bất đồ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.
  2. Tiếp theo, hãy đặt tên cho dịch vụ, trong trường hợp này là TutorialService.
  3. Cuối cùng nhấn nút Add để thêm dịch vụ vào giải pháp.

Tạo dịch vụ web an toàn

Bước 4) Thực hiện một cấu hình.
Bước tiếp theo là thực hiện thay đổi cấu hình để cho phép dự án này hoạt động với các dịch vụ web RESTful. Điều này yêu cầu thay đổi tệp có tên là web.configTệ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 đúng cách. Thay đổi đang được thực hiện cho phép ứng dụng gửi và nhận dữ liệu như một dịch vụ web RESTful thuần túy.

  1. Nhấp vào tệp Web.config để mở mã nguồn.

Tạo dịch vụ web an toàn

  1. Tìm đường thẳng .

Tạo dịch vụ web an toàn

  1. Hãy thay đổi dòng này thành .

Tạo dịch vụ web an toàn

Bước 5) Thêm mã của chúng tôi để thực hiện.
Bước tiếp theo là thêm mã của chúng ta để triển khai. Tất cả mã bên dưới phải được viết trong tệp TutorialService.svc.

  1. Bước đầu tiên là thêm mã để biểu diễn dữ liệu của chúng ta, dữ liệu này sẽ được sử dụng trong chương trình. 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ị là “Arrays”, “Queues” và “Stacks”. Điều này sẽ đại diện cho tên các bài hướng dẫn có sẵn thông qua dịch vụ web lưu trữ của chúng ta.

Tạo dịch vụ web an toàn

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ẽ định nghĩa mã cho phương thức GET. Mã này cũng sẽ nằm trong cùng tệp TutorialService.svc. Mã này sẽ được chạy mỗi khi chúng ta gọi dịch vụ từ trình duyệt.

Phương pháp dưới đây sẽ được sử dụng để thực hiện kịch bản được nêu bên dưới.

  • Nếu người dùng muốn xem danh sách tất cả các bài hướng dẫn hiện có, thì cần viết đoạn mã dưới đây để thực hiện điều đó.

Tạo dịch vụ web an toàn

[WebGet(UriTemplate = "/Tutorial")]

public String GetAllTutorial()
{
    int count = lst.Count;
    String TutorialList = "";
    for (int i = 0; i < count; i++)
        TutorialList = TutorialList + lst[i] + ",";
    return TutorialList;
}

Code Giải trình:-

  1. Dòng mã đầu tiên là quan trọng nhất. Nó được sử dụng để định nghĩa cách chúng ta có thể gọi phương thức này thông qua một URLVì vậy, nếu liên kết đến dịch vụ web của chúng tôi là http://localhost:52645/TutorialService.svc và chúng ta thêm '/Tutorial' vào cuối URL, như trong http://localhost:52645/TutorialService.svc/TutorialĐoạn mã trên sẽ được gọi. Thuộc tính 'WebGet' là một tham số cho phép phương thức này trở thành một phương thức RESTful để có thể được gọi thông qua động từ GET.
  2. Đ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.
Đoạn mã bên dưới đảm bảo rằng nếu thực hiện cuộc gọi GET đến dịch vụ Tutorial với một ID hướng dẫn, nó sẽ trả về tên hướng dẫn tương ứng dựa trên ID hướng dẫn đó.

Tạo dịch vụ web an toàn

[WebGet(UriTemplate = "/Tutorial/{Tutorialid}")]

public String GetTutorialbyID(String Tutorialid)
{
    int pid;
    Int32.TryParse(Tutorialid, out pid);
    return lst[pid];
}

Code Giải trình:-

  1. Dòng mã đầu tiên là quan trọng nhất. Nó định nghĩa cách chúng ta có thể gọi phương thức này thông qua một URLVì vậy, nếu liên kết đến dịch vụ web của chúng tôi là http://localhost:52645/TutorialService.svc và chúng tôi thêm '/Tutorial/{Tutorialid}' vào URL, chúng ta có thể gọi dịch vụ web như sau: http://localhost:52645/TutorialService.svc/Tutorial/1Ví dụ, dịch vụ web sau đó sẽ trả về tên bài hướng dẫn có ID bài hướng dẫn là 1.
  2. Đoạn mã này được sử dụng để trả về tên bài hướng dẫn có ID bài hướng dẫn được truyền vào phương thức web.
  • Theo mặc định, điều cần nhớ là bất cứ thứ gì được truyền đến... URL Trong trình duyệt, nó là một chuỗi ký tự.
  • Nhưng bạn cần nhớ rằng chỉ số của danh sách phải là một số nguyên, vì vậy chúng ta đang thêm đoạn mã cần thiết để chuyển đổi Tutorialid thành số nguyên trước.
  • Sau đó, chúng ta sử dụng nó để truy cập vị trí chỉ mục trong danh sách và trả về giá trị tương ứng cho chương trình gọi.

Bước 8) Hãy 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 một 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 “Kiểm thử phần mềm”, thì bạn cần sử dụng phương thức POST.

Tạo dịch vụ web an toàn

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/Tutorial/{str}")]

public void AddTutorial(String str)
{
    lst.Add(str);
}

Code Giải trình:-

  1. Dòng đầu tiên là thuộc tính 'WebInvoke', được gắn vào phương thức của chúng ta. Điều này cho phép phương thức được gọi thông qua yêu cầu POST. Các thuộc tính RequestFormat và ResponseFormat phải được chỉ định là JSON, vì khi gửi giá trị đến một dịch vụ web RESTful, các giá trị phải ở định dạng này.
  2. Dòng mã thứ hai được sử dụng để thêm giá trị chuỗi được truyền qua lệnh POST vào danh sách các chuỗi hướng dẫn hiện có của chúng ta.

Bước 9) Thêm một phương thức để xử lý thao tác XÓA.
Cuối cùng, chúng ta sẽ thêm phương thức để 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 của mình thông qua phương thức DELETE.

Tạo dịch vụ web an toàn

[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);
    lst.RemoveAt(pid);
}

Code Giải trình:-

  1. Dòng đầu tiên là thuộc tính 'WebInvoke', được gắn vào phương thức của chúng ta. Điều này cho phép phương thức được gọi thông qua lệnh DELETE. Các thuộc tính RequestFormat và ResponseFormat phải được đề cập dưới dạng JSON, vì các giá trị phải ở định dạng này. Lưu ý rằng tham số Method được đặt thành “DELETE”. Điều này có nghĩa là bất cứ khi nào chúng ta thực hiện lệnh DELETE, phương thức này sẽ được gọi.
  2. 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 đoạn mã này được sử dụng để chuyển đổi ID hướng dẫn từ biến chuỗi sang số nguyên.

Chạy dịch vụ web Restful đầu tiên của bạn

Giờ chúng ta đã tạo toàn bộ dịch vụ web ở phần trên, hãy xem cách chúng ta có thể chạy dịch vụ Hướng dẫn để nó có thể được gọi 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.

Chạy dịch vụ web an toàn

Bước 2) Chọn tùy chọn menu 'Đặt làm dự án khởi động'. Thao tác này sẽ đảm bảo dự án này được chạy khi Visual Studio chạy toàn bộ giải pháp.

Chạy dịch vụ web an toàn

Bước 3) Bước tiếp theo là chạy dự án. 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 ta, chúng ta có Google Chrome đang hiển thị. Chỉ cần nhấp vào nút này.

Chạy dịch vụ web an toàn

Đầu ra: -

Khi dự án được chạy, bạn có thể truy cập vào phần TutorialService.svc/Tutorial và sẽ thấy kết quả như bên dưới.

Chạy dịch vụ web an toàn

Trong kết quả hiển thị ở 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 bài hướng dẫn được cung cấp bởi dịch vụ web của chúng tôi.

Kiểm tra dịch vụ web Restful đầu tiên của bạn

Ở phần trên, chúng ta đã thấy cách sử dụng trình duyệt để thực thi lệnh 'GET' và gọi hàm 'GetAllTutorial'.

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

GET Tutorial/Tutorialid – Khi một máy khách gọi API Restful này, họ sẽ nhận được tên bài hướng dẫn dựa trên Tutorialid do máy khách gửi đến.

Trong trình duyệt của bạn, hãy thêm chuỗi /1 sau từ "Tutorial" trong thẻ <input type="text"> URLNếu bạn nhấn phím Enter, bạn sẽ nhận được kết quả như bên dưới.

Kiểm tra dịch vụ web an toàn

Bây giờ bạn sẽ thấy kết quả của "Queues", tương ứng với số 1 trong danh sách chuỗi hướng dẫn của chúng ta. Đ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 ta. Nó cũng cho thấy rằng giá trị 1 đang được truyền thành công qua trình duyệt đến dịch vụ web và phương thức của chúng ta, và đó là lý do tại sao chúng ta nhận được giá trị tương ứng chính xác của "Queues" trong trình duyệt.

  1. Tiếp theo, chúng ta hãy sử dụng dịch vụ web 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 là FiddlerĐây là một công cụ có thể tải xuống miễn phí.

Phương thức POST Tutorial/Tutorialname – Khi một máy khách gọi API Restful này, máy khách sẽ gửi yêu cầu để chèn tên bài hướng dẫn. Dịch vụ web sau đó sẽ thêm tên bài hướng dẫn đã gửi vào bộ sưu tập.

Chạy Fiddler Chọn công cụ và thực hiện các bước dưới đây.

  1. Hãy vào phần soạn thảo. Phần này được dùng để tạo các yêu cầu có thể gửi đến bất kỳ ứng dụng web nào.
  2. Hãy đảm bảo loại yêu cầu là “POST” và chính xác. URL đang bị tấn công, điều mà trong trường hợp của chúng ta đáng lẽ phải là http://localhost:52645/TutorialService.svc/Tutorial.
  3. Hãy đảm bảo Content-Type được đánh dấu là application/json. Hãy nhớ rằng phương thức yêu cầu POST trong dịch vụ web của chúng ta chỉ chấp nhận dữ liệu kiểu JSON, vì vậy chúng ta cần đảm bảo điều này được chỉ định khi gửi yêu cầu đến ứng dụng của mình.
  4. Cuối cùng, chúng ta cần nhập dữ liệu. Hãy nhớ rằng phương thức POST của chúng ta chấp nhận một tham số có tên là 'str'. Vì vậy, ở đây chúng ta đang chỉ định rằng chúng ta muốn thêm một giá trị có tên là “Trees” vào tập hợp tên bài 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 Thực thi trong Fiddler. Thao tác này sẽ gửi yêu cầu đến dịch vụ web để ĐĂNG dữ liệu “Cây” lên dịch vụ web của chúng tôi.

Kiểm tra dịch vụ web an toàn

Bây giờ, khi chúng ta truy cập vào phần Hướng dẫn URL Để 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ẽ thấy giá trị của “Trees” cũng xuất hiện. Điều này cho thấy yêu cầu POST đến 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.

Kiểm tra dịch vụ web an toàn

  1. Tiếp theo, chúng ta hãy sử dụng dịch vụ web bằng cách thực hiện kịch bản bên dưới. Để làm điều này, chúng ta cũng cần sử dụng... Fiddler công cụ.

DELETE Tutorial/Tutorialid – Khi một máy khách gọi API Restful này, máy khách sẽ gửi yêu cầu xóa một Tutorialname dựa trên Tutorialid. Dịch vụ web sau đó sẽ xóa tên hướng dẫn đã gửi khỏi bộ sưu tập.

Chạy Fiddler Chọn công cụ và thực hiện các bước dưới đây.

  1. Hãy vào phần soạn thảo. Phần này được dùng để tạo các yêu cầu có thể gửi đến bất kỳ ứng dụng web nào.
  2. Hãy đảm bảo loại yêu cầu là “XÓA” và chính xác. URL đang bị tấn công, điều mà trong trường hợp của chúng ta đáng lẽ phải là http://localhost:52645/TutorialService.svc/TutorialHãy đả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 như một tham số. Trong ví dụ REST của chúng ta, chúng ta đang gửi giá trị 1, vì vậy thao tác này sẽ xóa giá trị 2.nd một 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 thi trong FiddlerThao tác này sẽ gửi yêu cầu đến dịch vụ web để XÓA dữ liệu “Hàng đợi” khỏi dịch vụ web của chúng ta.

Kiểm tra dịch vụ web an toàn

Bây giờ, khi chúng ta truy cập vào phần Hướng dẫn URL Để 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 "Queues" không còn xuất hiện nữa.

Điều này cho thấy yêu cầu DELETE gửi đến dịch vụ web đã được thực thi thành công. Phần tử ở vị trí chỉ mục số 1 trong danh sách chuỗi hướng dẫn của chúng ta đã được xóa thành công.

Kiểm tra dịch vụ web an toàn

Các thực tiễn tốt nhất về API RESTful

Xây dựng một API REST hoạt động chỉ là bước đầu tiên; xây dựng một API có khả năng mở rộng và dễ bảo trì đòi hỏi sự kỷ luật. Các phương pháp dưới đây giúp các điểm cuối API của bạn trở nên dễ dự đoán, an toàn và dễ sử dụng cho các nhà phát triển khác và các tác nhân AI.

  • Hãy sử dụng danh từ, không phải động từ, trong URLs. Các điểm cuối như /nhân viên/1 rõ ràng hơn /getEmployee?id=1Vì động từ HTTP đã mô tả hành động đó rồi.
  • Trả về các mã trạng thái có ý nghĩa. Trả về mã 200 nếu thành công, 201 nếu tài nguyên được tạo, 400 nếu yêu cầu không hợp lệ, 401 nếu truy cập trái phép, 404 nếu tài nguyên bị thiếu và 500 nếu lỗi máy chủ.
  • Quản lý phiên bản API của bạn. Thêm một đoạn phiên bản như sau: /v1/ Phương pháp này cho phép bạn phát triển dịch vụ mà không làm ảnh hưởng đến các khách hàng hiện có.
  • Bảo vệ mọi điểm cuối. Hãy sử dụng HTTPS, cùng với khóa API hoặc mã thông báo OAuth 2.0, và xác thực tất cả dữ liệu đầu vào.
  • Hỗ trợ phân trang và lọc nội dung. Việc trả về các tập dữ liệu lớn theo từng trang giúp tăng tốc độ phản hồi và giảm tải cho máy chủ.

Tuân thủ các quy ước này giúp dịch vụ web RESTful của bạn dễ dàng tích hợp một cách trực quan, cho dù người dùng là ứng dụng di động, hệ thống đối tác hay quy trình làm việc tự động bằng AI.

Câu Hỏi Thường Gặp

REST là một kiểu kiến ​​trúc sử dụng các động từ HTTP và các định dạng nhẹ như JSON. SOAP là một giao thức nghiêm ngặt dựa trên các bao bì XML. REST nhanh hơn, đơn giản hơn và tốt hơn cho các máy khách web và di động, trong khi SOAP phù hợp với các hệ thống doanh nghiệp cần bảo mật tích hợp.

API RESTful trả về các mã trạng thái HTTP tiêu chuẩn. Mã 200 xác nhận yêu cầu thành công, 201 cho biết tài nguyên đã được tạo, 400 báo cáo yêu cầu không hợp lệ, 401 có nghĩa là không được ủy quyền, 404 báo hiệu tài nguyên bị thiếu và 500 báo hiệu lỗi máy chủ trong quá trình xử lý.

Bảo mật các API REST bằng HTTPS để mã hóa dữ liệu truyền tải, sử dụng khóa API hoặc mã thông báo OAuth 2.0 để xác thực, kiểm soát truy cập dựa trên vai trò để ủy quyền, giới hạn tốc độ truy cập để ngăn chặn lạm dụng và kiểm tra tính hợp lệ nghiêm ngặt của dữ liệu đầu vào. Việc ghi nhật ký yêu cầu giúp ích cho việc kiểm toán và ứng phó sự cố.

Các nhà cung cấp AI như OpenAI, Anthropic và Google Cung cấp các điểm cuối REST chấp nhận các lời nhắc JSON và trả về văn bản được tạo. Các nhà phát triển gửi yêu cầu POST kèm khóa API, và dịch vụ sẽ phản hồi bằng đầu ra của mô hình, cho phép tạo chatbot, tác nhân và các quy trình tự động hóa.

Đúng vậy. Các tác nhân AI hiện đại sử dụng phương thức gọi công cụ hoặc gọi hàm để kích hoạt các điểm cuối REST trong quá trình hội thoại. Tác nhân chọn một điểm cuối, xây dựng tải trọng JSON, gửi yêu cầu và đọc phản hồi để lập kế hoạch hành động tiếp theo mà không cần sự can thiệp của con người.

Trình duyệt web có thể kiểm tra trực tiếp các yêu cầu GET. Đối với các yêu cầu POST, PUT và DELETE, các nhà phát triển sử dụng các công cụ như... Fiddler or Postman, cho phép bạn thiết lập tiêu đề, chọn động từ và kiểm tra phản hồi.

Các dịch vụ REST thường trao đổi dữ liệu dưới dạng JSON vì định dạng này nhẹ và dễ phân tích. Chúng cũng có thể sử dụng XML, HTML hoặc văn bản thuần túy. Máy khách và máy chủ thống nhất định dạng bằng cách sử dụng các tiêu đề HTTP Content-Type và Accept.

Tóm tắt bài viết này với: