如何在请求正文中发送原始 json
How to send raw json in request body
在 Flutter 中使用 retrofit 包
我需要发送 json 原始对象,如邮递员快照所示。
我试过用这个方法做但是没成功
@override
@POST('/profile')
Future<UserModel> updateUser(@Body() UserModel userModel);
这是请求
╔╣ Request ║ POST ║ http://206.189.57.118/api/user/profile
╔ Headers ╟ content-type: application/json ╟ Accept: application/json ╟ Authorization: Bearer 8|LMoB1zivD3O89B7Bv3RQi4zLMeAfTZShmClvWYAt ╟ contentType: application/json ╟ responseType: ResponseType.json ╟ followRedirects: true ╟ connectTimeout: 0 ╟ receiveTimeout: 0
╔ Body ╟ gender: Male ╟ dateOfBirth: 856800000 ╟ maritalStatus: ╟ numChildren: 0 ╟ address: Khanyounis ╟ phone: 123456789 ╟ secondaryPhone: 123456789 ╟ secondaryPhoneRelationShip: ╟ telephone: 123456789 ╟ university: Azhar ╟ faculty: Software Engineering ╟ specialization: Web development ╟ image: null
我认为这导致您在 UserModel
参数上使用驼峰式大小写(例如 dateOfBirth
、maritalStatus
)并且您的后端服务尝试使用下划线类型解析密钥(例如.date_of_birth
, marital_status
).
要继续在您的 dart 文件中使用驼峰式大小写并在 json/back 终端服务中使用下划线,您可以使用 json_serializable 并使用下划线添加 JsonKey
。
例如
import 'package:json_annotation/json_annotation.dart';
part 'user_model.g.dart';
@JsonSerializable()
class UserModel {
@JsonKey(name: 'first_name_ar')
String firstNameAr;
@JsonKey(name: 'middle_name_ar')
String middleNameAr;
@JsonKey(name: 'last_name_ar')
String lastNameAr;
@JsonKey(name: 'first_name_en')
String firstNameEn;
@JsonKey(name: 'middle_name_en')
String middleNameEn;
@JsonKey(name: 'last_name_en')
String lastNameEn;
@JsonKey(name: 'gender')
String gender;
@JsonKey(name: 'date_of_birth')
String dateOfBirth;
@JsonKey(name: 'marital_status')
String maritalStatus;
UserModel();
factory UserModel.fromJson(Map<String, dynamic> json) =>
_$UserModelFromJson(json);
Map<dynamic, dynamic> toJson() => _$UserModelToJson(this);
}
我在我的项目中使用它来发送原始 json 数据,使用改造和工作。
在 Flutter 中使用 retrofit 包 我需要发送 json 原始对象,如邮递员快照所示。
我试过用这个方法做但是没成功
@override
@POST('/profile')
Future<UserModel> updateUser(@Body() UserModel userModel);
这是请求
╔╣ Request ║ POST ║ http://206.189.57.118/api/user/profile
╔ Headers ╟ content-type: application/json ╟ Accept: application/json ╟ Authorization: Bearer 8|LMoB1zivD3O89B7Bv3RQi4zLMeAfTZShmClvWYAt ╟ contentType: application/json ╟ responseType: ResponseType.json ╟ followRedirects: true ╟ connectTimeout: 0 ╟ receiveTimeout: 0
╔ Body ╟ gender: Male ╟ dateOfBirth: 856800000 ╟ maritalStatus: ╟ numChildren: 0 ╟ address: Khanyounis ╟ phone: 123456789 ╟ secondaryPhone: 123456789 ╟ secondaryPhoneRelationShip: ╟ telephone: 123456789 ╟ university: Azhar ╟ faculty: Software Engineering ╟ specialization: Web development ╟ image: null
我认为这导致您在 UserModel
参数上使用驼峰式大小写(例如 dateOfBirth
、maritalStatus
)并且您的后端服务尝试使用下划线类型解析密钥(例如.date_of_birth
, marital_status
).
要继续在您的 dart 文件中使用驼峰式大小写并在 json/back 终端服务中使用下划线,您可以使用 json_serializable 并使用下划线添加 JsonKey
。
例如
import 'package:json_annotation/json_annotation.dart';
part 'user_model.g.dart';
@JsonSerializable()
class UserModel {
@JsonKey(name: 'first_name_ar')
String firstNameAr;
@JsonKey(name: 'middle_name_ar')
String middleNameAr;
@JsonKey(name: 'last_name_ar')
String lastNameAr;
@JsonKey(name: 'first_name_en')
String firstNameEn;
@JsonKey(name: 'middle_name_en')
String middleNameEn;
@JsonKey(name: 'last_name_en')
String lastNameEn;
@JsonKey(name: 'gender')
String gender;
@JsonKey(name: 'date_of_birth')
String dateOfBirth;
@JsonKey(name: 'marital_status')
String maritalStatus;
UserModel();
factory UserModel.fromJson(Map<String, dynamic> json) =>
_$UserModelFromJson(json);
Map<dynamic, dynamic> toJson() => _$UserModelToJson(this);
}
我在我的项目中使用它来发送原始 json 数据,使用改造和工作。