处理 REST API 服务器响应
Handling REST API server response
我使用 REST API CodeIgniter 已经一年多了,通常当我想 return 任何回应时,我都会 return 200
一种要求。我知道为所有响应提供了状态代码,但我实际上很想知道,如果我对所有响应使用 200
是不是错了?并用true
和false
判断数据状态。
这是我一直使用的示例代码。让我们说检查用户是否存在。
CodeIgniter REST API
$user = [ 'id' => 1, 'name' => 'John Doe' ];
$this->response([
'status' => !empty($user) ? true : false,
'user' => $user
], REST_Controller::HTTP_OK);
React Native
try {
const res = await axios.get('https://www.example.com/retrieve-user?user_id=3');
if (res.status == 200){
if(res.data.status == true){
// user found
} else {
// user not found
}
} else {
alert('Internal server error.')
}
} catch (err) {
console.error(err);
}
根据例子,我其实是根据状态码200
来判断服务器是否有错误(代码错误,请求无效等)
所以我的问题是,坚持使用这种方法可以吗?
鉴于您的 API, 是 处理代码 200
似乎足够了,因为您的 API 可能不会 return 任何其他 HttpCode .
给定一个更大的API(甚至是简单的),没有.
如果没有找到具有给定 ID 的用户,您的 API 可能 return 一个 204
/404
。
如果您的 API 正在部署(且不可用)或正在维护,您的 API 可能 return 和 503
,您可以在 30 秒后重试。
如果缺少给定的 header (Content-Type ...) 和 return 400
...
,您的 API 可能会拒绝请求
编辑 1:
if (res.status == 200){
// user found
} else if (res.status == 204) {
// user not found
} else {
alert('An error occured')
}
我使用 REST API CodeIgniter 已经一年多了,通常当我想 return 任何回应时,我都会 return 200
一种要求。我知道为所有响应提供了状态代码,但我实际上很想知道,如果我对所有响应使用 200
是不是错了?并用true
和false
判断数据状态。
这是我一直使用的示例代码。让我们说检查用户是否存在。
CodeIgniter REST API
$user = [ 'id' => 1, 'name' => 'John Doe' ];
$this->response([
'status' => !empty($user) ? true : false,
'user' => $user
], REST_Controller::HTTP_OK);
React Native
try {
const res = await axios.get('https://www.example.com/retrieve-user?user_id=3');
if (res.status == 200){
if(res.data.status == true){
// user found
} else {
// user not found
}
} else {
alert('Internal server error.')
}
} catch (err) {
console.error(err);
}
根据例子,我其实是根据状态码200
来判断服务器是否有错误(代码错误,请求无效等)
所以我的问题是,坚持使用这种方法可以吗?
鉴于您的 API, 是 处理代码 200
似乎足够了,因为您的 API 可能不会 return 任何其他 HttpCode .
给定一个更大的API(甚至是简单的),没有.
如果没有找到具有给定 ID 的用户,您的 API 可能 return 一个 204
/404
。
如果您的 API 正在部署(且不可用)或正在维护,您的 API 可能 return 和 503
,您可以在 30 秒后重试。
如果缺少给定的 header (Content-Type ...) 和 return 400
...
编辑 1:
if (res.status == 200){
// user found
} else if (res.status == 204) {
// user not found
} else {
alert('An error occured')
}