Retrofit2 本地模拟API数据

开发移动端应用的时候,当服务端尚不具备服务能力的时候,需要本地模拟API接口数据,这里介绍开发Android应用,并使用Retrofit2框架的时候,如何简单的在本地模拟API数据。

//本地模拟API数据需要的核心类
public abstract class TestCall<T> implements Call<T> {

    @Override
    public Response<T> execute() throws IOException {
        return Response.success(getResponse());
    }

    public abstract T getResponse();

    @Override
    public void enqueue(Callback<T> callback) {
        try {
            callback.onResponse(this, execute());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public boolean isExecuted() {
        return false;
    }

    @Override
    public void cancel() {
    }

    @Override
    public boolean isCanceled() {
        return false;
    }

    @Override
    public Call<T> clone() {
        return null;
    }

    @Override
    public Request request() {
        return null;
    }
}
// API定义接口
public interface ApiService {
    @POST("security/login")
    Call<User> login(@Query("username") String account, @Query("password") String password)
}
// 本地模拟API数据的类
public class TestApiService implements ApiService {
    @POST("security/login")
    Call<User> login(@Query("username") String account, @Query("password") String password) {
     return new TestCall<User>() {
            @Override
            public User getResponse() {
                User user = new User("admin","male");
                return user;
            }
        };
    }
}
//当服务端不具备能力的时候调用本地数据 否则正常调用

ApiService apiService;

if(localTest){
    apiService = new TestApiService();
}else{
    apiService = new Retrofit.Builder().baseUrl(API_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(client).build().create(ApiService.class);
}
//正常调用服务接口即可

Call<User> call = apiService.login("test","test");
call.enqueue(...);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值