Tastypie api与邮递员一起工作,但不与python请求一起工作



我有带有 api 密钥身份验证的美味派 api。

对于 GET 请求,它

双向工作,但对于 post 请求,它不起作用。

url = http://localhost:8000/api/path/?api_key=key&username=username

在视图中,当我尝试打印request.user时,当请求来自邮递员时,它是常规/真实用户。但是对于python请求,它是匿名用户。

对于python请求,我正在这样做:

url = http://localhost:8000/api/path/?api_key=key&username=username
d = {"some": "data"}
r = requests.post(url, data=json.dumps(d), headers={"content-type": "application/json"})

邮递员提供的代码:

POST /api/v1/abc/?api_key=somekey&username=something HTTP/1.1
Host: localhost:8000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: something
{"something":"something"}    

如有任何问题,请告诉我。

API 身份验证不起作用的我的资源:

class UserResource(ModelResource):
class Meta:
    queryset = User.objects.all()
    fields = ['username', 'email', 'first_name', 'last_name']
    resource_name = 'user'
    authentication = ApiKeyAuthentication()

确保您没有使用SessionAuthentication或在身份验证中启用了enforce_csrf。由于邮递员也随请求一起发送浏览器cookie,这可能是您获得不同行为的原因。

如果是这种情况,则表示 API 身份验证不起作用。由于邮递员使用的是会话身份验证,因此它可以工作。确保您已在INSTALLED_APPS中添加了 tastypie,并在数据库中创建/存储了 api 密钥。

最新更新