【问题标题】:Getting HTTP 501 Not Implemented when there is definitely an implementation?当确定有实现时获得 HTTP 501 Not Implemented?
【发布时间】:2019-11-06 20:19:58
【问题描述】:

我正在尝试创建一个简单的 http 服务,到目前为止,我已经让 GET 和 POST 正常工作。出于某种原因,尽管每次我尝试发送 PUT 时,我的 restbed 服务器都会返回 501,即使我为 PUT 设置了方法处理程序。

PUT、POST 和 GET 方法的设置方式完全相同,通过 resource->set_method_handler("METHOD", METHOD_method_handler);

处理程序/设置

void put_method_handler(const std::shared_ptr<restbed::Session>& session) {
  const auto request = session->get_request();

  std::cout << "yes\n";
}

int main() {
  auto resource = std::make_shared<restbed::Resource>();
  resource->set_path("/resource");
  resource->set_method_handler("PUT", put_method_handler);

  // bla bla service.publish() etc
}

目前通过 chrome 控制台使用简单的 javascript FETCH 来查看它是否正在接收任何内容。

fetch("http://localhost:1234/resource", {method: 'PUT', body: {}})

我的服务器应该打印 cout 语句,但它是静默的,fetch 返回 501。

【问题讨论】:

    标签: javascript c++ http restbed


    【解决方案1】:

    我刚刚检查了how restbed developers test put method..下面是代码sn-p:

    void put_handler( const shared_ptr< Session > session )
    {
        session->close( 200, "Hello, World!", { { "Content-Length", "13" }, { "Connection", "close" } } );
    }
    
    SCENARIO( "publishing single path resources", "[resource]" )
    {
        auto resource = make_shared< Resource >( );
        resource->set_path( "/resources/1" );
        resource->set_method_handler( "PUT", put_handler );
        ...
    }
    

    我的猜测是您没有在 put 处理程序中返回成功代码,因此服务器认为返回的非显式代码意味着该方法未实现。

    【讨论】:

    • restbed 似乎不在乎您是否不返回响应代码。当我开始使用 GET 方法时,我从来没有回应过任何事情,这很好。真正的问题是put_method_handler 中的所有代码都没有运行。
    • 我明天试试。如果它有效,我会回到这里并标记它,但我非常怀疑它会不会。
    • 是的,请检查并返回结果。根据 HTTP 规范,GET 请求不得返回 501 错误 (developer.mozilla.org/en-US/docs/Web/HTTP/Status/501)。可能这就是为什么 GET 在 restbed 中以某种特殊方式处理的原因..
    • 嘿,对不起,我真的迟到了……问题最终是我们的休息床实现已经坏了。不知道原因,但删除它并重新下载有效。
    【解决方案2】:

    问题最终是我们的休息床实施已损坏。不知道是什么原因,但删除它并重新下载是可行的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 2018-11-03
      相关资源
      最近更新 更多