【发布时间】:2022-09-28 15:30:02
【问题描述】:
我正在开发 Flutter api 客户端。 我使用我自己的 Django 后端和 dj-rest-auth 包。我通过浏览器和邮递员检查了我的后端,它似乎工作正常。如果我尝试从我的前端模拟器登录到在同一设备上运行的后端(dj-rest-auth),我会得到:
Bad Request: /dj-rest-auth/login/
[08/Sep/2022 00:50:55] \"POST /dj-rest-auth/login/ HTTP/1.1\" 400 42
我试过了: [dio 文档][1] [如何修复 400 Bad request][2](检查我的错误是否在后端) 不幸的是,我没有找到更具体的例子。
在尝试满足以下 sn-p 中的 null 安全要求后,我看到了问题(注释掉了与 null 安全性相关的错误的行,在它们下面是我尝试解决问题的两行但未成功):
Future<AuthTokens?> refreshToken(BuildContext context) async {
final AuthTokens? authTokens = await getCurrentTokens();
if (authTokens == null) {
return null;
}
return _dio
.post(API_HOST + \"jwt/refresh/\",
data: {\'refresh\': authTokens.refreshToken},
options: Options(validateStatus: (status) => status! < 500))
.then((response) {
authTokens.accessToken = response.data[\'access\'];
if (response.data[\'access\'] != null) {
authTokens.save();
return authTokens;
}
return null;
});
}
void login(password, email, Function(LoginResponse) callback) {
print(password);
_dio
.post(API_HOST + \"dj-rest-auth/login/\",
data: {
\'email\': email,
\'password\': password,
},
options: Options(validateStatus: (status) => status! < 500))
.then((response) {
AuthTokens? authTokens = response.statusCode == 200
? AuthTokens.fromJson(response.data)
: null;
//authTokens?.save();
//callback(new LoginResponse(response.statusCode, authTokens!));
if (authTokens != null) {authTokens.save();
callback(new LoginResponse(response.statusCode, authTokens));}
else {print(\'something\');}
});
}
也许需要更多信息,如果需要,我会提供。如果有任何帮助,我将不胜感激。
标签: flutter dart-null-safety bad-request dio