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)


相关推荐

  • 遗传算法做多目标优化_python 遗传算法

    遗传算法做多目标优化_python 遗传算法多目标遗传优化算法nsga2,python源码实现。源码实现,不适用任何第三方工具包。由于是基本源码,所有熟悉其他语言的也能看懂意思。

  • pycharm如何安装numpy库_四上入库

    pycharm如何安装numpy库_四上入库NumPy(NumericalPython)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy是一个运行速度非常快的数学库,主要用于数组计算。(一)打开PyCharm,点击设置(二)选择左侧栏目中的“项目:pythonProject”–“Python解释器”,点击右侧“+”(三)输入“numpy”,安装即可…

  • Plants Vs Zombies Online_vascular plant

    Plants Vs Zombies Online_vascular plant24 83 2 6 63 910 10 164题解贪心+二分#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 2e5 + 10;ll a[N],st[N]; int n,m;bool check(ll x){ memset(st,0,sizeof st); ll cnt = 0; for(int i = 1;i <= ..

  • 【js】Input事件

    【js】Input事件InputEvent常用事件触发的先后顺序如下:1keydown2keypress3textInput4input5keyupkeydown,keyup1全部浏览器支持2当用户按下/释放键盘上的任意键时触发3event.keyCode,返回键盘上按键对应的特定键码(兼容性:分号在Firefox,Opera上返回的是ASC

  • 简述CORBA开发步骤_发散思维的简单例子

    简述CORBA开发步骤_发散思维的简单例子因为对CORBA分析的需要,这里写一个简单的CORBA例子。从JDK1.2开始,JDK中集成了ORB的实现,本例子使用了JDK1.7,对于JDK1.2+应该都没有问题。这个例子实现一个简单的加减乘除的

  • pycharm的最新版本_pycharm最新版本是多少

    pycharm的最新版本_pycharm最新版本是多少地址:https://www.jetbrains.com/pycharm/download/other.html

    2022年10月30日

发表回复

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

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