Skip to content

Commit 3b9f8b2

Browse files
salvando paginas
1 parent 1d671ea commit 3b9f8b2

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

vapordev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Olá mundo

wiki.go

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,6 @@ func carregaPagina(titulo string) (*Pagina, error) {
3535
return &Pagina{Titulo: titulo, Corpo: corpo}, nil
3636
}
3737

38-
// E se você visitar /view/umaPaginaQueNaoExiste ?
39-
// Você verá uma página contendo HTML. Isso ocorre porque ele ignora o valor de retorno do
40-
// erro e continua tentando preencher o template sem dados. Em vez disso, se a página solicitada não existir,
41-
// ele deve redirecionar o cliente para a página de edição para que o conteúdo possa ser criado:
42-
43-
// A função http.Redirect adiciona um código de status HTTP de http.StatusFound (302) e um Location
44-
// header à resposta HTTP.
45-
4638
// viewHandler r o titulo e corpo da pagina em html formatado
4739
func viewHandler(escrever http.ResponseWriter, ler *http.Request) {
4840
titulo := ler.URL.Path[len("/view/"):]
@@ -64,9 +56,30 @@ func editHandler(escrever http.ResponseWriter, ler *http.Request) {
6456
renderizaTemplate(escrever, "edit", pagina)
6557
}
6658

59+
// O título da página (fornecido no URL) e campo do formulário, body são armazenados em uma nova Pagina.
60+
// O método salvar() é então chamado para gravar os dados em um arquivo e o cliente é
61+
// redirecionado para a /view/. O valor retornado por FormValue é do tipo string.
62+
// Devemos converter esse valor para []byte antes que ele caiba na struct Pagina. Usamos []byte(corpo)
63+
// para realizar a conversão.
64+
65+
// A função saveHandler tratará do envio de formulários localizados nas páginas de edição
66+
func saveHandler(escrever http.ResponseWriter, ler *http.Request) {
67+
titulo := ler.URL.Path[len("/save/"):]
68+
corpo := ler.FormValue("body")
69+
pagina := &Pagina{Titulo: titulo, Corpo: []byte(corpo)}
70+
pagina.salvar()
71+
http.Redirect(escrever, ler, "/view/"+titulo, http.StatusFound)
72+
}
73+
6774
func main() {
6875
http.HandleFunc("/view/", viewHandler)
6976
http.HandleFunc("/edit/", editHandler)
70-
// http.HandleFunc("/save/", saveHandler)
77+
http.HandleFunc("/save/", saveHandler)
7178
log.Fatal(http.ListenAndServe(":8080", nil))
7279
}
80+
81+
// para testar basta executar buildar o código novamente, executar ./wiki e abrir o browser na porta 8080
82+
83+
// O path em view e em seguida adicione um caminho que não esxiste, assim: http://localhost:8080/view/vapordev
84+
// Seremos redirecionados para a pagina de Editando vapordev e quando salvar o conteudo da pagina estará
85+
// em um arquivo .txt com o titulo tendo o nome do path e o conteudo com o corpo da edição.

0 commit comments

Comments
 (0)