当肯定有实现时获取 HTTP 501 Not Implemented?

Getting HTTP 501 Not Implemented when there is definitely an implementation?

我正在尝试创建一个简单的 http 服务,目前我已经使用 GET 和 POST。出于某种原因,尽管每次我尝试发送 PUT 时,我的休息床服务器 returns 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 returns 501.

我刚刚检查了 how restbed developers test put method.. 以下是代码片段:

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 处理程序中返回成功代码,因此服务器认为未返回显式代码意味着该方法未实现。

问题最终是我们的休息床实施出现问题。不知道是什么原因,但删除它并重新下载有效。