@@ -35,14 +35,6 @@ func carregaPagina(titulo string) (*Pagina, error) {
35
35
return & Pagina {Titulo : titulo , Corpo : corpo }, nil
36
36
}
37
37
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
-
46
38
// viewHandler r o titulo e corpo da pagina em html formatado
47
39
func viewHandler (escrever http.ResponseWriter , ler * http.Request ) {
48
40
titulo := ler .URL .Path [len ("/view/" ):]
@@ -64,9 +56,30 @@ func editHandler(escrever http.ResponseWriter, ler *http.Request) {
64
56
renderizaTemplate (escrever , "edit" , pagina )
65
57
}
66
58
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
+
67
74
func main () {
68
75
http .HandleFunc ("/view/" , viewHandler )
69
76
http .HandleFunc ("/edit/" , editHandler )
70
- // http.HandleFunc("/save/", saveHandler)
77
+ http .HandleFunc ("/save/" , saveHandler )
71
78
log .Fatal (http .ListenAndServe (":8080" , nil ))
72
79
}
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