我正在为学生申请系统构建一个申请,允许多个组织向其学生提供在线申请表申请课程。 对于每个应用程序,它将具有ID,StudentName,CourseName。但是,有些大学需要SecondaryExamMark,有些需要参考名称和参考联系号。
我正在进行API调用(/ application / list?pageNo = 1& rowsPerPage = 20& orgId = 1) 并返回所有具有公共信息的应用程序数据以及基于提供的组织ID的额外要求
我定义了一个应用程序模型,其中包括所有组织请求的所有常见属性和属性子集,并将它们存储在单个数据库表中,并为不同的组织提供一些可空字段。
就Api响应结构而言,以下哪项更合适?
static int promptForInt(String prompt, int min, int max){
System.out.println(prompt);
String input = in.readLine();
int parsedInt = Integer.parseInt(input);
while(!(parsedInt > min && parsedInt < max)){
System.out.println("Your input is invalid. " + prompt);
input = in.readLine();
parsedInt = Integer.parseInt(input);
}
return parsedInt;
}
OR
{
ID: 1,
StudentName: 'A B',
CourseName: 'B C',
ReferenceName: null,
ReferenceContact: null,
SecondarySchoolMark: '80'
}
第一种方法似乎是一般的Api结构,它返回描述应用程序的对象。然而,第二种方法允许Api决定应该呈现哪些列,并且UI只需要将响应视为显示字段。
IMO,我更喜欢第一种方法,因为为了使API能够与其他客户端集成,API应该提供基于资源的响应。并显示或隐藏列(无论是基于对/ getdisplaycolumns的另一个Api调用?orgId = 1还是仅将空列视为隐藏是UI的责任)
编辑1 :不一定从方法中返回null属性,因为Json序列化程序允许忽略null属性)
答案 0 :(得分:0)
我同意,建立一个具有几个可空属性的模型(资源),客户端可以忽略这些属性听起来像一个更强大的设计(强类型属性!),而不是将第二个模型反序列化为各种类型的字典和与此合作。