Skip to content

API 调用一直出现 404 #136

@xushier

Description

@xushier

同样的代码上午还可以运行,什么也没动,下午就不行了,返回网页 404。base.auth() 的值是 None。代码如下:

# -*- coding: utf-8 -*-

from seatable_api import Base, context
import requests
from seatable_api.constants import ColumnTypes

server_url = "http://xxx:xxx"    #使用内网 http 地址或公网 https,结果是一样的
api_token = "8927e2346e995e298aaf3cd44a0002e0364a910d"
base = Base(api_token, server_url)
base.auth()
base.list_tables()

运行结果:

Traceback (most recent call last):
  File "/ql/data/scripts/Tools/STB-SHT.swap.py", line 118, in <module>
    d = base.auth()
        ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/seatable_api/main.py", line 99, in auth
    data = parse_response(response)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/seatable_api/utils.py", line 213, in parse_response
    raise ConnectionError(response.status_code, response.text)
ConnectionError: [Errno 404] 

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<title>表格库</title>
<meta property="og:title" content= "SeaTable"  />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://xxx/api/v2.1/dtable/app-access-token/api/v2.1/dtable/app-access-token/" />
<meta property="og:image" content= "/media/img/og-seatable-logo.png"  />
<meta property="og:description" content= "SeaTable - 像 Excel 一样简单,同时具有数据库的强大功能"  />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="文件 合作 团队 团体" />


<meta name="viewport" content="width=device-width, initial-scale=1" />


<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="keywords" content="文件 合作 团队 团体" />
<link rel="icon" href="/media/favicons/seatable-favicon.png">
<link rel="apple-touch-icon" href="/media/favicons/seatable-favicon.png">
<link rel="stylesheet" type="text/css" href="/media/css/dtable-font.css" />
<link rel="stylesheet" type="text/css" href="/media/css/seatable-ui.css?t=20240419" />
<link rel="stylesheet" type="text/css" href="/media/css/seatable-ui-extension.css?t=20240108" />
<link rel="stylesheet" type="text/css" href="/media/css/seahub_python.css?t=1398068110" />


<link rel="stylesheet" type="text/css" href="/custom-css/" />
</head>

<body>
    <div id="wrapper" class="zh-cn d-flex flex-column h100">
        <div id="header" class="d-flex">
            <a href="/" id="logo">
                <img src="/media/img/seatable-logo.png" title="表格库" alt="logo" width="" height="32" />
            </a>
            <span class="sf2-icon-menu side-nav-toggle hidden-md-up hide" title="侧边导航菜单" id="js-toggle-side-nav" aria-label="侧边导航菜单"></span>

            
             
            <div id="lang">
                <a href="#" id="lang-context" data-lang="zh-cn">简体�� <span class="dtable-font dtable-icon-drop-down"></span></a>
                <div id="lang-context-selector" class="sf-popover hide">
                    <ul class="sf-popover-con">
                        
                        <li><a href="/i18n/?lang=en">English</a></li>
                        
                        <li><a href="/i18n/?lang=zh-cn">简体中文</a></li>
                        
                        <li><a href="/i18n/?lang=zh-tw">繁體中文</a></li>
                        
                    </ul>
                </div>
            </div>
            
            
        </div>

        <div id="main" class="container-fluid w100 h100">
            
            <div class="row">
                <div id="main-panel" class="w100 ovhd">
                    
<div class="text-panel">
  <p>对不起你访问的页面不存在</p>
</div>

                </div>
            </div>
            
        </div>

        

        <div id="confirm-popup" class="hide">
            <div id="confirm-con"></div>
            <button id="confirm-yes">确定</button>
            <button class="simplemodal-close">取消</button>
        </div>
</div><!-- wrapper -->
<script type="text/javascript">
var SEAFILE_GLOBAL = {
    csrfCookieName: 'dtable_csrftoken'
};
var app = {
    ui : {
        currentDropdown: false,
        currentHighlightedItem: false,
        freezeItemHightlight: false
    }
}
</script>
<script type="text/javascript" src="/media/assets/scripts/lib/jquery-3.7.0.min.js" id="jquery"></script>
<script type="text/javascript">
function prepareAjaxErrorMsg(xhr) {
    var error_msg;
    if (xhr.responseText) {
        var parsed_resp = JSON.parse(xhr.responseText);
        // use `HTMLescape` for msgs which contain variable like 'path'
        error_msg = HTMLescape(parsed_resp.error ||
                parsed_resp.error_msg || parsed_resp.detail);
    } else {
        error_msg = gettext("Failed. Please check the network.");
    }
    return error_msg;
}
function ajaxErrorHandler(xhr, textStatus, errorThrown) {
    var error_msg = prepareAjaxErrorMsg(xhr);
    feedback(error_msg, 'error');
}

(function() {
    var lang_context = $('#lang-context'),
        lang_selector = $('#lang-context-selector');

    lang_context.parent().css({'position':'relative'});

    if ($('#header').is(':visible')) { // for login page
        lang_selector.css({
            'top': lang_context.position().top + lang_context.height() + 5,
            'right': 0
        });
    }

    var setLangSelectorMaxHeight = function() {
        if ($('#header').is(':visible')) { // for login page
            $('.sf-popover-con', lang_selector).css({
                'max-height': $(window).height() - lang_selector.offset().top - 12
            });
        }
    };
    $(window).on('resize', function() {
        if (lang_selector.is(':visible')) {
            setLangSelectorMaxHeight();
        }
    });

    lang_context.on('click', function() {
        lang_selector.toggleClass('hide');
        if (lang_selector.is(':visible')) {
            setLangSelectorMaxHeight();
        }
        return false;
    });

    $(document).on('click', function(e) {
        var element = e.target || e.srcElement;
        if (element.id != 'lang-context-selector' && element.id != 'lang-context') {
            lang_selector.addClass('hide');
        }
    });
})();


if ($('.side-nav').length) {
    $('#logo').addClass('hidden-sm-down');
    $('#js-toggle-side-nav').removeClass('hide');
}
$('#js-toggle-side-nav').on('click', function() {
    $('.side-nav').addClass('side-nav-shown');
    $('').modal({
        overlayClose: true,
        onClose: function() {
            $('.side-nav').removeClass('side-nav-shown');
            $.modal.close();
        }});
    $('#simplemodal-container').css({'display':'none'});
    return false;
});
$('.js-close-side-nav').on('click', function() {
    $('.side-nav').removeClass('side-nav-shown');
    return false;
});
</script>

</body>
</html>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions