我们收到了创建REST api的请求。在我们的客户提供的例子中,我有点困惑。如下所示,他们在@之前的URL中识别了app_id和secret。 URI的其余部分看起来就像我期望的那样。
这有效吗?我想也许这是我之前从未见过的一些奇怪的cURL格式。
https://{application_id}:{api_secret}@api.example.com/entity/{entity_id}/
https://{application_id}:{api_secret}@api.example.com/entity/{entity_id}/entity_locations/{locations_id}/
看看有没有人以前见过这种格式?
答案 0 :(得分:1)
URI由various parts组成,其中一个是权限部分,可以使用可选的username:password
元素。
完整的方案是:
scheme://username:password@domain:port/path?query_string#fragment_id
这样你的REST api仍然是无状态 [不依赖于先前的应用状态,比如在会话中存储内容]。但我建议你不要明确地使用username:password@stuff
路由,而是要依赖Basic HTTP Auth,因此至少会在Base64中对编码进行编码。
http://johndoe:12345@service/api/foo/bar
; 200 OK
回复,并且身体正确; 401 Unauthorized
回复。在后一种情况下,浏览器 [或执行请求的任何其他程序/脚本]应该提示用户使用登录弹出窗口。
通常浏览器要求您缓存凭据,不要每次都询问它们,但这并不意味着它们不会被发送 - 只是每个对受保护资源的请求都有这样的标题:
Authorization Basic base64encode(username:password)
base64encode
是您对username:password
字符串进行编码的自定义方式。