APIs e Microsserviços

6 fev, 2013

Exposição simples de APIs Python via REST-ful – Parte 02

Publicidade

Na primeira parte, uma base de implementação CherryPy muito desinteressante era tudo o que tínhamos, mas agora é hora de conectar algo real! Em vez de criar uma API de mock para trabalhar contra como código de exemplo, eu decidi usar hgapi para acessar o próprio pyrestrepo como exemplo de implementação.

Decidi conectar a API antes de refatorar o código para separar o framework web a partir de pyRest, já que eu realmente acredito em fazer as coisas funcionarem primeiro e limpar tudo depois. Eu criei um namedtuple para manter os valores de resposta básicos para que a função requesthandler pudesse ser extraída posteriormente.

A parte “interessante” é assim:

Response = namedtuple('response', 'status content')
def requesthandler(method, *pathargs, **kwargs):
    """Main dispatch for calls to PyRest; no framework specific
    code to be present after this point"""
    if not method == 'get':
        return Response('500 Server Error', 'Not implemented')
    repo = hgapi.Repo('.')
    return Response('200 Ok', repo.hg_id())

… não é muito ainda, mas ele responde a qualquer pedido GET com o ID do node Mercurial atual.

Minha intenção é que o resultado final seja três partes distintas – uma parte específica de roteamento/domínio que usa hgapi, pyRest adequado que lida com as solicitações e autohooks até o encaminhamento; uma parte CherryPy que se integra com CherryPy e precisará ser reimplementado para cada framework web suportado.

Porém, terá pelo menos uma atualização antes disso porque o próximo será a lógica de roteamento “vinculação automática”. O código para o projeto está disponível em Bitbucket.

***

Texto original disponível em http://blaag.haard.se/pyRest-part-2–Hooking-the-API/