2013-08-13 79 views
10

Người dùng của tôi nhập một vài trường thông tin trong ứng dụng iOS. Thông tin này phải được xác thực trên máy chủ của tôi, có API RESTful. Sau khi xác thực giao diện người dùng của ứng dụng iOS thay đổi để cho biết kết quả.Hoạt động REST nào (GET, PUT hoặc POST) để xác thực thông tin?

Không GET, PUT hoặc POST có vẻ phù hợp, vì tôi không nhận được tài nguyên và tài nguyên cũng không được tạo hoặc cập nhật.

Hoạt động REST phù hợp nhất để thực hiện xác thực này là gì?

+2

Tôi đã thực sự nghĩ về điều này. Câu hỏi rất hay. +1 – Kristian

Trả lời

6

Người dùng của tôi nhập một vài thông tin các lĩnh vực trong một ứng dụng iOS. Thông tin này phải được xác thực trên máy chủ của tôi, có API RESTful. Sau khi xác thực giao diện người dùng của ứng dụng iOS thay đổi để cho biết kết quả .... Tôi là không nhận được tài nguyên và không phải là tài nguyên được tạo hoặc cập nhật.

Vì bạn không lưu bất kỳ thứ gì (không sửa đổi bất kỳ tài nguyên nào), tôi nghĩ đây là RPC kỹ thuật hơn RESTful với tôi.

Sau đây là quan điểm của tôi, vì vậy đừng mang nó như Phúc âm:

Nếu thông tin chỉ đơn giản là được gửi và bạn đang nói có hay không, và bạn không lưu nó , Tôi muốn nói POST là tốt ..

Nếu thông tin thực sự được lưu/cập nhật, thì việc chọn phương thức HTTP thích hợp sẽ có liên quan hơn nhiều.

POST = CREATE/SUBMIT (in an RPC context) 
PUT = UPDATE (or CREATE if there is nothing to UPDATE) 
+0

Cảm ơn bạn đã trả lời! Thật vậy nó có mùi giống RPC. Ngay cả URL kết thúc bằng '/ check' tại thời điểm này. Nhưng tất nhiên tôi không muốn kết hợp trong một RPC SOAP hoặc một cái gì đó ;-) –

+0

[This] (http://stackoverflow.com/a/12100416/1971013) và các bài viết khác ;-) xác nhận những gì bạn nói. Vấn đề có vẻ là không có câu trả lời lý thuyết rõ ràng, và đó là một điều thực tế/giải thích. –

+1

cảm ơn bạn đã theo dõi liên kết hữu ích đó. chúc may mắn. PS, kiểm tra Apigee.com, họ làm các thảo luận API và cách thức ... họ đã từng nói về cấu trúc API tốt, và họ đã lưu ý rằng bạn * có thể * bao gồm các phương thức kiểu RPC để trang trí các tuyến hiện có ... tức là RESTFUL phương thức bình thường: '/ resource (/: id)' và RESTFUL được trang trí bằng RPC: '/ resource/check' chấp nhận các tham số bạn đang xác thực/kiểm tra – Kristian

4

Tôi sử dụng cùng một trường hợp như bạn và sử dụng PUT cho nó. Bạn phải tự hỏi mình: "khi tôi gửi cùng một yêu cầu hai lần, điều này có tạo trạng thái khác trên máy chủ không?" Nếu có, hãy sử dụng POST, nếu không sử dụng PUT.

+0

'PUT' so với URI nào? –

+0

ví dụ **/Đăng nhập ** (Không có số lần bạn đăng nhập, máy chủ vẫn giữ nguyên) –

1

Tôi khuyên bạn nên sử dụng ValidationResource và hai yêu cầu. Mỗi thể hiện của tài nguyên này đại diện cho việc xác thực một tập hợp dữ liệu. Các quy trình làm việc:

1. Tạo mới ValidationResource

  • Yêu cầu:POST /path/to/validations
    • dữ liệu để xác nhận là cơ quan
  • đáp ứng:201 Created
    • Location: /path/to/validations/<unique-id-of-this-validation>

2.Tra cứu kết quả

  • Yêu cầu:GET /path/to/validations/<unique-id-of-this-validation>
  • respons:200 OK
    • cơ thể: {'valid': true} hay {'valid': false}

Đây là một cách tiếp cận RESTful trong đó xác nhận là một tài nguyên với trạng thái máy chủ.