当肯定有实现时获取 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 处理程序中返回成功代码,因此服务器认为未返回显式代码意味着该方法未实现。
问题最终是我们的休息床实施出现问题。不知道是什么原因,但删除它并重新下载有效。
我正在尝试创建一个简单的 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 处理程序中返回成功代码,因此服务器认为未返回显式代码意味着该方法未实现。
问题最终是我们的休息床实施出现问题。不知道是什么原因,但删除它并重新下载有效。