http 500状态码「建议收藏」

http请求返回500状态码,整体原因是:服务器内部错误。这个原因太过笼统,看了和没看直接懵逼。今天遇到这么一个崩溃的问题,这么大的范围,怎么找呢?然后,静下来打开思路,慢慢想一下,分析过程:1.客户端请求服务端的时候,返回500,首先服务端的请求发出去了,并且返回了500,错误定位到服务端。2.服务端里面代码竟然没有执行任何打印语句,说明还没有执行到逻辑,就已经出错了。3.这边服务

大家好,又见面了,我是你们的朋友全栈君。

http请求返回500状态码,整体原因是:服务器内部错误。这个原因太过笼统,看了和没看直接懵逼。今天遇到这么一个崩溃的问题,这么大的范围,怎么找呢?
然后,静下来打开思路,慢慢想一下,分析过程:
1.客户端请求服务端的时候,返回500,首先服务端的请求发出去了,并且返回了500,错误定位到服务端。
2.服务端里面代码竟然没有执行任何打印语句,说明还没有执行到逻辑,就已经出错了。
3.这边服务端是lua语言写的,在这个文件的开头有这个加载文件的语句

package.path = "../ta/?.lua;../xjnlib/src/?.lua;"..package.path
package.cpath = "../xjnlib/bin/?.so;"..package.cpath

4.首先要保证加载路径是对的。
5.确保第4步,才到这里分析,加载路径对了,在加载过程中,如果出现语法错误的情况,这里就会直接返回500了。示例如下:
这是一个lua的函数里的部分代码:

function _M.pre_order_info(args)
    local datas ={}


     datas = {
        front_trans_type = "120",
        trans_amt = string.format("%012d",args.trans_amt),
        pay_type = args.pay_type,
        xjn_code = args.xjn_code,
        req_date_time = req_time, --交易时间YYYYMMDDhhmmss
        --xjn_id = args.xjn_id ,--1内部终端号
        --term = args.term , --2内部终端流水
        in_type = IN_TYPE[args.pay_type],--接入方式
        mcssn = args.mcssn,
        account_id = args.account_id,
    }
    if args.xjn_id ~= undefined then
       log(m_uuid,"获取预订单信息xjn_id true==>" .. args.xjn_id)
      datas.xjn_id = args.xjn_id , --3内部终端号 此处语法错误
    end

    if args.term ~= undefined then
       log(m_uuid,"获取预订单信息term true==>" .. args.term)
    datas.term = args.term , --4内部终端流水 此处语法错误
    end
end

这里是这样的,上面定义了一个datas的table,在表示1和2处的字段注释掉了,经过下面的if条件判断,添加其字段,这里3和4很显然是从1和2处复制过来的,后面就多了逗号,以至于造成语法错误,导致客户端访问时,出现了500的状态码!去掉3和4处的逗号即可。
6.正确代码如下:

function _M.pre_order_info(args)
    local datas ={}


     datas = {
        front_trans_type = "120",
        trans_amt = string.format("%012d",args.trans_amt),
        pay_type = args.pay_type,
        xjn_code = args.xjn_code,
        req_date_time = req_time, --交易时间YYYYMMDDhhmmss
        --xjn_id = args.xjn_id ,--1内部终端号
        --termn = args.term , --2内部终端流水
        in_type = IN_TYPE[args.pay_type],--接入方式
        mcssn = args.mcssn,
        account_id = args.account_id,
    }
    if args.xjn_id ~= undefined then
            log(m_uuid,"获取预订单信息xjn_id true==>" .. args.xjn_id)
            datas.xjn_id = args.xjn_id  --3内部终端号
    end

    if args.term ~= undefined then
        log(m_uuid,"获取预订单信息term true==>" .. args.term)
        datas.term = args.term  --4内部终端流水
    end
end

实际开发中可能出现的问题千变万化,请根据实际情况找问题所在。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125440.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • cmd命令怎么切换盘符_windows切换盘符命令

    cmd命令怎么切换盘符_windows切换盘符命令转载于:https://www.cnblogs.com/QMM2008/p/4003039.html

  • 为什么贝叶斯是量化工作者最常用的工具

    为什么贝叶斯是量化工作者最常用的工具▌浅谈贝叶斯不论是学习概率统计还是机器学习的过程中,贝叶斯总是是绕不过去的一道坎,大部分人在学习的时候都是在强行地背公式和套用方法,没有真正去理解其牛逼的思想内涵。我看了一下Chalmers一些涉及到贝叶斯统计的课程,content里的第一条都是PhilosophyofBayesianstatistics。▌历史背景什么事都要从头说起,贝叶斯全名为托马斯…

  • 如何删除带有密码的赛门铁克企业版客户端?

    如何删除带有密码的赛门铁克企业版客户端?如何删除带有密码的赛门铁克企业版客户端?NortonAntiVirus的客户或赛门铁克防病毒客户尤其是企业版客户端可以安装作为管理网络安装类型由赛门铁克防病毒服务器。当赛门铁克防病毒客户端的管理,系统会提示输入密码时,卸载客户端通过在本地计算机上控制面板添加或删除程序Applet的。如果您不知道或忘记密码,客户端是无法卸载或删除。客户端卸载的密码是不同的从服务器组密码,可以…

  • 现代文译为古文(形容环境幽静雅致的古诗)

    现代文译为古文(形容环境幽静雅致的古诗)1.今文:身不由己古译:向来心是看客心,奈何人是剧中人。2.今文:我们越来越陌生了古译:相達何必曾相识,再看君卿已陌路。3.今文:我也不想你,你也就别想我了,古译:我断不思量,你莫思量我。4.今文:物是人非,我们回不去了,古译:柳絮随风各西东,人事无非已不同。5.今文:每时每刻都在想你古译:思君如流水,何有穷已时。6.今文:再看熟悉的地方,一切物是人非古译:青瓦长忆旧时雨,朱伞深巷无故人…

  • Java Integer类型比较问题

    Java Integer类型比较问题JavaInteger类型比较问题【强制】所有整型包装类对象之间值的比较,全部使用equals方法比较。说明:对于Integervar=?在-128至127范围内的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。—-阿里巴巴Java开发手册抱着探索的精神我们来看

  • Android学习路径(两)项目文件本身使用场景和文件演示

    Android学习路径(两)项目文件本身使用场景和文件演示

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号