我正在开发一个解决方案,其中Web服务器(带有express的节点)将使用请求包从web api获取数据。 数据返回(如果包含验证错误状态代码),将再次匹配该值并返回相应的错误消息。怎么可能实现?
这将是这样的:
var options = {
method: 'POST',
url: 'apiUrl'
}
var response = function (error, response, body) {
if(!error && response.statusCode == 200){
res.jsonp(body);
} else {
if (body.language == 'en') {
// map the reponse body error status code to en.json
} else if (body.language == 'jp')
// map the response body error status code to jp.json
}
}
request({
options, response
})
验证错误的默认正文响应
{
'language': 'en',
'error': [{ 'ErrorCode': '1000', 'ErrorCode': '1001'}]
}
最终身体反应(处理后)
{
'language': 'en',
'error': [{'ErrorMessage': 'Invalid data format', 'ErrorMessage': 'Invalid Password'}]
}
不同验证语言的资源文件(服务器中的静态)
en.json
{
'1000': 'Invalid date format',
'1001': 'Invalid password',
'1002': ...
'1003': ...
...
'1999': ...
}
jp.json
{
'1000': 'japan translation',
'1001': 'japan translation 2',
'1002': ...
'1003': ...
...
'1999': ...
}
答案 0 :(得分:2)
在这里你看到了如何做到这一点。
我使用fs
模块打开JSON文件。并且我使用map
将errorCode
数组转换为errorMessage
数组
var response = function(error, response, body) {
if (!error && response.statusCode == 200) {
res.jsonp(body);
} else {
// Set defaut language.
if (!body.language.match(/en|jp|iw/)) body.language = 'en'
// You must specify default language for security reasons.
// Open the file, and convert to JSON object
var j = JSON.parse(
require('fs').readFileSync(__dirname + '/' + body.language + '.json')
)
res.jsonp({
language: body.language,
// Convert error:[{errorCode}] array to the messages from the JSON
error: body.error.map(function(v) {
return j[v.ErrorCode]
})
})
}
}