2016-05-11 3 views
0

Я не программист на Python, но я использовал SimpleHTTPServer, так как так просто запустить веб-сервер, обслуживающий одну папку.SimpleHTTPServer добавляет несколько обработчиков

Теперь мне нужно обслуживать файл json. У меня есть следующий питон:

обновление: Следует отметить, что файл должен обслуживаться с другого маршрута. Это то, что мне нужна папка «localhost», в которой содержится index.html и папка, обслуживающая json-файл.

import BaseHTTPServer, SimpleHTTPServer 
import ssl 

httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.update: I should mention that the) 
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='Certificates.pem', server_side=True) 
httpd.serve_forever() 

Я знаю, что мне нужно добавить еще один обработчик обслуживающего файл, но как вы можете иметь несколько обработчиков.

Требование для обслуживания файла является:
1. Он должен быть отправлен с заголовком «приложения/pkcs7-мим»
2. Он должен возвращать код 200 HTTP

Вопрос заключается в том, как серверных обработчиков. Заранее спасибо. С уважением

+0

Я рекомендую использовать флягу, это, вероятно, проще в использовании. –

ответ

1

Вам не нужно несколько обработчиков. использует расширение файла, чтобы угадать соответствующий тип mime для заголовка Content-type. Так что если вы называете ваши JSon файлы с расширением .p7m, будет использоваться

В этом случае расширение .p7m сопоставляется application/pkcs7-mime

нужный тип мим.

Если это не представляется возможным, то вы можете изменить SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map и добавить свои собственные расширения для отображения на application/pkcs7-mime:

import BaseHTTPServer, SimpleHTTPServer 
import ssl 

SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map['.my_ext'] = 'application/pkcs7-mime' 
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler) 
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='Certificates.pem', server_side=True) 
httpd.serve_forever() 

Теперь файлы с расширением .my_ext будут обслуживаться с требуемым типом пантомимы.

Если это не сработает для вас, вы можете подкласса SimpleHTTPServer.SimpleHTTPRequestHandler и переопределить его метод guess_type(), чтобы добавить собственный способ определения типа mime, возможно, путем проверки содержимого файла.

0

Вы можете использовать функцию символической ссылки вашей операционной системы, чтобы связать как файл index.html, так и файл JSON в один каталог.

В системе Unix, это выглядит следующим образом:

$ ln -s /path/to/index.html 

$ ln -s /another/path/to/file.json 

$ ls 
file.json index.html 

$ python /your/script.py 
Смежные вопросы