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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言入门教程–-12作用域

    c语言入门教程–-12作用域

    2021年3月12日
    241
  • 用PMML实现机器学习模型的跨平台上线

    用PMML实现机器学习模型的跨平台上线在机器学习用于产品的时候,我们经常会遇到跨平台的问题。比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环

    2022年8月5日
    5
  • Jmeter性能测试(一)性能测试关键指标解析

    Jmeter性能测试(一)性能测试关键指标解析一、性能测试关键指标解析1、响应时间多–并发量快–延时、响应时间好–稳定性(长时间运行)省–资源利用率响应时间:对请求作出响应所需要的的时间,是用户感知软件性能的主要指标。响应时间包括:1.用户客户端呈现时间2.请求/响应数据网络传输时间3.应用服务器处理时间4.数据库系统处理时间响应时间多少合理?对于一个Web系统,普遍接受的响应时间标准为2/5/8秒(2秒–非常好;5秒–可接受;8秒是上限)2、并发用户数用户…

    2022年6月17日
    132
  • Java遍历map集合的4中方式

    方法一通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。Map<Integer,Integer>map=newHashMap<Integer,Integer>();for(Map.Entry&l…

    2022年4月8日
    52
  • 文科生也能学会的Excel VBA 宏编程入门

    文科生也能学会的Excel VBA 宏编程入门文章目录VBA宏编程简介准备工作打开宏功能打开“开发工具”选项卡VBA编程示例任务介绍文件宏全局宏VBA宏编程简介VBA编程是Office系列软件自带的编程功能,也就是说不只是Excel,Word和PPT也能进行VBA编程。而“宏”可以理解为一组自动化程序,执行一个宏就能执行其对应的一系列操作。创建宏主要有两种方法,一种是录制宏,也就是将人的一些操作录下来,需要的时候执行宏就可以自动重复这些操…

    2022年6月10日
    39
  • python无人机编程_3d硬金是什么意思

    python无人机编程_3d硬金是什么意思往期本文是双足机器人系列的第三篇,在前面的文章中我们介绍了2D线性倒立摆的基本理论,详见:【双足机器人(1)】线性倒立摆及其运动控制(附代码)在这篇文章中我们要详细介绍3D线性倒立摆的基本…

    2022年8月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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