4

우리는 Backbone.js 응용 프로그램을 만들고 있으며 python -m SimpleHTTPServer을 입력하여 HTTP 서버를 시작할 수 있다는 사실은 훌륭합니다.프로토 타이핑 : URL 라우팅이있는 가장 간단한 HTTP 서버 (Backbone.Router와 함께 사용)?

우리는 경로에 (예를 들어, localhost:8000/path/to/something) 우리 index.html에 우리가 HTML5 pushStateBackbone.Router을 테스트 할 수 있습니다 그래서 어떤 URL을 수있는 능력을 싶습니다.

그 중 가장 고통스러운 방법은 무엇입니까? 로 :

+0

BaseHTTPServer에 파이썬 기능 내장 사용'로컬 호스트/path_to_nowhere' 당신에게'nowhere' 이어질 것입니다. 그러나'localhost/path/somewhere_in_nowhere'는 당신을 당신이 원하는 곳 어디로나 이끌 수 있습니다. 모든 URL을 끝점 (대상 URL)으로 라우팅하려면 먼저 백본, 밑줄, jquery가 포함 된 페이지를로드해야합니까? 또한 엔드 포인트 url로 라우팅하는 라우터를 부트 스트랩해야합니다. – Deeptechtons

+0

내 질문에 대해 오해 한 것 같습니다. pushState 지원 백본 앱을 사용하는 경우 앱을 탐색하면서 URL이 'http : // localhost : 8000/some/path/in/my/app'로 변경됩니다. 그러나 SimpleHTTPServer를 사용하면이 시점에서 페이지를 새로 고치면 서버가 해당 URL에 대한 리소스를 가져 오려고하기 때문에 404가 표시됩니다. 나는 서버가 어떤 URL을'index.html'로 다시 라우팅 할 수있는 방법을 찾고있다. – Dan

답변

2

은 그냥이

import BaseHTTPServer 

class Handler(BaseHTTPServer.BaseHTTPRequestHandler): 
    def do_GET(self): 
     self.send_response(200) 
     self.send_header('Content-type', 'text/html') 
     self.end_headers() 
     self.wfile.write(open('index.html').read()) 

httpd = BaseHTTPServer.HTTPServer(('127.0.0.1', 8000), Handler) 
httpd.serve_forever() 
+0

당신이로드하고 싶은 파일이 있다면? – snapfractalpop

+0

@snapfractalpop 나는 당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 이것은'index.html'을 그대로 전송할 것입니다. – obmarg

+0

나는 당신이로드하고자하는 정적 자산에 대해 궁금 해서요. (그들에게 index.html을 제공하지 마십시오). 저의 가난한 말로 사과드립니다. – snapfractalpop

1
  1. 다운로드 (빠른 프로토 타이핑의 목적을 위해) 교체 '\ index.html을 C'또한 다음과 같은 파이썬 스크립트 (즉, 같은 always_index.py 또는 뭔가를 호출) 만들기 CherryPy

  2. 설치 당신이에서

    import cherrypy 
    
    class Root: 
        def __init__(self, content): 
         self.content = content 
    
        def default(self, *args): 
         return self.content 
        default.exposed = True 
    
    cherrypy.quickstart(Root(open('c:\index.html', 'r').read())) 
    
  3. 실행 python <path\to\always_index.py>
  4. 포인트 브라우저를 사용하려는 실제 파일의 경로3210 그리고 당신이 요청한 url과 상관없이, 당신은 항상 동일한 내용을 얻습니다.