我的 Spring 启动应用程序中有一个以下 REST 端点。
/employees
这将返回以下响应。
{
"id": 1,
"firstName": "John",
"lastName": "Doe",
"department": "IT",
"salary": "$5000"
...
//There are more here
}
现在,我需要让两个不同的客户端使用此端点。但是只需要从这个端点知道部分信息。
所以对于client1
,输出如下:
{
"id" : 1,
"firstName" : "John",
"lastName" : "Doe"
}
而对于其他客户端(client2
(,响应应该是。
{
"id" : 1,
"department": "IT",
"salary": "$5000"
}
我怎样才能解决这个问题是最好的方法?
客户端 1 和客户端 2 将通过其身份验证详细信息进行区分。也许是指定如何过滤响应实体的配置。这样,每当我配置新客户端时,我都可以为客户端创建一个新配置,并负责响应过滤。
控制器类中自动连接HttpServletRequest对象,然后使用它来获取客户端详细信息,如标头或用户代理信息。然后,这些信息可用于检查客户端类型,并相应地构建和发送响应日期。
这样做:
客户端 - 1:
ResponseEntity<ObjectType1> result = restTemplate.exchange(url, HttpMethod.POST, ObjectType1.class);
客户端 - 2:
ResponseEntity<ObjectType2> result = restTemplate.exchange(url, HttpMethod.POST, ObjectType2.class);
自定义对象应如下所示的位置
public class ObjectType1{
int id;
String firstName;
String lastName;
//default Constructor & getter & setters
}
public class ObjectType1{
int id;
String department;
String salary;
//default Constructor & getter & setters
}
在上述情况下,spring/对象映射器将自动将返回的响应/参数映射到所需的对象参数(对象类型1 或对象类型2(
您应该调查杰克逊的 json 视图功能。您可以使用同一对象,但根据视图筛选字段。您可以在此问题中找到更多详细信息