Phương thức HTTP SEARCH mới
(httptoolkit.tech)-
Giới thiệu phương thức SEARCH vừa được bổ sung dưới dạng Draft mới tại IETF
-
Để lấy dữ liệu phức tạp, chỉ dùng GET/POST hiện có thì khá kém hiệu quả
SEARCH /customers HTTP/1.1
Host: example.com
Content-Type: application/sql
SELECT username, email
WHERE DATEDIFF(DAY, GETDATE(), signup_date) > 7
-
Trên thực tế, không phải câu lệnh SQL sẽ được dùng làm tiêu chuẩn; ý ở đây là có thể đặt nội dung tìm kiếm như vậy trong request body
-
Nhờ đó, với một URL duy nhất thì cả GET, POST và SEARCH đều có thể được dùng
-
Thông qua header Accept-Search, có thể chỉ định các định dạng dùng cho tìm kiếm :
→ Accept-Search: application/sql, application/graphql
- Dựa trên tiêu chuẩn phương thức SEARCH từng có trong WebDAV (rfc5323)
9 bình luận
OData là một quy ước để truy vấn theo cách gần như tương tự. Nhưng việc có thể dùng cả application/sql và application/graphql trên cùng một endpoint thì... quả thật tôi khó mà hình dung được
Tôi nghĩ nó sẽ được dùng trong những trường hợp mà việc gọi trực tiếp SQL là không phù hợp, và giống như elasticsearch, về mặt ngữ nghĩa thì là
GETnhưng lại muốn truy vấn bằng cách gửi HTTP Body.Ở phần mở đầu bài viết có câu "it was recently adopted as an IETF draft standard", vậy "recently" ở đây có đúng là năm 2015 không? Bản draft mà tôi thấy là https://tools.ietf.org/html/draft-snell-search-method-00, nên tôi đang thắc mắc liệu có thay đổi mới hơn nào không.
Đây là https://datatracker.ietf.org/doc/….
Có vẻ như nó vừa được tải lên gần đây vào 2021-03-31.
Nếu muốn gửi thông tin trong body thì chắc phải dùng PUT hoặc POST.
Mấy phương thức này lại không dùng được cache nên
cũng có thể dùng thứ gọi là SEARCH.
Dù sao thì cũng chỉ gửi khi phía nhận chấp nhận thôi mà.
Theo hướng cải thiện những bất tiện của get, post thì khiến tôi nghĩ đến GraphQL.
Có cảm giác là nếu bắt đầu truyền truy vấn bằng request body thì sớm muộn gì cũng sẽ phát sinh những vấn đề như SQL Injection (nhất là với những trang được làm mà không suy nghĩ nhiều)...
Có lẽ có thể hiểu nó giống như một kiểu GET có body. Dù sao thì cũng sẽ phải validate body...
Đúng vậy..