Написание отличных веб-ресурсов - PullRequest
2 голосов
/ 26 ноября 2010

Я написал свою первую веб-страницу Twisted 10.1.0 Resource, и мне нужна обратная связь, потому что я чувствую, что это не совсем соответствует лучшей практике и может содержать ошибки новичков.

Ресурс отвечает на /?url=http://www.foo.baz/abc123 и полагается на сервис, который возвращает dict. Если что-то идет не так (например, недействительно или не существует url, то возвращается 400).

Есть комментарии? Что-нибудь, чтобы исправить, улучшить

class ProcessedUrl(resource.Resource):
    isLeaf = True

    def __init__(self, service):
        resource.Resource.__init__(self)
        self.service = service

    def _cancel(self, err, deferred):
        deferred.cancel()

    def _write(self, value, request):
        request.setResponseCode(http.OK)
        request.write(json.dumps(value))
        request.finish()

    def _cleanUrl(self, url):
        return cleanUrl(url)

    def _checkUrl(self, url):
        if url is not None:
            if isValidUrl(url):
                return True
        return False

    def render_GET(self, request):
        request.setResponseCode(http.BAD_REQUEST)
        url = request.args.get('url', [None])[0]

        if self._checkUrl(url):
            url = self._cleanUrl(url)
            d = self.service.processUrl(url)
            request.notifyFinish().addErrback(self._cancel, d)
            d.addCallback(_write)
            d.addErrback(log.err)
        else:
            return 'Invalid or no URL.'
        return server.NOT_DONE_YET

    def getChild(self, name, request):
        return self

1 Ответ

3 голосов
/ 27 ноября 2010

I думаю вам не нужно явно переопределять getChild(), если вы установите isLeaf=True

...