Python HTTPserver 错误 501:不支持的方法“DELETE”

问题描述

我正在尝试解决这个例子,但我很难解决我得到的错误。这里是最完整的: 错误响应。错误代码:501。消息:不支持方法('DELETE')。错误代码解释:HTTPStatusNOT_IMPLEMENTED - 服务器不支持此操作。下面是服务器文件代码

from http.server import HTTPServer,BaseHTTPRequestHandler
from urllib.parse import parse_qs
names_dict = {'john': 'smith','david': 'jones','michael': 'johnson','chris': 'lee','vinicius': 'jad'}


class RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.log_message("Incoming GET request...")
        try:
            name = parse_qs(self.path[2:])['name'][0]
        except:
            self.send_response_to_client(404,'Incorrect parameters provided')
            self.log_message("Incorrect parameters provided")
            return

        if name in names_dict.keys():
            self.send_response_to_client(200,names_dict[name])
        else:
            self.send_response_to_client(404,'Name not found')
            self.log_message("Name not found")

    def do_POST(self):
        self.log_message('Incoming POST request...')
        data = parse_qs(self.path[2:])
        try:
            names_dict[data['name'][0]] = data['last_name'][0]
            self.send_response_to_client(200,names_dict)
        except KeyError:
            self.send_response_to_client(404,'Incorrect parameters provided')
            self.log_message("Incorrect parameters provided")

    def do_DELETE(self):
        self.log_message("Incoming DELETE request...")
        name = parse_qs(self.path[2:])
        try:
            if name in names_dict.keys():
                del names_dict[name['name']]
                self.send_response_to_client(200,names_dict[name])
            else:
                self.send_response_to_client(404,'Name not found')
                self.log_message("Name not found")
        except:
            self.send_response_to_client(404,'Incorrect parameters provided')
            self.log_message("Incorrect parameters provided")
            return

    def send_response_to_client(self,status_code,data):
        self.send_response(status_code)
        self.send_header('Content-type','text/plain')
        self.end_headers()

        self.wfile.write(str(data).encode())


server_address = ('127.0.0.1',8080)
http_server = HTTPServer(server_address,RequestHandler)
http_server.serve_forever()

下面是客户端文件代码

import requests
r = requests.get("http://127.0.0.1:8080/",params={"name": 'michael'})
print("Request method: GET,\
    Response status_code: {},Response data: {}".format(r.status_code,r.text))
r = requests.post("http://127.0.0.1:8080/",params={'name': 'peter','last_name': 'peterson'})
print("Request method: POST,r.text))

r = requests.delete("http://127.0.0.1:8080/",params={'name': 'vinicius'})
print("Request method: DELETE,r.text))

DELETE 函数的目的是从字典中删除给定的名字。关于如何解决这个问题的任何想法?干杯

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...