gpt4 book ai didi

android - 改造 api 分解

转载 作者:行者123 更新时间:2023-11-29 01:24:26 24 4
gpt4 key购买 nike

我想知道是否有一种比我现在的方式更可读/可维护的方式来编写改造界面。

我有一个相同的路由,可以带几个参数,但大部分是相同的,我这样写我的界面:

@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);

请注意,这只是为了给您提供想法,但还有更多签名。

添加了参数“哈希”,我必须在每次调用时复制/粘贴它。感觉不对 :)。

谢谢

最佳答案

您需要在描述性或保持代码可读性之间做出决定。

你可以看看FieldMap这将使您的通话更清晰,例如:

@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,
@FieldMap Map<String, Object> fields);

但是您会丢失调用中可能包含的字段的描述,您需要在其他地方定义这些字段。将此类信息放在一个地方以供将来引用真是太好了,因此解决该问题的方法可能是在代码中添加注释——但随后您的代码又变得困惑了:)

我通常做的事情与上面的示例有点相似:简化的调用接口(interface)用于快速总结,下面的“包装器”方法用于很好地构建这些调用。例如,

@FormUrlEncoded
@POST("/api/questions/{questionid}/response")
Call < QuestionAnswerResponse > postResponse(@Path("questionid") String questionId,
@FieldMap Map<String, Object> fields);

...

public static void postResponse(String courseId, String self, String hash, String sessionId){
Map<String, String> map = new HashMap<>();
map.put("course", courseId);
map.put("self", self);
map.put("hash", hash);
map.put("sessionId", sessionId);

// ... here you build your call with FieldMap params provided

}

这样一来,我总是把所有东西都放在一个地方,简化在上面,在下面的某个地方更详细。

希望这有帮助;)

关于android - 改造 api 分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34858022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com