J'ai écrit mon tout premier Web Twisted 10.1.0 Resource
et je cherche des commentaires, parce que je pense que cela ne suit pas exactement la meilleure pratique et peut contenir des bogues de débutants. La ressource répond à /?url=http://www.foo.baz/abc123
et s'appuie sur un service qui renvoie un dict
. Si quelque chose ne va pas (par exemple, url
non valide ou non existant, un 400
est renvoyé).Rédaction d'excellentes ressources web Twisted
Un commentaire? Quelque chose à fixer, pour améliorer
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
Essayez d'exécuter votre code avant de poster. Il y a des fautes de frappe par exemple, 'd.addCallback (_write)' -> 'd.addCallback (self._write, request)' – jfs
Je ne l'ai pas exécuté avant de poster juste parce que ma question concerne les meilleures pratiques/approches plutôt que l'exactitude du code. Quoi qu'il en soit, merci pour les heads-up! – phretor