2009-07-29 46 views
6

Bạn cần tránh điều gì trong khi thiết lập giao diện Yên tĩnh để đảm bảo rằng bạn chưa biến nó thành RPC?Dịch vụ web an toàn

+0

Jeff, đừng bắt đầu câu của bạn với bốn dấu cách - sẽ cho biết "đánh dấu" để coi nó là khối mã (không có từ bọc) và làm cho nó khó đọc - ngoại trừ các khối mã thực, khóa học! :-) –

+0

http://www.pluralsight.com/community/blogs/tewald/archive/2007/04/28/47067.aspx – skaffman

+0

@SLott ... oops .. done – skaffman

Trả lời

8

Đỗ:

  • Thiết kế ứng dụng của bạn được hypertext-driven (Hypermedia như Engine của trạng thái ứng dụng - HATEOAS).
  • Dành phần lớn thời gian và công sức của bạn để xác định tài nguyên và tạo các loại phương tiện để đại diện cho chúng.
  • Hãy nghĩ đến toàn bộ URI làm mã định danh tài nguyên của bạn và giả sử nó sẽ thay đổi trong tương lai.
  • Cung cấp tất cả các tùy chọn để tiếp tục tiếp tục thông qua ứng dụng của bạn dưới dạng liên kết trong biểu diễn của bạn.
  • Hãy coi ứng dụng của bạn là trang web sẽ được khách hàng thu thập thông tin hoặc 'duyệt'.
  • Hãy thử viết ứng dụng khách cho API của bạn và tìm nơi khớp nối xảy ra.

Đừng:

  • Publish URI mẫu trong tài liệu API. Ví dụ: nếu bạn phải có mẫu cho tham số truy vấn, hãy đảm bảo chúng là một phần của định nghĩa loại phương tiện của bạn.
  • Hãy suy nghĩ về ứng dụng của bạn như một tập hợp các URI đang bị tác động bởi bốn động từ.
  • Phục vụ các loại mime như "application/xml" hoặc "application/json" cho khách hàng.

Để sử dụng tương tự, API của bạn sẽ hoạt động giống GPS cho khách hàng của bạn và ít giống với bản đồ hơn. Bạn sẽ chỉ cung cấp cho khách hàng tên của một con phố gần đó.Nhưng kể từ đó, họ chỉ có thể làm những gì ứng dụng của bạn nói rằng họ có thể làm tại bất kỳ điểm nào.

Mục đích của kiểu này là giảm thiểu sự ghép nối giữa ứng dụng của bạn và ứng dụng khách. Tất cả các khớp nối sẽ xảy ra trong định nghĩa loại phương tiện của bạn. Điều này đơn giản hóa sự phát triển của API, và cung cấp một cơ chế tốt đẹp cho phiên bản. Nó cũng làm cho câu hỏi về các vấn đề như pagination biến mất.

Hầu hết các API "RESTful" không tuân theo mẫu này. Để thực hiện điều đó, hãy xem Sun Cloud APIbackstory của nó.

+0

Cảm ơn bạn đã giúp truyền bá từ trên REST, chính xác và rõ ràng. – aehlke

2

Loại câu hỏi rộng nhưng tôi sẽ thử. Đối với một, chỉ sử dụng các động từ HTTP như thế nào đã được dự định. Không POST vào một URL với một đối số url về cơ bản sẽ ghi đè POST và biến nó thành một GET hoặc DELETE. Đây là cách SOAP hoạt động (mọi thứ đều là POST).

+0

Đây chỉ là cách sử dụng HTTP đúng - không không có nhiều việc phải làm với REST. – aehlke

4

Tận dụng giao thức cơ bản nếu có thể. Thay vì có động từ trong tải trọng của bạn cố gắng sử dụng (ví dụ) các phương thức HTTP GET, POST, PUT, DELETE. URI của bạn nên mô tả một tài nguyên nhưng không nên làm gì với nó.

+0

Điều này KHÔNG có liên quan gì đến REST! Nó chỉ đơn giản là HTTP. – aehlke

+0

Tôi chỉ cung cấp HTTP làm ví dụ (vì đây có thể là giao thức phổ biến nhất trong tình huống này) để củng cố rằng URI nên không có động từ. –

3

Một số trong những điều bạn muốn tránh là:

  • Bỏ qua bộ nhớ đệm
  • Tunneling tất cả mọi thứ thông qua GET (hoặc cách khác POST)
  • Bỏ qua kiểu MIME

Có một bài viết tốt ở đây nói về một số mẫu chống REST:

http://www.infoq.com/articles/rest-anti-patterns

Các vấn đề liên quan