问题描述
用例
我有以下休息客户端
@RegisterRestClient(configKey = "service")
public interface Service {
@POST
@Path("Invoice")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
Response request(@QueryParam("instance") String instance,@BeanParam Input input);
}
这样的属性
public class Input {
@FormParam("title")
public String title;
@FormParam("description")
public String description;
问题
对 API 的请求工作正常,但是在我的情况下,属性的顺序确实很重要(这背后的原因是什么,我目前无法回答,抱歉)。 >
因此发送 title=Test&description=Testdescription
与 description=Testdescription&title=Test
不同。
我尝试过的其他解决方案
- 使用
Form
代替 POJO:没有数据发送到服务器
@POST
@Path("Invoice")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
Customresponse requestForm(@QueryParam("instance") String instance,@BeanParam Form form);
- 使用
Entit<Form>
:没有数据发送到服务器
@POST
@Path("Invoice")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
Customresponse requestForm(@QueryParam("instance") String instance,@BeanParam Entity<Form> form);
假设
我发现 org.jboss.resteasy.client.jaxrs.internal.proxy.processors.FormProcessor
在内部使用了 HashMap
。我认为这正是问题所在,因为没有保证的顺序。我的假设正确吗?
问题
我该如何解决这个问题,并始终使用 Microprofile Rest Client 为 API 提供相同的顺序。
解决方法
它与 org.jboss.resteasy.client.jaxrs.ResteasyClient
调用类似
Response response = target
.request(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_FORM_URLENCODED)
.post(Entity.form(form));
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)