diff --git a/material-sistemas-distribuidos/src/assets/img/37_vsc_debugging.png b/material-sistemas-distribuidos/src/assets/img/37_vsc_debugging.png new file mode 100644 index 0000000..a1f227f Binary files /dev/null and b/material-sistemas-distribuidos/src/assets/img/37_vsc_debugging.png differ diff --git a/material-sistemas-distribuidos/src/assets/img/38_browser_home_empty.png b/material-sistemas-distribuidos/src/assets/img/38_browser_home_empty.png new file mode 100644 index 0000000..28038b9 Binary files /dev/null and b/material-sistemas-distribuidos/src/assets/img/38_browser_home_empty.png differ diff --git a/material-sistemas-distribuidos/src/assets/img/39_browser_nao_conseguiu_conectar.png b/material-sistemas-distribuidos/src/assets/img/39_browser_nao_conseguiu_conectar.png new file mode 100644 index 0000000..704fd66 Binary files /dev/null and b/material-sistemas-distribuidos/src/assets/img/39_browser_nao_conseguiu_conectar.png differ diff --git a/material-sistemas-distribuidos/src/assets/img/40_browser_porta_errada.png b/material-sistemas-distribuidos/src/assets/img/40_browser_porta_errada.png new file mode 100644 index 0000000..6829f82 Binary files /dev/null and b/material-sistemas-distribuidos/src/assets/img/40_browser_porta_errada.png differ diff --git a/material-sistemas-distribuidos/src/assets/img/41_browser_hello_world.png b/material-sistemas-distribuidos/src/assets/img/41_browser_hello_world.png new file mode 100644 index 0000000..16c7111 Binary files /dev/null and b/material-sistemas-distribuidos/src/assets/img/41_browser_hello_world.png differ diff --git a/material-sistemas-distribuidos/src/assets/img/42_browser_konnichiwa.png b/material-sistemas-distribuidos/src/assets/img/42_browser_konnichiwa.png new file mode 100644 index 0000000..f6fc4fd Binary files /dev/null and b/material-sistemas-distribuidos/src/assets/img/42_browser_konnichiwa.png differ diff --git a/material-sistemas-distribuidos/src/css/img.css b/material-sistemas-distribuidos/src/css/img.css index de91d93..2151693 100644 --- a/material-sistemas-distribuidos/src/css/img.css +++ b/material-sistemas-distribuidos/src/css/img.css @@ -1,3 +1,5 @@ img { max-width: 100%; + margin: 0 auto; + display: block; } \ No newline at end of file diff --git a/material-sistemas-distribuidos/src/routes/endpoints/+page.svelte b/material-sistemas-distribuidos/src/routes/endpoints/+page.svelte index 7449e99..f2b7223 100644 --- a/material-sistemas-distribuidos/src/routes/endpoints/+page.svelte +++ b/material-sistemas-distribuidos/src/routes/endpoints/+page.svelte @@ -1 +1,153 @@ -

em desenvolvimento

\ No newline at end of file + + +
+

Criando e executando endpoints

+ + + +

+ Enfim, vamos escrever nossos primeiros endpoints. +

+ +

+ Durante este capitulo, vamos trabalhar somente em Biblioteca/Program.cs. Nosso objetivo por enquanto é escrever um endpoint customizado, e testar se ele + responde corretamente, da forma como desejamos. +

+ +
+

Iniciando o serviço Web

+ +

+ Para começar, abra Biblioteca/Program.cs, e apague todas as linhas deste arquivo. Vamos escrever manualmente todas as linhas necessárias para iniciar a API e configurar um enpdoint de teste. +

+ +
{`var builder = WebApplication.CreateBuilder(args);
+
+  var app = builder.Build();
+
+  app.Run();`}
+ +

+ Escreva, estas linhas no seu Program.cs. Estas são as chamadas de função essenciais para que a sua aplicação aja como uma API Web. + Nenhuma outra configuração adicional foi realizada, nem nenhum endpoint foi definido. Sua aplicação neste momento apenas inicia e escuta requisições em uma porta (definida em launchSettings.json). +

+ +
+ +
+ +

+ Tente executar o projeto através do depurador. Você deve se lembrar do arquivo launchSettings.json que vimos no capítulo anterior. Nele é configurado + a porta em que nossa aplicação escutará as requisições no protocolo HTTP, definido em uma configuração semelhante a http://localhost:<numero> (por exemplo, http://localhost:5000). + Este número após o sinal de dois-pontos é a porta que sua aplicação estará escutando. +

+ +

+ Abra uma nova aba no seu navegador de internet, e, na barra de endereço, escreva http://localhost:<porta>, onde <porta> é o número que está definido no seu launchSettings.json (no meu caso, este número é 5000, portanto o endereço que + eu devo digitar é http://localhost:5000. Você pode alterar o seu launchSettings.json para que a sua porta também seja 5000, ou qualquer outro número que desejar). Se tudo der certo - ou seja, sua aplicação está sendo executada, e a porta que você escreveu no navegador é a correta - + você verá uma janela vazia. Isto significa que o navegador conseguiu acessar o endereço que você escreveu, só que, como não definimos nenhum endpoint, nossa aplicação não devolveu nada para o navegador, por isso a janela vazia. +

+ +
+ +
+ +

+ Se você não está executando o projeto, ou escreveu a porta errada, você provavelmente verá uma mensagem no navegador semelhante a esta: +

+ +
+ +
+ +

+ Ou esta, onde digitei uma porta aleatória: +

+ +
+ +
+
+ +
+

Criando o primeiro endpoint

+ +

+ Se você conseguiu executar o projeto, acessar o seu endereço via navegador, e ver uma aba vazia, então tudo está pronto para que possamos criar nosso primeiro endpoint. +

+ +

+ Vamos escrever um de teste, apenas. Modifique o seu Program.cs para que ele fique desta forma: +

+ +
{`var builder = WebApplication.CreateBuilder(args);
+
+var app = builder.Build();
+
+app.MapGet("/", () =>
+{
+    return "Olá, mundo!";
+});
+
+app.Run();`}
+ +

+ Note que adicionamos o seguinte trecho de código: +

+ +
{`app.MapGet("/", () =>
+{
+    return "Olá, mundo!";
+});`}
+ +

+ app é uma referência a sua aplicação. Neste objeto podemos realizar várias configurações, além de adicionar quais os endpoints nossa API irá reponder. Neste caso, adicionamos um endpoint + através do método MapGet(string, Delegate), que fará com que ele responda ao verbo GET no caminho / (ou seja, a raíz), com uma mensagem simples. +

+ +

+ Acesse a URL da sua aplicação no navegador novamente, como fizemos anteriormente (no meu caso, http://localhost:5000). Você deverá ver a mensagem que você escreveu. +

+ +
+ +
+ +

+ Vamos fazer nosso endpoint ficar um pouco mais inteligente. Copie o seguinte trecho de código e altere o seu endpoint: +

+ +
{`app.MapGet("/", () =>
+{
+    string[] saudacoes = ["Olá!", "こんにちは", "Привет", "Ողջույն"];
+
+    return saudacoes[Random.Shared.Next(saudacoes.Length)];
+});`}
+ +

+ Agora, o endpoint irá obter uma mensagem de saudação aleatória a cada vez que você fizer uma nova requisição. Experimente atualizar a página com o endereço da sua aplicação algumas vezes. +

+ +
+ +
+ +

+ O que fizemos até agora foi criar um endpoint na nossa aplicação utilizando a notação MapGet, que faz parte das APIs de Minimal APIs do dotnet. +

+ +

+ No próximo capítulo, vamos começar a definir os endpoints do escopo que definimos para desenvolver a aplicação da biblioteca. +

+
+ +
\ No newline at end of file