Rotas e Routing
Definindo Rotas
O Velox usa decoradores para definir rotas:
from velox import Velox
app = Velox(__name__)
@app.get('/')
def index(req, res):
res.text('Olá mundo!')
@app.post('/api/data')
def create_data(req, res):
res.json({'status': 'ok'})
Métodos HTTP Suportados
@app.get('/path') # GET
@app.post('/path') # POST
@app.put('/path') # PUT
@app.delete('/path') # DELETE
@app.patch('/path') # PATCH
Parâmetros de Rota
Capture segmentos da URL:
@app.get('/user/<int:user_id>')
def get_user(req, res, user_id):
res.json({'id': user_id})
Converters Disponíveis
Múltiplos Métodos
@app.route('/resource', methods=['GET', 'POST'])
def resource_handler(req, res):
if req.method == 'GET':
res.json({})
else:
res.json({'created': True})
Resource (Classe)
Use uma classe para múltiplos métodos:
@app.resource('/api/posts')
class PostResource:
def get(req, res):
res.json({'posts': []})
return res
def post(req, res):
data = req.json
res.json({'created': True})
return res
def put(req, res):
res.json({'updated': True})
return res
def delete(req, res):
res.json({'deleted': True})
return res
Blueprints
Organize rotas com Blueprints:
from velox import Velox, Router
app = Velox(__name__)
# Criar Blueprint
api = Router()
@api.get('/users')
def list_users(req, res):
res.json([])
@api.get('/users/<int:user_id>')
def get_user(req, res, user_id):
res.json({'id': user_id})
# Registrar com prefixo
app.include(api, prefix='/api')
Agora as rotas são /api/users e /api/users/<id>.
Próximos Passos
Leia named_routes para rotas nomeadas
Explore Banco de Dados para banco de dados