在对 Strapi 的 POST 请求中获得 400(错误请求)
Getting 400 (Bad Request) on a POST request to Strapi
我正在尝试 post 从 Flutter 应用程序向我的 Strapi 项目发送数据。
我确保为未经身份验证的用户启用了权限。
我的请求有什么问题?
Future saveReview(usrReview, usrRating) async {
const endpoint = 'http://localhost:1337/api/reviews';
var url = Uri.parse(endpoint);
Map<String, String> headers = {
'Content-Type': 'application/json; charset=UTF-8',
};
var reviewObj = jsonEncode({
'review': usrReview,
'rating': usrRating,
});
var response = await http.post(
url,
headers: headers,
body: reviewObj,
);
print(response.statusCode);
}
我认为这可能会解决您的问题!几天前我最近 运行 遇到了同样的错误!
基本上,您必须将 POST 请求的正文作为字符串发送。
它应该是这样的!
Future saveReview(usrReview, usrRating) async {
const endpoint = 'http://localhost:1337/api/reviews';
var url = Uri.parse(endpoint);
Map<String, String> headers = {
'Content-Type': 'application/json; charset=UTF-8',
};
// Pass the JSON data as a whole string. Then the server should parse it
var reviewObj = '{"review": $usrReview, "rating": $usrRating}';
var response = await http.post(
url,
headers: headers,
body: reviewObj,
);
print(response.statusCode);
}
试一试,如果可行请告诉我!
问题是 reviewObj 的结构缺少一些东西。我必须在其中包含 'data' 才能正常工作。正确的 body 应该是这样的。
var reviewObj = jsonEncode({
'data': {
'review': usrReview,
'rating': usrRating,
}
});
我正在尝试 post 从 Flutter 应用程序向我的 Strapi 项目发送数据。 我确保为未经身份验证的用户启用了权限。 我的请求有什么问题?
Future saveReview(usrReview, usrRating) async {
const endpoint = 'http://localhost:1337/api/reviews';
var url = Uri.parse(endpoint);
Map<String, String> headers = {
'Content-Type': 'application/json; charset=UTF-8',
};
var reviewObj = jsonEncode({
'review': usrReview,
'rating': usrRating,
});
var response = await http.post(
url,
headers: headers,
body: reviewObj,
);
print(response.statusCode);
}
我认为这可能会解决您的问题!几天前我最近 运行 遇到了同样的错误!
基本上,您必须将 POST 请求的正文作为字符串发送。
它应该是这样的!
Future saveReview(usrReview, usrRating) async {
const endpoint = 'http://localhost:1337/api/reviews';
var url = Uri.parse(endpoint);
Map<String, String> headers = {
'Content-Type': 'application/json; charset=UTF-8',
};
// Pass the JSON data as a whole string. Then the server should parse it
var reviewObj = '{"review": $usrReview, "rating": $usrRating}';
var response = await http.post(
url,
headers: headers,
body: reviewObj,
);
print(response.statusCode);
}
试一试,如果可行请告诉我!
问题是 reviewObj 的结构缺少一些东西。我必须在其中包含 'data' 才能正常工作。正确的 body 应该是这样的。
var reviewObj = jsonEncode({
'data': {
'review': usrReview,
'rating': usrRating,
}
});