Tencent / APIJSON

🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构 🏆 Real-Time coding-free, powerful and secure ORM 🚀 providing APIs and Docs without coding by Backend, and the returned JSON of API can be customized by Frontend(Client) users
http://apijson.cn
Other
17.07k stars 2.14k forks source link

请问返回的code可以更改成 0 吗 #548

Closed jwcjf closed 1 year ago

jwcjf commented 1 year ago

Description

image

code:200 改成 code:0

TommyLemon commented 1 year ago

@jwcjf 不管是前端还是后端,拿到返回 Response JSON 后想改成啥样都行,可以参考这个用户的文章: 使用APIJSON写低代码Crud接口 https://blog.csdn.net/weixin_42375862/article/details/121654264

image

当然他的方式明显影响性能,而且需要对所有万能通用 API 调整(最多 8 个:/get, /head, /post, /put, /delete, /gets, /heads, /crud)。

其实直接 DemoParser 重写 parseResponse 来调整更好一些,只需要调整一处就行了,对性能影响很小可以忽略,大概这样:

@Override
public JSONObject parseResponse(JSONObject request) {
   JSONObject res = super.parseResponse(request);
   if (res.getIntValue(JSONResponse.KEY_CODE) == JSONResponse.CODE_SUCCESS) { // 或 JSONResponse.isSuccess(res.getIntValue(JSONResponse.KEY_CODE))
      res.put(JSONResponse.KEY_CODE, 0);
   }
   return res;
}

https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractParser.java#L398-L517

我脱离 IDE 直接手写的,可能有错误要调整下。

不过一般不建议改,因为 APIAuto, UnitAuto 等生态周边工具都是依赖这些通用的状态码(和 HTTP Status 一致), https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/JSONResponse.java#L40-L53

如果改了状态码,用到的生态周边工具也得跟着调整。 https://github.com/Tencent/APIJSON#%E7%94%9F%E6%80%81%E9%A1%B9%E7%9B%AE

不过倒也可以对业务项目返回 code: 0,对 APIAuto 等生态项目仍然返回 code: 200, 不管是同一个后端通过前端传参区分项目,还是为不同项目部署不同的 APIJSON 后端,都是可行的。

TommyLemon commented 12 months ago

增加一个 status/statusCode/errCode/errorCode 等命名的字段表示状态码/错误码更好,可以很好地兼容生态项目 https://github.com/Tencent/APIJSON/issues/611