使用带有 RESTful API 的 GET 接收数据
Receiving data using GET with a RESTful API
我正在构建 API。当请求用户的数据时,这被证明是检索数据的最佳实践:
请求 ID 的用户数据:
https://api.example.com/users/1
不过,通过电子邮件请求用户数据会更方便:
https://api.example.com/users/johnsmith@outlook.com
使用第二种方法安全吗?即使我使用第一种方法,开发人员也无法知道他们想要请求的用户的 ID,因此它根本没有用。
那么第二种方法安全吗?如果没有,有解决办法吗?谢谢
在 URL 中传递电子邮件地址不是一个好主意,因为它是非 public 信息。如果您确实需要使用电子邮件地址,请使用 POST 调用,或者如果您在 API 端使用适当的授权,则可以使用完全安全的 ID。
只要ID在URI中是唯一且可解析的。 “@”需要编码为“%40”。除此之外还不错,恕我直言。如果您有两种不同类型的标识符,例如电子邮件和 ID,那么您可能希望允许客户端 select 使用哪个标识符
https://api.example.com/users?email=johnsmith@outlook.com
或
https://api.example.com/users?id=1
Here is some good literature 了解如何在 REST API 中使用过滤器。
我正在构建 API。当请求用户的数据时,这被证明是检索数据的最佳实践:
请求 ID 的用户数据:
https://api.example.com/users/1
不过,通过电子邮件请求用户数据会更方便:
https://api.example.com/users/johnsmith@outlook.com
使用第二种方法安全吗?即使我使用第一种方法,开发人员也无法知道他们想要请求的用户的 ID,因此它根本没有用。
那么第二种方法安全吗?如果没有,有解决办法吗?谢谢
在 URL 中传递电子邮件地址不是一个好主意,因为它是非 public 信息。如果您确实需要使用电子邮件地址,请使用 POST 调用,或者如果您在 API 端使用适当的授权,则可以使用完全安全的 ID。
只要ID在URI中是唯一且可解析的。 “@”需要编码为“%40”。除此之外还不错,恕我直言。如果您有两种不同类型的标识符,例如电子邮件和 ID,那么您可能希望允许客户端 select 使用哪个标识符
https://api.example.com/users?email=johnsmith@outlook.com
或
https://api.example.com/users?id=1
Here is some good literature 了解如何在 REST API 中使用过滤器。