2
我想知道是否有一个更可读/可支持的方式来编写改造界面,而不是我如何做。改造api因子化
我有可能需要几个参数相同的路线,但其中大部分是相同的,我写我的界面是这样的:
@FormUrlEncoded
@POST("/api/questions/{questionid}/response")
Call <QuestionAnswerResponse> postResponse(@Path("questionid") String questionId,
@Field("course") String courseId,
@Field("self") String self,
@Field("hash") String hash,
@Field("sessionId") String sessionId);
@FormUrlEncoded
@POST("/api/questions/{questionid}/response")
Call <QuestionAnswerResponse> postResponse(@Path("questionid") String questionId,
@Field("course") String courseId,
@Field("self") List <Integer> self,
@Field("hash") String hash,
@Field("sessionId") String sessionId);
@FormUrlEncoded
@POST("/api/polls/{questionid}/response")
Call <QuestionAnswerResponse> postPollResponse(@Path("questionid") String questionId,
@Field("course") String courseId,
@Field("self") List <Integer> self,
@Field("hash") String hash,
@Field("sessionId") String sessionId);
@FormUrlEncoded
@POST("/api/questions/{questionid}/response")
Call <QuestionAnswerResponse> postResponse(@Path("questionid") String questionId,
@Field("course") String courseId,
@Field("self[text]") String text,
@Field("self[medias]") List <String> medias,
@Field("hash") String hash,
@Field("sessionId") String sessionId);
@FormUrlEncoded
@POST("/api/polls/{questionid}/response")
Call <QuestionAnswerResponse> postPollResponse(@Path("questionid") String questionId,
@Field("course") String courseId,
@Field("self[text]") String text,
@Field("self[medias]") List <String> medias,
@Field("hash") String hash,
@Field("sessionId") String sessionId);
@FormUrlEncoded
@POST("/api/questions/{questionid}/response")
Call <QuestionAnswerResponse> postResponse(@Path("questionid") String questionId,
@Field("course") String courseId,
@Field("self[x]") Integer x,
@Field("self[y]") Integer y,
@Field("hash") String hash,
@Field("sessionId") String sessionId);
注意这仅仅是给你的想法,但有甚至更多的签名。
参数“哈希”已添加,我不得不在每次调用时复制/粘贴它。它感觉不对:)。
谢谢
谢谢你有时间回答我这个问题。根据我的理解,对于每个呼叫权,我仍然会拥有1个具有相同参数的签名?并且在他们中的每一个中,我会将字段“散列”添加到该字段映射中。我宁愿寻找一种将字段“添加”到永远存在的一组字段的方法。但也许我可以尝试一下FieldMap –
好吧,我在这里看到了另一个简单而流行的解决方案:如果您总是为每个调用添加一个散列,那么创建一个请求拦截器会很明智。对不起,在这里没有提供的例子,但你会发现很多互联网:) –
是的我已经有一些参数的拦截器,但我不认为他们应该在这里使用。 –