django - Django Rest Framework - 我有使用 curl 命令的 API,如何更改它以使用浏览器中的标准 http 请求?
问题描述
我想我可能误会了什么。我创建了 Django Rest Framework 应用程序。我有使用令牌、query_params 等的 api。
如果我像这样卷曲,一切都会正常工作:
curl -X "GET" http://localhost:8000/api/results
-H "Content-Type: application/json"
-H "Authorization: Token eeea084811d9213aa3803946e4464758d66966bc"
--data 'make=test'
它实际上是在返回正确的记录。但通常,在其他网站上,我看到他们正在以这种格式为用户实现他们的 api:
http://www.example.com/?apikey=[yourkey]&
我试图查找将 curl 转换为 http 但我没有发现任何对我有用的东西,现在我很困惑。也许我的 api 目前仅适用于 curl?也许这个“http调用”需要另外实现/编码?
我怀疑这个问题很愚蠢,但不幸的是我还不知道合适的关键字来谷歌搜索它。
解决方案
我认为您对 curl 和 HTTP 请求的实际含义有些误解。
curl 和 Web 浏览器都以相同的方式进行 HTTP 请求调用。例如,当您http://www.example.com/?apikey=123
在浏览器中键入内容时,浏览器实际上会向http://www.example.com/?apikey=123
. 与此等效的 curl 将是:curl -X "GET" http://www.example.com/?apikey=123
发送相同的 HTTP GET 请求。
现在已经清楚了,让我们看看您提供的两种格式之间的区别。
对于初学者,您需要对 HTTP 请求的实际含义有一个基本的了解。发送到 API 端点的典型 HTTP 请求包括以下内容:
- 方法 - GET、POST、PATCH、...
- 网址 -
http://www.example.com/
- 查询参数(实际上是 URL 的一部分) -
apikey=123
或者ordering=created_at
例如 - 标题 -
Content-Type: application/json
或Authorization: apikey 123
例如 - 正文 - 任何类型的数据(可以是 json、原始文本、二进制等格式)
现在,您提供的两种格式的唯一区别是授权值(令牌、apikey)的位置。在您的第一种格式中,它作为Authorization
键值放置在 HTTP 请求的标头部分中。在您的第二种格式中,它被放置在 HTTP 请求的查询参数部分中,作为apikey
.
希望这能澄清一点。
推荐阅读
- php - PHP curl 显示 URL 的输出,例如“HTTP/1.1 200 OK”
- vba - 如何自动编号 Excel 列中的名称组?
- macos - 修复 High Sierra 上的 Home Brew 权限
- html - 有一个与兄弟图像高度相同的 div
- python - Django:导入@wraps时的AppRegistryNotReady
- build - 如何将变量用于选项 (DropDown) 参数?
- ios - UIImagePicker 控制器即使使用 plist 条目也不会请求权限
- laravel - 我认为我的代码有问题?
- java - ElasticSearch java列出字段的唯一值
- php - 如何在指定时间自动清空表