java改造2,参数转换
下午好!这是请求的谷歌地图服务的URL:
base_url/geocode/json?latlng=10.00,10.00&key=my_api_key
请注意,此请求包含参数latlng
,它由两个double
组成,用逗号分隔
我想在发出请求时编写更简洁的代码,如下面的代码示例:
mMapsGeocodeApi.getAddressByLocation(
location.getLat(),
location.getLng(),
API_KEY);
但是,参数latLng
-不是两个双变量,我无法编写包含两个变量的代码。在给请求方法提供变量之前,我必须将double
转换并组合成String
。但这看起来很糟糕
此时,在接口中写入的方法,如下面的代码插图所示:
@GET("geocode/json")
void getAddressByLocation(@Query("latlng") String latLng,
@Query("key") String key);
如何创建方法,该方法接受两个double
变量,将它们转换为String
(在此方法中),然后使用参数latlng
执行请求。此外,我如何在请求的类(而不是当前接口)MapsGeocodeApi
中实现这一点,该类使用改型
另外,我知道,如何使用第三方方法实现这一点,但我想知道它在类中是如何实现的,这需要Retrofit
进行请求
谢谢
# 1 楼答案
您应该尽可能保持您的服务到域模型。如果您必须转换它的表示,不要直接在服务中使用表示,因为这是传输层的责任。例如,如果有一天您决定改型,或者使用其他不处理字符串的服务,该怎么办?无论如何,假设您有以下纬度/经度域对象(至少必须是这样的):
您的服务是这样的:
差不多吧。跟踪URL(如果在
OkHttpClient
输出中被截获):顺便说一下,您可以从接口中删除
key
参数,因为可以在拦截器中动态添加key
参数