[SP-pm] mod_perl, serviços, etc

Eden Cardim edencardim at gmail.com
Sat Jan 8 06:13:16 PST 2011


>>>>> "Prof" == Prof Benedito A Cruz <bene em cria.org.br> writes:
    Prof>   As URLs são da forma
    Prof>   http://servidor.com.br/perl/services?nomedafuncao[parametro]{modificadores}. Por
    Prof>   exemplo:

    Prof> http://servidor.com.br/perl/services?getImageByIdAsGif[XPTO1003]{Large}
    Prof> --> devolve uma imagem

    Prof>   Pode ter mais de um parametro ou mais de um modificador
    Prof>   assim:

    Prof> http://servidor.com.br/perl/services?getInfoOnImagesByUsersAsXML[XM0102,PT30303,PO222]{joe,alice}
    Prof> --> retorna um XML

    Prof>   Na verdade no total tem mais de 30 serviços diferentes,
    Prof>   todos nesse esquema. Já está funcionando tudo mas ainda
    Prof>   tenho duas dúvidas:

    Prof> 1) seria possível que o script services ficasse no dir html e
    Prof> o apache soubesse que ele deve ser executado como mod-perl?

Me parece que você está querendo executar um script feito para CGI
através do mod_perl. Apesar de funcionar, é uma gambiarra tremenda e
não-recomendável, a não ser que você esteja mantendo um sistema legado.

    Prof> 2)pensei em fazer tudo isso aí num esquema REST ou RDF mas não
    Prof> sei se tem pacotes bons para isso ou se eu teria que mexer a
    Prof> beça com mod_rewrite? Sei que deve envolver reescrita de tudo
    Prof> mas eu só queria saber se seria possível e qual a dificuldade.

Esse é o caso para você usar REST, observa como suas urls estão
re-implementando a semântica de recurso que já existe no protocolo
http. Com REST as requisições ficariam mais ou menos assim:

curl -X GET -H 'Content-Type: image/png' http://servidor.com.br/services/image/XPTO1003?size=large
--> responde com uma imagem png
curl -X GET -H 'Content-Type: image/svg+xml' http://servidor.com.br/services/image/XPTO1003?size=large
--> responde com uma imagem SVG

curl -X GET -H 'Content-Type: text/xml' http://servidor.com.br/services/image/XPTO1003?user=joe
--> responde com xml
curl -X GET -H 'Content-Type: text/yml' http://servidor.com.br/services/image/XPTO1003?user=joe
--> responde com yaml

A vantagem é que qualquer cliente HTTP (libcurl, wget, lynx, jquery,
etc.)  vai servir para consultar teu serviço programaticamente. Se você
criar uma semântica própria, vai ter que implementar um cliente
específico que compreenda essa semântica (receber os parâmetros, montar
as urls, etc.).

É trivial de fazer com Catalyst:
http://www.catalystframework.org/calendar/2006/9
http://www.catalystframework.org/calendar/2009/19


-- 
Eden Cardim
Software Engineer
+55 73 9986-3963
edencardim.com


More information about the SaoPaulo-pm mailing list