Organização de código para API Rest

371 views
Skip to first unread message

Neto Marin

unread,
May 12, 2015, 5:57:14 PM5/12/15
to golang...@googlegroups.com
Olá pessoal,

Talvez seja uma pergunta mto noob, mas procurei em alguns sites e blogs e não tive uma resposta que satisfez.

Tenho um projeto de uma API, e aí pensei em fazer algo assim:

projeto/
    web.go - pkg main com a configuração do router (estou usando Gorilla)
    resource1/
      resource1.go - arquivo da API REST para esse resource (http://domain/resource1)
    resource2/
      resource2.go - arquivo da API REST para esse resource (http://domain/resource2)
    (e assim por diante)

Essa abordagem está correta?
Nos arquivos de resource, coloquei como package netomarin.com.br/projeto/resource1

E no web.go, que fica na raiz, adicionei ao import "netomarin.com.br/projeto/resource1"

Mas se tento dar go build netomarin.com.br/projeto/resource1 diz que não foi possível encontrar o pacote.

Estou tentando organizar de uma forma melhor o código do projeto, pois pode haver vários resources nessa API e não me pareceu certo deixar todos os arquivos no mesmo diretório.

Agradeço qualquer caminho :)

[]s
Neto

Joelson Gai

unread,
May 12, 2015, 7:23:34 PM5/12/15
to golang...@googlegroups.com
Da uma olhada para ver se ajuda a tirar a sua divida.

http://www.golangbr.org/doc/codigo


Você tem que ter a pasta netomarin.com.br dentro do src no seu GOPATH (pasta de projetos do go). ficaria assim.

GOPATH/src/netoamorin.com.br/projeto/resource1/

O go procura dentro do seu GOPATH na pasta src pelos sources. Quando você faz um go get github.com/gorilla/mux por exemplo, ele acha o import do "github.com/gorilla/mux" porque a pasta github.com/.../.. foi criada dento do src do seu GOPATH pelo go get.....


      Joelson
        Líder de Desenvolvimento e Infraestrutura.

     

--

---
Você recebeu essa mensagem porque está inscrito no grupo "Golang Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para golang-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Neto Marin

unread,
May 12, 2015, 8:37:22 PM5/12/15
to golang...@googlegroups.com

Olá Joelson,

Obrigado, esse foi um dos documentos que li, é que como estou desenvolvendo pra um PaS, eu não tinha colocado no GOPATH, vou mudar a abordagem.

E sobre fazer a "quebra" de cada resource da API REST como um pacote, é uma prática comum?
Como venho do "mundo Java", isso na parece o correto, uma forma de deixar o código mais organizado.

Mas tem hora q tenho a impressão q para o Go, o pacote seria algo mais como uma biblioteca.

Abraços

Herbert Fischer

unread,
May 12, 2015, 9:19:09 PM5/12/15
to golang...@googlegroups.com
Neto,

Recomendo começar tudo no package `main`, separando em arquivos.Ex.: main.go, resource1.go, resource2.go, etc. Quando seu projeto amadurecer mais, você irá achar os melhores critérios para agrupar código em packages.

É comum ficarmos meio perdidos em começar projetos assim em Go, pois a stdlib não sugere nada como os frameworks MVC. Alias, você também pode organizar seu código como um MVC, substituindo alguns conceitos. Ex.: `model`, `view`, `handler`, `service`, etc.

[]s

Neto Marin

unread,
May 12, 2015, 9:29:53 PM5/12/15
to golang...@googlegroups.com

Legal Herbert, valeu pela dica.
No caso de separar só por arquivo, por serem na mesma package, preciso fazer algum import?

Valeu
Abraços

Joelson Gai

unread,
May 13, 2015, 12:00:00 AM5/13/15
to golang...@googlegroups.com

Legal Herbert, valeu pela dica.
No caso de separar só por arquivo, por serem na mesma package, preciso fazer algum import?

Não precisa, estando na mesma pasta e só declarar o que você quer.
 

Obrigado, esse foi um dos documentos que li, é que como estou desenvolvendo pra um PaS, eu não tinha colocado no GOPATH, vou mudar a abordagem.

E sobre fazer a "quebra" de cada resource da API REST como um pacote, é uma prática comum?

Sou iniciante também, e pelo que vi, o pessoal organiza cada arquivo numa funcionalidade dentro do projeto mesmo (pasta).
 

Como venho do "mundo Java", isso na parece o correto, uma forma de deixar o código mais organizado.

Mas tem hora q tenho a impressão q para o Go, o pacote seria algo mais como uma biblioteca.

Acredito que seja por ai, seria algo como os ".jar" do Java. (mas posso estar errado)


Bruno Albuquerque

unread,
May 13, 2015, 7:28:09 AM5/13/15
to golang...@googlegroups.com
Via de regra, se um "módulo" possui mais de um arquivo, recomendo que você o mova pra um package separado. Caso contrário, colocar todos os módulos no mesmo package (mas em arquivos diferentes) é o mais comum. 
Reply all
Reply to author
Forward
0 new messages