当试图发布到API时,我得到一个;“地位”:400颤振误差

当试图发布到API时,我得到一个;“地位”:400颤振误差,api,flutter,http,dart,Api,Flutter,Http,Dart,I/颤振(30384):数据{“类型”:”https://tools.ietf.org/html/rfc7231#section-6.5.1、“标题”:“发生了一个或多个验证错误”,“状态”:400,“traceId”:“|e3244589-485510f2c271c42c.”,“错误”:{“$.name”:[“'name,“姓氏”:姓氏,“email”:email,“plateNumber”:plateNumber}“”是无效的JSON文本。应为文本“null”。路径:$.name |行号:0

I/颤振(30384):数据{“类型”:”https://tools.ietf.org/html/rfc7231#section-6.5.1、“标题”:“发生了一个或多个验证错误”,“状态”:400,“traceId”:“|e3244589-485510f2c271c42c.”,“错误”:{“$.name”:[“'name,“姓氏”:姓氏,“email”:email,“plateNumber”:plateNumber}“”是无效的JSON文本。应为文本“null”。路径:$.name |行号:0 | BytePositionLine:11。“]}

代码如下:

数据模型类

List<DataModel> dataModelFromJson(String str) =>
    List<DataModel>.from(json.decode(str).map((x) => DataModel.fromJson(x)));

String dataModelToJson(List<DataModel> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

class DataModel {
  DataModel({
    this.name,
    this.surname,
    this.email,
    this.plateNumber,
  });

  int id;
  String name;
  String surname;
  String email;
  String plateNumber;

  factory DataModel.fromJson(Map<String, dynamic> json) => DataModel(
        name: json["name"],
        surname: json["surname"],
        email: json["email"],
        plateNumber: json["plateNumber"],
      );

  Map<String, dynamic> toJson() => {
        "name": name,
        "surname": surname,
        "email": email,
        "plateNumber": plateNumber,
      };
}
List dataModelFromJson(String str)=>
List.from(json.decode(str.map)(x)=>DataModel.fromJson(x));
字符串dataModelToJson(List data)=>json.encode(List.from(data.map((x)=>x.toJson()));
类数据模型{
数据模型({
这个名字,
这个姓,
这是一封电子邮件,
这个号码,,
});
int-id;
字符串名;
串姓;
字符串电子邮件;
串板编号;
factory DataModel.fromJson(映射json)=>DataModel(
名称:json[“名称”],
姓氏:json[“姓氏”],
电子邮件:json[“电子邮件”],
plateNumber:json[“plateNumber”],
);
映射到JSON()=>{
“姓名”:姓名,
“姓”:姓,
“电子邮件”:电子邮件,
“车牌号”:车牌号,
};
}
服务等级

Future<DataModel> submitData(String name, String surname, String email, String plateNumber) async {
  try {
    Uri uri = Uri.parse("http://ngcyaz.com/api/drivers");
    String json = "{ \"name\": name, \"surname\": surname, \"email\": email, \"plateNumber\": plateNumber}";
    Map<String, String> header = {"content-type": "application/json"};
    var response = await http.post(uri, body: json, headers: header);
    var data = response.body;
    print("data " + data);
    if (response.statusCode == 200) {
      String responseString = response.body;
      dataModelFromJson(responseString);
    } else
      return null;
  } catch (e) {
    print(e);
  }
}
Future submitData(字符串名称、字符串姓氏、字符串电子邮件、字符串编号)异步{
试一试{
Uri=Uri.parse(“http://ngcyaz.com/api/drivers");
字符串json=“{\'名称\':名称,\'姓氏\':姓氏,\'电子邮件\':电子邮件,\'平板编号\':平板编号}”;
映射头={“内容类型”:“应用程序/json”};
var response=wait http.post(uri,body:json,headers:header);
var数据=response.body;
打印(“数据”+数据);
如果(response.statusCode==200){
字符串responseString=response.body;
dataModelFromJson(responseString);
}否则
返回null;
}捕获(e){
印刷品(e);
}
}

使用简单的
映射
并将其传递给
jsonecode

submitData(
      String name, String surname, String email, String plateNumber) async {
    try {
      Uri uri = Uri.parse("http://ngcyaz.com/api/drivers");
      final map = {
        "name": name,
        "surname": surname,
        "email": email,
        "plateNumber": plateNumber
      };
      Map<String, String> header = {"content-type": "application/json"};
      var response = await http.post(uri, body: jsonEncode(map), headers: header); 
      var data = response.body;
      print("data " + data);
      if (response.statusCode == 200) {
        String responseString = response.body;
        print("Response String: " + responseString);
      } else
        return null;
    } catch (e) {
      print(e);
    }
  }
submitData(
字符串名称、字符串姓氏、字符串电子邮件、字符串编号)异步{
试一试{
Uri=Uri.parse(“http://ngcyaz.com/api/drivers");
最终地图={
“姓名”:姓名,
“姓”:姓,
“电子邮件”:电子邮件,
“板材编号”:板材编号
};
映射头={“内容类型”:“应用程序/json”};
var response=wait http.post(uri,主体:jsonEncode(map),头:头);
var数据=response.body;
打印(“数据”+数据);
如果(response.statusCode==200){
字符串responseString=response.body;
打印(“响应字符串:“+responseString”);
}否则
返回null;
}捕获(e){
印刷品(e);
}
}

在点击API之前,请检查提供给键
name
的值是否为空。