我有一个休息服务,而不是restfull。 该模块是无状态的,只是公开一些休息endopoints:接收请求,转换它,调用外部endopints,然后组成一个Json响应。其余:在Json响应文件夹以节省带宽
事情是,答案是相当详细的,有些领域是相当大的。
我被要求在请求级别提供过滤,以便响应仅包含请求的数据。
只是为了提供一个例子:我的公开方法是POST,并接受图像base64编码,响应也可以包含图像,和许多其他领域:
request: { image="<here a long BASE64 encoded request>"}
response: {result="success",
message="it was a success",
responseImage="<another base64 encoded image>",
longArray1=[
{first="...", second="...", third="..."},
{first="...", second="...", third="..."},
....many!
],
longArray2=[
{first2="...", second2="...", third2="..."},
{first2="...", second2="...", third2="..."},
....many!
]
}
我要的是避免重新发明轮子。有没有一种已知模式可以进行查询(在queryString或Json请求中添加某些内容,以及如何),以便消费者可以事先选择接收哪些字段作为响应,并在响应中节省带宽?
您应该向我们提供您正在考虑的事情。那么我们就会更容易说出是否有更好的方法。 – palsrealm
我传递查询字符串中的一些参数(最多3个),并使用该值筛选响应。我想实现一个Filter类,它收集过滤器的映射,所以当我填充响应时,我只有一个参数(过滤器对象),并询问他是否必须包含当前值。 – marco
问题在于某些过滤器必须在参数级别上运行(如响应图像过滤器:图像刚刚输入或输出)以及其他数组值(例如,如果longArray1的过滤器为FAILED_ONLY,如果“first”为“FAILED “我必须展示该物品,如果它是”通过“,我必须隐藏它)。它仍在开发中(实际上,我有更紧急的事情要做) – marco