Pergunta

Estou planejando uma API para meu próprio uso, em Python.Talvez algum dia eu o torne acessível gratuitamente, mas agora estou planejando usá-lo apenas no meu site de hobby.Neste estágio, preciso de alguns conselhos sobre como configurar as URLs para arquivos que recebem solicitações GET e POST.

Suponha que um dos meus arquivos se chame function_A.py e usado desta forma:

www.example.com/api/function_A.py?a=something&k=other+thing

Minha pergunta é: como configurar URLs 'bonitos' em uma API, da maneira que consome menos recursos?

Vejo que a maioria das APIs tem um formato de URL típico como http://www.example.com/api/read em vez de http://www.example.com/api/read.py

Minhas opções provavelmente estão limitadas a mod_rewrite v/s urls.py usando Django - ou existe outra opção mais simples?

Isso é para back-end/API e prefiro manter a sobrecarga no mínimo.Eu só quero lidar com 4 URLs dessa maneira e não quero que um regex ocorra toda vez que o URL for chamado.

Foi útil?

Solução

O MYYN está correto.Usar uma estrutura como Ruby on Rails ou Django é a maneira mais fácil de criar uma API RESTful.

No entanto, se não quiser usar um framework, você pode fazer a mesma coisa usando mod_rewrite no Apache.Na verdade, isso é precisamente o que a maioria dos frameworks/aplicativos executados no Apache fazem.

Por exemplo, o Wordpress usa um arquivo .htaccess como este:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Isso direciona todas as solicitações para index.php, onde podem ser analisadas e processadas.

Frameworks como RoR ou Django fazem praticamente a mesma coisa:todas as solicitações são redirecionadas para um único arquivo/classe/função.

Outras dicas

Meu palpite é que as APIs de serviço da web com URLs bonitos (também conhecidos como repouso) são construídos por meio de algum tipo de WebFramework (Werkzeug, Web.py, Django, Pylons, Cherrypy, Plain WSGI, ...).

O módulo ao qual você está se referindo cuida da correspondência/manuseio de URL para determinar a rota correta para uma solicitação.

A partir da documentação deste último:

As rotas abordam um problema interessante que surge com frequência no desenvolvimento da Web, como você mapeia os URLs das ações do seu aplicativo? Isto é, como você diz que isso deve ser acessado como /blog/2008/01/08, e /login deve fazer isso? Muitas estruturas da Web têm um sistema de despacho fixo; por exemplo, /A/B/C significa ler o arquivo C no diretório B, ou para chamar o método C de aula B no módulo A.B. Eles funcionam bem até que você precise refatorar seu código e perceber que a movimentação de um método altera seu URL público e invalida os favoritos dos usuários. Da mesma forma, se você deseja reorganizar seus URLs e transformar uma seção em uma subseção, precisará alterar seu código lógico cuidadosamente testado.

Sim, .htaccess é a maneira como você pode mapear de um URL bonito, externo, no Apache Server para algum URL sujo que sua plataforma de serviço aceita.

Algumas plataformas complexas também têm meios de produzir URLs mais agradáveis.

Não há mágica. Por acaso, você está usando um servidor da Web projetado com URLs baseados em arquivos em mente.

A maioria dos sites não se preocupa mais com os URLs baseados em arquivos e, em vez disso, faz seu próprio despacho. É isso que o Django faz, é o que o ASP.NET MVC faz.

O que você precisa procurar é mod_rewrite Para Apache. Ele permitirá que você mapeie URLs não baseados em arquivos para seus arquivos Python.

Como alternativa, consulte o uso de uma estrutura da web do Python que já faz isso. Web.py e Django são bonitos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top