在对 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,
  }
});