Earlier today, I released fb2cal, a backend web service that lets users view their Facebook friends’ birthdays right from a native calendaring client. Coming from a desktop development background, writing a web app on top of App Engine was a new experience for me. Some points to take away:
- Extend templates to reuse large parts of common HTML code; think inheritance
- Leverage the memcache when making large data store queries or performing network requests
- To serve parts of a web app using HTTPS, add
secure: always
to the script handler inapp.yaml
And lastly, to handle basic authentication in a subclass of RequestHandler
:
auth = self.request.headers.get('Authorization')
if not auth:
self.response.set_status(401, message="Authorization Required")
self.response.headers['WWW-Authenticate'] = 'Basic realm="Secure Area"'
return None
parts = auth.split(' ')
username_pass = base64.b64decode(parts[1]).split(':')
username = username_pass[0]
password = username_pass[1]
# validate username and password...
Overall, I was extremely pleased with how fast, easy and inexpensive it is to host a fully-functional web app on App Engine.