我正在创建一个RESTful api,但我从概念上不了解如何验证不是 POST 的 http 请求。
例如,如果我收到一个 GET 请求,我应该返回一个对象列表,但如果请求来自在我的站点上注册的人,我只想用该列表进行响应。使用 POST,我将获取用户名并与请求一起传递,但是 GET、DELETE 和 PUT 呢?
我在客户端使用 Django 服务器端和 Java (Android)。我可能会使用TastyPie,但我仍然需要进行身份验证。
谢谢!
我正在创建一个RESTful api,但我从概念上不了解如何验证不是 POST 的 http 请求。
例如,如果我收到一个 GET 请求,我应该返回一个对象列表,但如果请求来自在我的站点上注册的人,我只想用该列表进行响应。使用 POST,我将获取用户名并与请求一起传递,但是 GET、DELETE 和 PUT 呢?
我在客户端使用 Django 服务器端和 Java (Android)。我可能会使用TastyPie,但我仍然需要进行身份验证。
谢谢!
API 调用的身份验证与您使用的 HTTP 方法无关。
以这种方式考虑您的 API 的功能性工作流程:
授权由(恰当命名的)HTTP Authorization 标头处理。
Authorization 标头包含凭据/令牌/秘密代码/等,无论如何获得,服务器都可以使用它们来满足其身份验证和授权要求。
授权头可以与任何 HTTP 请求一起发送。
随意查找 HTTP BASIC 或 HTTP DIGEST 身份验证作为如何使用 Authorization 标头的示例。还可以考虑查看 Amazon Web Services 如何使用 Authorization 标头以获得更复杂的示例。
当用户第一次登录时发出 POST 请求,并在服务器上为该用户生成会话代码并将其发送到浏览器。现在,您可以通过在每次查询时将其放入 GET 查询 url 从浏览器发送该会话代码,因此您可以在服务器上对用户进行身份验证。
POST
仅当您的服务器通过application/x-www-form-urlencoded
或multipart/form-data
编码的 HTTP 请求使用基于表单的身份验证时才需要,而不是通过 HTTPAuthorization
标头使用基于 HTTP 的身份验证。 GET
请求可以使用基于 HTTP 的身份验证。