改造 - 知道 POST 何时不成功

Retrofit - knowing when the POST is unsuccessful

我正在对我的服务器使用@POST 新用户对象进行改造。用户名是数据库中的唯一键 table。如果我使用唯一用户名执行异步调用,该条目将添加到用户 table。响应成功。

但是,如果我尝试对具有现有用户名的用户执行调用,则该条目不会添加到数据库中 table(如预期的那样)但是响应成功。在所有情况下,我都会得到成功的回应。

我怎样才能notify/check操作成功? create/update/delete 调用是否成功反映在数据库中?

端点:

@POST("user")
Call<User> saveUser(@Body User m);

调用示例:

call.enqueue(new Callback<User>() {
            @Override
            public void onResponse(Call<User> call, Response<User> response) {

                try {
                    if(response.isSuccessful()) {

                        Log.i(Constants.LOG, response.raw().toString());
                    }
                } catch (Exception e) {
                    Log.e(Constants.LOG, e.toString());
                }
            }

所有场景下的原始响应输出:

Response{protocol=http/1.1, code=200, message=OK, url=http://myapi.com/user}

好的,所以我终于找到了解决方法。在休息时 api 我不得不调用 status 并发送自定义 code:

res.status(300).send({ error: 'Something went wrong' });

在添加重复用户的情况下,响应不成功,我得到原始输出:

Response{protocol=http/1.1, code=300, message=Internal Server Error, url=http:///myapi.com/user}