Transcrições
1. Introdução: Bem-vindo a este curso emocionante é alimentar dotnet Core API e um blazer não era e desenvolvimento de servidor. Sim, isso mesmo. Você vai estar olhando para como desenvolver uma API usando uma velocidade em um núcleo. E você estará explorando Hall para construir um aplicativo cliente usando blazer. E nós olhamos tanto para o WebAssembly ou não foi curto
e para as distribuições de servidor desta tecnologia laser. Meu nome é problema ou Williams e eu temos mais de 10 anos de experiência como engenheiro de software e professor. E posso garantir-lhes, vou tornar todo o conteúdo muito amigável e vamos nos divertir muito neste curso. Meus objetivos para você neste curso é ter você totalmente funcional. Como um desenvolvedor de software, você deve ser capaz de construir uma API web totalmente orientada a dados e um aplicativo cliente blazer, se no lado do servidor são o WebAssembly disse, você deve ser pelo menos confortável e proficiente o suficiente para apreciar por que você faria um e não o outro. Também veremos alguns padrões de design no nome do padrão de repositório. E olhando para a injeção de dependência, vamos começar a entender como JSON Web Tokens ou JWT para resumir, autenticação no fluxo de trabalho funciona, estaremos olhando para consumir APIs de descanso e configurar autenticação personalizada no blazer. E no final eu serei alto. Também veremos como podemos implantar nossas aplicações de API e cliente na internet para uso geral. Algumas tecnologias que estaremos explorando através do ASP.net Core, vamos olhar para Entity Framework Core API e autenticação JWT, mapeador
automático, hospedagem API,
teste, controle de código-fonte e até mesmo registro em log. Estou a dizer-te que este curso está cheio de conteúdo. Então, com tudo o que disse, estou animado com este curso. Espero que também estejas, e vejo-te em breve.
2. Instale o Visual Studio 2019 Edição de comunidade: Ei, pessoal, neste vídeo estará instalando o Visual Studio 2019 Community Edition Agora para chegar ao site do Visual Studio, nós digitamos o visual studio dot Microsoft dot com Photo Não pareça estúdio bizarro, e nós quer obter a edição comunitária. Então temos profissionais e temos empreendimento. Mas na edição da comunidade é gratuito para indivíduos em usuários acadêmicos no ditz. Também aberto, senhor. Então, mais uma vez ,
hum, se você está em uma sessão interimprensa, você deve obter uma empresa e você tem que pagar uma licença para isso. Mas, em seguida, para o nosso projeto animal de estimação, um projeto individual ou projetos acadêmicos propósitos open source, comunidades lá é gratuito e é totalmente alimentado e esperando para ser usado. Então nós apenas colocar a comunidade em então que os gatilhos não são Senhor para um instalador. Então nós apenas clicamos naquele insultado que acabou de ser baixado Run. Ele inicializará Onda. Podemos ir em frente com nossas instalações para que possamos continuar em que apenas peixes alguns arquivos para nós. Tudo bem, então depois de terminar com as cargas de trabalho iniciais, então o que ele vai fazer é nos perguntar. Quais pacotes queremos instalar para suportar o que quer que seja que vamos
desenvolver . Então, como eu disse, estamos desenvolvendo uma aplicação web, então precisávamos de SP dotnet e pacote de desenvolvimento Web ou carga de trabalho. Então pegamos essa caixa aqui e depois para a direita e
dissemos,
você vê que eles estão nos dando uma pequena lista do que será incluído. caixa aqui e depois para a direita e
dissemos, Então, o mais recente framework dot net é quatro pontos ele. Então você sabe, é que estamos recebendo 4.4 a 4.6. Então eu entendo ir em frente na teca. Todos estes todos estes ponto net framework 4.6 ponto 1.2 ponto sete apontar em. Mas isso não é tudo . Precisamos desse núcleo Met, mas então este curso é baseado no ponto net core 3.1, que é o mais recente. Mas se você for com o Visual Studio e eles estão recebendo 0,1 completo para que possamos deixar isso em paz depois disso, então eu vou te mostrar como obter 3.1. Além disso, já que vamos fazer um pouco do seu jeito, vou levar a caixa A zero. Não temos que modificar muito mais lá. Só estou marcando essa caixa. Certifique-se de que temos quaisquer bibliotecas que exijam que você possa fazer um drill-down. Basta ver o que mais está disponível para você. Seguro. Ele desistiu do desenvolvimento de plataforma cruzada do núcleo da dot net. Se você clicar nessa carga de trabalho, então você terá mais algumas coisas do ponto net core. Mas eu acho que muitos desses já estão incluídos na carga de trabalho de desenvolvimento da Web, pois você percebe que o espaço total aumentará com cada carga de trabalho que você escolher. Então eu só vou pisar no Tick o 01 em. Eu só vou me certificar de que eu tenho a carga de trabalho de plataforma cruzada dot net no SB dot net e cargas de trabalho de desenvolvimento Web. Nós não estamos fazendo muito desenvolvimento com como seu para que você possa levá-lo se quiser. Se você sabe que tem espaço, tudo bem. E fora
do curso, quanto mais você marcar é mais longo vai levar o download. Mas eu não vou levá-lo para esta partícula, É
claro, claro, então mais uma vez nós apenas temos o sp dot net e desenvolvimento Web, e nós temos o darknet core cross-platform desenvolvimento nos números um para clicar, Instalar em, então que irá iniciar a instalação, que é realmente um não carregar. Então, com base na velocidade da Internet, isso vai variar em comprimento. Alguns apenas quinto currículo quando tudo estiver terminado aqui. Muito bem, então este processo está terminado. Burba levou apenas desaprender nosso em seu ver que eles exigem que eu reinicie o meu computador, a
fim de completar esta configuração. Então eu vou dizer que não. Não que
não precise reiniciar, mas há algo mais que quero mostrar antes de te deixar reconstruir. Então eu vou dizer, não sei o que é basicamente apenas não vai completar a instalação ainda. Mas eu só vou minimizar isso e eu vou mostrar a vocês que precisamos baixar as ferramentas
dot net core 3.1 em, então eu já tenho isso aberto e você pode chegar a este site através de dot net dot Microsoft dot com on. Então eu estou na barra Don't Lord, onde ele está me mostrando que eu não posso saber o dot net core 3.1 ferramentas ou o tempo de execução para isso especificamente, bem como dot net framework quatro pontos ele. Então, na verdade, apenas instalamos o Visual Studio com o framework dot net. Quatro pontos. São ferramentas, então não precisamos prestar atenção nisso. Mas precisamos do núcleo 3.1 ligado. Eu disse anteriormente que o núcleo dot net é construído para várias plataformas. É plataforma cruzada. Então você vê que as janelas não sabem que o Lorde da Pedra Lennox, que os McCoys não sabem e eles têm um médico não, Senhor. Tudo bem, então vamos com as janelas. Estou usando um computador Windows em que estou ensinando com base no Windows. Dito isso, qualquer que seja um ano em que você não saiba o que é apropriado para você em DWI Run the up então eu sou Winton. Apenas não carregue o tempo de execução do núcleo dot net. Eu também estou indo para não saber o dot net core sdk, então eu só vou não saber o X 64 porque eu estava 64 bits em. Não podemos saber isso ao instalá-lo. Então, quando o instalador sai, é bastante simples, uma estrela brilhante em. Então ele fará o que precisa fazer. Então você verá que foi bem sucedido. Então eu realmente não levei tanto tempo para instalar em. Eu só vou voltar e também pegar o sdk. Então o que eu consegui foi um tempo de corrida. Eu fui fazer o download do SDK sem sdk curto para o kit de desenvolvimento de software. Então é aí que as verdadeiras ferramentas de desenvolvimento serão disponibilizadas para o estúdio visual interagir com aviso prévio. Eles estão dizendo que esta versão só é compatível com o Visual Studio 2019. Então, se você tiver 2017 ou uma versão anterior, então você pode querer atualizar. Então, não sei. Será que vamos apenas instalar que assim e, em seguida, começar A vem com uma vara instalar, deixá-lo fazer a sua coisa. E então ele diz que tudo foi instalado com sucesso e eles usam todos os seus próprios tempos e todos os outros apontando para nós. Os diferentes documentos que podemos usar para o seu recurso é para que possamos fechar isso. Sei que fizemos tudo isso. Então posso reiniciar os computadores. Eu não queria reiniciar e depois esquecer os passos. Então eu só me certifiquei de instalar tudo e então nós apenas fazer uma grande reinicialização Onda baixo o computador para fazer a sua coisa. Tudo bem, então saiba que Ari Start está completo. Cartas. Vá em frente e dispare o Visual Studio 2019 em. Você pode encontrá-lo indo para o menu Iniciar, e você provavelmente pode apenas digitar no Visual Studio aparecerá já fixado meu Visual Studio 2019 para o meu menu Iniciar, bem
como para a minha barra de tarefas. Então, basta clicar neste ícone roxo que se parece com aquele sinal do infinito, vamos lançar o nosso estúdio visual assim que for lançado. Ele incentiva você a entrar ou criar uma conta, e você pode fazer isso mais tarde. Não, com a adição da comunidade, ele realmente vai te dar um pouco, como um teste de 30 dias se você não entrar. Então, se você escolher, não sei, talvez mais tarde e mais tarde na linha, você vê como eles estão dizendo, ou ele expirou ou algo assim. É só dizer que eles esperam que você tenha entrado quer entrar. Então não há experiência de expiração que você tem parte, então eu só vou entrar na conta do Windows, e isso é as janelas são cones. O Microsoft é um milho que eu dura muito antes? A Andi. Este é o que abusar de qualquer como suas atividades relacionadas que nossa casa entender para ir em frente e fazer login Mais uma vez, você pode criar um Microsoft cones ou, se você já tem um, basta usá-lo no login. Então, se você optou por entrar ou você disse que não sabe, talvez mais tarde você será levado para o discurso onde eles perguntam qual estilo você gosta. Tão escuro, tema
escuro é toda a região. Eu não estou bem. Não, mas você pode escolher o tema que é apropriado para você nas configurações de desenvolvimento. Vou colocar esse desenvolvimento teia. Então, General, sim, tudo bem. Mas então que desenvolvimento? Esse tipo de colocar certas coisas em certos lugares para tornar mais óbvio para você ver. Tudo bem, então uma vez que você fizer tudo isso, você pode começar o estúdio de resultados Não, apenas não importa. Estou assinando porque estou em um servidor e eles são certas restrições, nossas próprias atividades. E então eu estou apenas destacando isso para mostrar que se você disse não saber, talvez mais tarde, então esta é uma tela que você vai ter. Assim que o Visual Studio Florentines, você será solicitado a entrar e à direita. Você vê que você tem um teste de 30 dias. Então, mais uma vez, seu período de avaliação como e que, por favor, faça login reboque um monte de produtos. Tudo que você realmente precisa fazer é entrar na mensagem de avaliação vai embora. Alguém é um sinal mais uma vez. Tudo bem, eu sei que eu estava registrado. Você vê isso? Eu tenho o cone personalizado que eles tinham no meu conteúdo. E então essa mensagem de avaliação realmente desapareceu. E assim eu posso escolher roupas. E então esta é a tela de lançamento do Visual Studio 2019. Daqui, posso verificar algo de uma fonte de controle. Posso abrir um projeto existente, abrir uma pasta local para criar novos projetos. Então vamos fazer uma pausa aqui mesmo. Se você chegou até aqui, então isso é perfeito. Você instalou os resultados do Studio 2019 Community edition em. Então você está pronto para a próxima atividade.
3. Instale o SQL Server Express: como bem-vindos ao primeiro vídeo do discurso. Introdução ao SQL Server 2017 no Today estará analisando o download e a instalação deste bit fora do software. Agora, um banco de dados é praticamente uma coleção lógica de dados relacionados em É isso. Em poucas palavras. Se você tem experiência anterior com bancos de dados, ele provavelmente veio com o Microsoft Access ou meu SQL. E você só quer estender seu conhecimento além disso. E mesmo que você não tenha conhecimento prévio de bancos de dados, este é um excelente curso para que você fique atualizado com o que os bancos de dados são capazes de fazer. Que preparação utilizável em vigor sobre como você pode começar sua jornada para se tornar um administrador de banco de dados ou apenas manipular dados em bancos de dados completamente. Como eu disse antes, exploraremos todos esses conceitos usando o Microsoft SQL Server 2017. A Andi. Já o tenho na minha tela. A página de “Não perca”. Então eu incluí o U. R L, como descrito aqui nas notas de classe, e isso faria você baixar o mecanismo de banco de dados do Microsoft SQL Server 2017 express na breve descrição é que ele é um poderoso e sistema de gerenciamento de banco de dados confiável que permite que você construa sites leves e sua aplicação stop. Então isso é muito bom. Bastante decente é um ponto de partida decente. Se você não tem aquela máquina de alta especificação, ele tem uma máquina normal. Você só quer começar. Esta é uma excelente opção. Existem outras adições que você provavelmente veria em sua pesquisa, mas se você seguir este link, ele irá cortar todo esse ruído e todas as outras edições. E podemos começar com o Express para que você possa ir em frente e fazer o download em Dinitia. Inicie o procedimento Donald em seguida. Outro software que nos interessa é o SQL Server Management Studio. Agora, o estúdio de gerenciamento será o seu gateway para realmente interagir com o banco de dados , interrogando os dados sobre como escrever o que chamamos de consultas em uma linguagem. SQL. Vamos entrar em todas essas coisas no devido tempo, mas para não, você pode seguir essa garota mais uma vez. Está na aula, anotações. Podemos apenas tomar este botão de download para inicializar este download, o que pode demorar um pouco. É um arquivo bem grande, assim que não carregar estiver pronto, nos reunimos novamente. E então passamos por esse processo de instalação. Ei, pessoal, bem-vindos de volta. Saiba que o nosso não perder o nosso acabado. Vamos começar instalando nosso mecanismo SQL Express. Então, basta clicar no arquivo de isolamento, clicar em executar. Em seguida, seremos recebidos com esta tela de instalação, podemos clicar. Personalização básica permitiria que você selecionasse determinados recursos nesta fase. Não precisamos fazer isso. Podemos ir com o básico. Podemos ir em frente e concordar com os termos e condições que você pode ler, se desejar. Se você tem outras idéias do que você pode querer mudar seu diretor, caso contrário você significa que vai usar como um padrão. E você pode ver aqui que, fora de seis gigabytes, nós realmente precisamos apenas de 300 megabytes. Então eu vou apenas ir em frente e clique em Instalar sobre isso pode demorar um pouco, então você vai se reunir novamente uma vez que isso é concluído. Ok, então no final do procedimento de instalação, você vê que você foi, você sabe, bem sucedido em fazer esta instalação, e então eles te dão algumas informações para dar uma história em quadrinhos e cordas. Então, se você queria desenvolver um aplicativo no topo deste banco de dados, então você provavelmente quer prestar atenção a esta parte. Mas isso não é realmente necessário agora. E eles apenas lhe dão os caminhos para os fogos de amor e outros pedaços essenciais fora do aplicativo. Outra parte essencial deste processo de instalação, como mencionado antes, é instalar a sequela Management Server studio no final desta
instalação de adição de especialistas , eles realmente lhe darão uma opção para consulte o SMS instalado. E isso vai realmente apenas trazer o seu navegador para navegar dedo do pé. Bem, eu imaginei este discurso, então o link para esta página já está incluído nas notas da aula. Aqui é a Andi. A partir daqui, você pode obter um direto não vá ao estúdio de gestão. Então, se você não fez isso antes, você pode apenas seguir este link e obter que o arquivo já tem em Não carregado aqui. Então, vou iniciar esta instalação. Tudo isso irá iniciar o instalador e eles realmente apenas dar-lhe um botão para clicar, que está instalado. Claro, você pode alterar esse local se você tiver outras idéias para o caminho. Caso contrário, você pode deixá-lo como o padrão em apenas clique em instalar. Então, isso também pode demorar um pouco, então nos reuniremos novamente no final deste processo. Ok, então nossa instalação está terminada no Doll nós temos que fazer é reiniciar para continuar. Então podemos fazer isso rapidamente. Onda nós no próximo vídeo vamos começar a olhar para como começamos a juntar tudo. Em que banco de dados está. Por que aprender essa habilidade é tão importante. Fique atento.
4. Crie uma conta do GitHub: Ei, caras neste vídeo vão criar ou criar contas. Este é um passo muito simples. Levante-se. Torna-nos muito fácil para nós inscrevermo-nos. Você só precisa ir para ficar pulado na palma da mão. Isso é G I T H u b ponto c o m. Obter hub ponto com. Você vai pousar neste campo. Não, a partir daqui, se você já tem uma conta e você pode entrar e você pode praticamente parar de assistir o vídeo aqui se você não tem, no entanto, então o formulário do Senado está bem aqui. Você pode ler um pouco. Basta obter uma apreciação do que o gueto B serve. E é tudo um barco. Eles têm preços, então eles oferecem planos empresariais e planos de educação e planos diferentes para diferentes situações. Mas para o desenvolvedor solar para muito pequeno, você sabe, equipes que podem não ser empreendimento nunca do que eles te dão ah muito de graça. Então, para se inscrever, você só precisa colocar em um nome de usuário em um endereço de e-mail e uma senha em Depois de ter fornecido todas essas coisas e desde que o seu nome de usuário é único o suficiente fora do curso, então você clica. Inscreva-se para o gueto em. Você deveria estar dentro. Então eu já tenho uma conta, alguns ajustes reais Atribuindo você viu meus irmãos estão enlouquecendo tentando fornecer informações, então eu vou apenas entrar com minha conta existente. Então é isso que ele pode usar. Você está usando ele ou os militaristas para assinar. E a senha aqui estou. Este é o meu poço de pouso. Então eles realmente te dão, tipo, uma sensação fora da comunidade. É quase como um Facebook para desenvolvedores. Até certo ponto, você pode seguir as pessoas quando elas estão seguindo as pessoas, você vê suas atividades na página inicial da gripe. Você pode saltar para o seu repositório. Então, obviamente, se você é novo para se levantar, então você não teria nada listado para o lado aqui. O que? Não sou notícia. Tenho andado muito ocupado. Hum, colocando conteúdo em sair de quase qualquer pequeno projeto de estimação que eu começar. Eu tenho um get mais positivo, realmente precisa passar e limpar isso em Além disso, Eu tive alunos me adicionar ao seu repouso no passado. Eso que você conhece, poderíamos colaborar. Talvez eles estejam tendo um problema e eu poderia apenas verificar o cordão deles através das posições re. Todas essas coisas são possíveis através desta ferramenta justa e
poderosa. possíveis através desta ferramenta justa e Mas uma vez que você criou seus cones e você está assinado em Ondo bem, você obviamente não veria o que eu estou vendo mais uma vez. Mas então isso completaria o sinal de ativo
5. Instale e Explore PostMan: Pessoal, Pessoal, neste vídeo, vamos instalar o Carteiro. Não. Carteiro é uma excelente ferramenta para colaboração no teste e validação A P I em todas essas coisas maravilhosas. Então é muito fácil de instalar, sério? Só vai postar o homem ponto com o carteiro. Assim como o cara que entrega o carteiro do correio ponto com você não sabe o quevocê
escolhe o seu sistema operacional,
então tem uma janela de 64 bits ligada você
escolhe o seu sistema operacional, , então o não iria começar. Tudo bem, então uma vez que não sabe isso terminado, você pode ir em frente ao abrir o arquivo de instalação Executar o instalador são assim quando ele estiver concluído , você verá uma tela solicitando que você se inscreva ou faça login ou você veja a tela. De qualquer forma, se você vir algo para entrar, eu encorajaria você a fazê-lo Na verdade já tinha na minha máquina. Então você sabe que o fluxo pode não ser exatamente como este, mas se você vir esta página aparecer, então é finalmente Candace, Clique no X, e você pode tirá-lo de Onda. Eu não estou assinada de qualquer maneira, então se você vir a nossa ciência acima olhando algo assim. Então você sabe que pode simplesmente ir em frente e criar uma conta. Desculpe por isso. Você pode criar outros cones com bastante facilidade usando uma senha, ou você apenas assinar com o Google. Agora eu gosto de apenas fazer login com o Google no. A coisa é, essa parte vai manter um histórico fora de cada teste que você fez uma vez que você tem uma conta . Tudo bem, então eu vou apenas ir em frente e entrar com o Google, certo? E assim que você estiver conectado, você saberá que pode começar a trabalhar. Então, vou mostrar a vocês uma amostra do que o carteiro é capaz. Em primeiro lugar, eu vou apenas fazer com o escuro mais porque eles são mais legal em. Então eu vou criar uma nova janela de solicitação. Então, usando este sinal de adição, assim como qualquer navegador com os sinais de mais na parte superior, você pode enganar o sinal de mais, e eu lhe dá um novo pedido. Agora, eu já fui em frente e procurei por alguns olhos públicos enquanto discutimos que o FBI basicamente está em nosso portal para o seu banco de dados. Então as pessoas têm um olho P, várias pessoas de um PS e eu telefonei para este site. Qualquer traço do FBI com Andi,
eu vou estrangular de volta ao primeiro PC, posso ver o que eles têm a oferecer. Então,
a partir da , página de destino, eles têm certeza que seu grupo de público enfrentando um p I tão juntos você pode apenas ir em frente e clicar em um você sabe, sapos
testados. Então eu fui ao Oxford Dictionary um onde eu pegava uma lista de idiomas para que eles
mostrassem todos fora dos pontos finais, certo? Então, ao construir fora do FBI, eles se conectaram aos dados. Tenha certeza de que eles têm uma garota comum, mas então eles têm diferentes pontos de extremidade. Vou dar diferentes bits de informação logo em seguida Eles têm métodos diferentes. Fique posado. Você colocou qualquer um dos outros. Mas o fato é que você tem que saber o tipo de solicitação. Você tem que saber o u R L através do qual você pode obter que pedidos. Satisfeito? Você tem que saber se você tem que passar em cabeçalhos. Então aqui e eu preciso de uma chave de aplicativos em Di di on. Então eles me mostram as respostas. Então 200 significa OK na inicial um exemplo em Jason. Qual seria a resposta, então. 44 significa que não telefonou. 500 precisa disso. Há um erro interno, geralmente com o servidor doméstico. Não com você. Certo. Então, para quatro músicas, você provavelmente está procurando por algo que não existe. 500 significa que o provedor a p I tem em erro. Tudo bem, então mensagem de qualquer um e eu quero de graça para ex FBI ponto com. Desculpe. Então eu dei uma olhada em qualquer AP e eu percebi que todos esses olhos AP exigem que você teria em um cones ser,
você sabe, você sabe, eu registrei usuário provavelmente um usuário pagante fora dessas plataformas que você pode olhar através. Veja, Instagram, você também vê, Google. A maioria deles são protegidos um PS, então eles estão usando alguma quantidade de segurança em torno dele em. Vamos passar por todas essas técnicas nas pontuações. Mas agora, eu só queria ter uma vitória rápida na satisfação de ver o que o carteiro pode fazer e relevância fora disso. Certo. Então eu telefonei para o quatro x oito p i dot com, certo? Entende que está de graça para o ex-FBI. Então vamos para a documentação. Então essa página de destino é, na verdade, a demonstração deles. Consumindo os dados através do ar que eles estão expondo. Certo? Então eles têm um banco de dados construído e o FBI em seguida eles estão fazendo uma séria
causa fora do FBI para mostrar a cidade do índice de negociação em você sobre nós a U e G BP
etc, etc. Então, se eu for para a documentação sobre, eles vão me dar os termos fora de uso. Diga-me como usá-lo. Então a documentação é
muito, muito importante e vital quando se trata de olhos aptos e estaremos usando arrogância. Sawyer,
você por que tocar vocal quando chegarmos lá,
você vê,
mas estará focando em documentar sobre o FBI em grande medida também. Sawyer, você por que tocar vocal quando chegarmos lá, você vê, Então a partir daqui, eles certamente que você tem o Isso é o domínio que os olhos AP hospedaram em direita sobre. Então, à medida que você cresce, você
não vê os diferentes tipos de funcionalidade que eles expuseram? Então eles recebem dados de leitura, certo? E então eles me dizem que o pedido é um pedido gets em. Então você tem os pontos finais. Desculpe, o Ural e o ponto final. Isso é o que ele precisa parecer nesta é uma resposta de amostra. Tudo bem. E se você olhar através, você vê outro que você pode obter cais diferentes. Então aqui você está apenas olhando para cima o Euro USD um, e eles retornam que os resultados desse trimestre para você. E nesse ano, você pode conseguir mais de um, se quiser. Então você apenas colocar em ambos os índices que você está interessado em como o parâmetro nesse ponto . Certo, então essa é uma string de consulta para os valores em que as pedreiras são executadas. Então esta é a resposta do A P I. Uma vez que as consultas são executadas e os dados são telefonados. Não, os registros aéreos contam uma boa história, porque então você, se você passar em aparências que não existem em seu sistema, então eles estão dizendo que você vai. É que se você não passar em nenhum, está terminando o
que é necessário. E se você está passando algo que não está lá, então você vai ver em um recorde 1000 e dois. Então você tem códigos de erro padrão e você tem alguns aeroportos que você mesmo pode me fazer. Então vamos tentar esta amostra Alguém para tentar o 1º 1 onde eu estou recebendo Euro e U S cidades. Entenda copiar este link, o que eles disseram. É assim que se chega aos dados sobre este ponto final em que vou abrir um carteiro. O que eu vou fazer é colá-lo dentro daqui diz, entrar em Questi Worrell. Isso é o que nós apenas solicitamos direitos autorais no URL. Então eu segui o pedido. Você está em l. Então o verbo aqui. Lavar mármore e obter poste. Você colocou patch. Exclui você tem um monte deles. Então get é geralmente usado quando você está esperando para recuperar dados. Certo? Então suba, então livre para o seu AP, hein? , Seja qual for o pedido,Jarawas, não
estou comprometido. Lembre-se, porque é a documentação deles. Então eu vou clicar. Enviar saber o que o carteiro faz é imitar uma chamada. Bem, não realmente imitar ele realmente executa a chamada para que um p i n ponto em, em seguida, recupera os dados na resposta. Então vemos aqui. Ele pode não ser tão bem formatado como como está na documentação. Claro, eles estão colocando seu melhor pé para a frente, mas é a mesma informação que estamos recebendo um re -lo em. Estamos recebendo um coto de tempo. Estamos recebendo 1/4 200. Se você olhar para a direita, você vê o status 200? Certo, então 200 é a resposta universal para o velho T. Quer pegar os 200 responsáveis? Está tudo bem. Então os números diferentes têm significados diferentes de pior, certo? O tempo que levou para mim a causa que este é um rápido AP eu assumi o Isso é o que Meio segundo sobre o tamanho fora da resposta, certo, Você sempre pode formatar. É assim que você pode clicar bonito ou você pode ver cru ou pré-visualizar ou visualizar. Não sei porquê. Bonitinho Oh, isso mesmo. Tenho que trocar os quatro meses. Então é muito html. Então isso é para que possamos olhar em html, mas o fato de que isso eu posso dizer algo como XML enquanto não é XML, Eu disse html deixe-me rápido Jason, que está em. Lá vamos nós. Então não, é bonito, Jason. Então não, parece um pouco mais como, Oh, ele está sendo visualizado em sua documentação, certo? Então o carteiro é muito útil quando você só quer testar, um, como será a resposta. Jason é o tipo de resposta mais utilizado. Bem, eu estou dizendo que vagamente eu gosto de usar as respostas do Jason, mas a alternativa mais próxima a isso seria XML em Dwell. Você sabe, uma vez que os dados estão sendo retornados que o usuário espera, você documentou o que eles podem esperar. Então você é Você pode se sentir confiante de que qualquer um pode usar seu a p i quando necessário. Então carteiro vai vir a calhar como vamos a barcos desenvolvendo nosso ap e só quero um valida que as respostas olhar da maneira que esperamos que eles toe.
6. Crie um Projeto de API web Core: Ei, pessoal, bem-vindos de volta ao vídeo. O que vamos fazer é configurar o nosso projeto “dot net core web ap I”. Então, isso foi muito cheio. Mas será muito mais divertido do que talvez eu tenha feito o seu próprio. Então vamos começar. Então vamos começar abrindo o Visual Studio 2019 Community Edition Onda. Bem, quando você chegar a esta tela de aterrissagem, você vai ver uma bela acima do que você vai ver esta tela de aterrissagem. Você pode não ter nenhum projeto recente tem trabalhado em alguns projetos nos últimos tempos, então esta era pode estar vazia, mas o fato é que você quer se concentrar na seção começar er, então nós queremos fazer é ir à frente e criar um novo projeto em. Então nós começamos a ver um monte fora modelos agora à esquerda I modelos recentes estes são templos têm sido usando nos vários projetos que eu apenas sozinho. Você pode tê-lo em branco, e tudo bem. Você quer se concentrar mais uma vez para o lado direito, onde você será capaz de obter todos os modelos, então deixe-me ver se claro. Tudo bem. Então limpei todos os meus filtros. E você provavelmente tem algo mais parecido com este Sophie um estúdio visual instalado com os modelos que eu tinha sugerido considerando a Web no núcleo escuro material que vai estar fazendo Então nós vamos ver modelos semelhantes. Acho que tenho basicamente tudo o que o estúdio visual tem para oferecer na minha máquina. Então você pode ver coisas na minha máquina que você não tem uma sua apenas se concentrar no que eu vejo é necessário. E se você não tem isso, então você pode, você sabe, você precisa tomar algumas medidas corretivas. Se você acha que estragou a instalação, você sempre pode rolar para a parte inferior. Em seguida, você verá instalar mais ferramentas e recursos, que realmente reiniciarão isso. Sabemos onde escolhes a matilha. Fique limpo, instale. Então, se você rever o vídeo de instalação em, você
percebe aquela janela? Então você seria capaz de ver qual deles você pode ter perdido incluído
e, em seguida, ele irá atualizar o Visual Studio para você. De qualquer forma, o que queremos nos concentrar hoje é em sp dot net core aplicativo Web em. Nós vamos estar usando C afiado, então por favor certifique-se de que você vê c afiado. Ele recebe um básico. Você vê alguém que é básico. Não é isso que vamos usar. Por favor, certifique-se de ver c afiado em. Em seguida, clique no clique seguinte. Então ele vai pedir-lhe o nome do projeto. Então, vou dar o nome a esta livraria. Dash E G I R. Então estamos construindo. Sabe, você quer que seus nomes de projeto sejam realmente possíveis. Quer voltar para a próxima semana e se perguntar, ou que projeto foi esse? O nome deve contar a história logo no “Then”. Você não precisa clicar em mais nada aqui a menos que queira mudar um pouco para o seu filho. Vou mudar a minha localização. Você pode mudar seu estado, essas coisas ou para os meus documentos ou onde quiser o projeto mais rápido. Legal. Deixo isso em branco. Então podemos ir em frente e clicar. Criar. Tudo bem. Então, não, chegamos à parte em que eles estão nos perguntando qual modelo de núcleo de ponto você gostaria de
usar ? Não. Eu quero que você fique bem, eu quero que você preste atenção a esta parte porque eu vou ser um pouco criativo. Eu vou explicar por que eu vou fazer o que eu estou fazendo com isso. Vs um o claríssimo óbvio nós Certo. Então o que eles estão perguntando aqui é se você quer um projeto vazio com, você sabe, você tem que colocar, você sabe, os arquivos. Você quer um projeto e p I? Considerando que este é um e p a p i, é
claro, que se olha para o óbvio, certo? Eles perguntaram Você quer uma aplicação web com páginas navalha? Eles querem uma aplicação web com o tradicional mais o controlador de visão Leo Oats. E então você também pode bootstrap, angular reagir, hum, em modelos Redux em cima, fora do padrão com o aplicativo. Não, eu só passei por tudo isso só para te dar uma prévia sobre bem, AP, eu seria a óbvia, mas aqui está o que queremos realizar. Queremos que o nosso AP, olhos indo para o pé tem alguma autenticação de usuário porque, bem, nós vimos quando estávamos começando carteiro que havia velhos do FBI lá, e isso é excitante. Você sabe, algumas chaves são algumas usando terceiros requisitos impossíveis em. Queremos definitivamente usar os requisitos impossíveis em cima de onde o FBI, porque isso nos ajudará a evitar que pessoas mal-intencionadas e indesejadas acessem nossa EPA. Ele também vai nos bater em lidar com anseios para pessoas que estão bro zing nossa livraria em então o um p. Eu vou precisar autêntico tudo isso para dizer que quando vamos com um p a um ponto pontuação net dá-nos opção de escolher o que autenticação que queremos. Então, por padrão, ele vai dizer sem autenticação. Se tentares mudar,
ele dá-te algumas opções. Nenhuma autenticação do Windows não é uma opção, pois isso significa que você fez login com suas credenciais do Windows. Isso é melhor para a Internet e não, por sua vez, certo, modo que seria para uso interno. As contas do trabalho ou da escola assumiriam que esta pessoa está em todos os 3 65 cones em que não
seria o ideal. Gostaria de me que o sol algum e, em seguida, cones de usuário individuais seria o melhor para usar. No entanto, por padrão, é assumindo que você é um usuário na nuvem, então não temos nenhum conceito Azura ter qualquer coisa através de que a Síria provavelmente não
aprecie totalmente . O que faz aqui é até agora, e tudo bem. Mas meu ponto é que isso está assumindo que você já tem alguns como sua funcionalidade
configurada . Então eu fui para renunciar o uso fora da autenticação e, além disso, eu fui para fora para usaria fora do modelo A P I em. Eu estou indo para ir para o modelo de aplicativo Web direito em. Então eu também vou olhar para as opções de autenticação que eles têm. Como usar cones individuais elétricos. Você vê que é diferente. Então, sim
, está vendo bem. Está vendo o ligado para se conectar em existente usando as roupas. Eu ainda tenho essa opção, mas eu também tenho a opção fora da loja em cima, ossos em cima. Então isso significa que eu posso ter meu próprio banco de dados e armazenar meus usuários no meu banco de dados em minha máquina ou em minhas instalações ou onde eu quiser. Então isso é realmente o que eu quero. Então eu vou escolher usuário individual são cones. Clique em OK em. Mais uma vez, estou usando o aplicativo Web. Realmente não importa qual eu acho que este é mais fácil porque é mais fácil apagar o que não queremos. Estou prestes a mostrar-te do que estou a falar. O que? A questão é que a aplicação web divertida, certo? Não é um P I desta vez, mas uma aplicação web . Colunas de usuário individuais para a autenticação. E então eu fui para ir em frente. Oh, e certifique-se de que você tem dot net core 3.1 selecionado em cima, certo? Então você teria passado por instalar advogado. Certifique-se porque você tem diferentes ponto net core estavam sendo com 3.1, que é a mais recente e melhor tecnologia da Microsoft, como no momento fora da gravação fora deste curso. Tudo bem, então eu vou em frente e clique em criar, e então isso vai começar a fazer alguma mágica no Visual Studio. Isto pode demorar um pouco, está
bem? E uma vez feito, então temos o nosso projeto criado círculo à esquerda. Bem, à minha esquerda, tenho a minha solução. Explorador. Não, eu tenho um vídeo onde vamos passar por um estúdio bizarro e olhar para todas as pastas e todas as coisas maravilhosas, mas certo? Não, meus exploradores sociais à esquerda. É realmente móvel. Então, por padrão, eu acho que você veria sua querida direita. Mas eu não posso sair preferido à minha esquerda porque algum movimento mais natural para o meu dedo do pé, você sabe, encontrar o que eu quero à esquerda e depois trabalhar e então, você sabe, esquerda para a direita pelo menos no meu contexto ocidental levantar Direto. Então é isso para criar nosso projeto. Quando eu voltar, mostrarei este projeto nosso, o interferirá no que é capaz de fazer. Eu também vou explicar para você por que nós teríamos ido com as páginas de navalha na autenticação oposição ao A p I e nenhuma autenticação escreveu em. Então tudo isso fará sentido para você. Mas, , já que estamos aqui, vou mostrar-lhe uma prévia. Então, apenas este modelo. Dê-nos alguns arquivos. Temos idades. Então dentro de páginas que não experimentamos uma página de privacidade em Temos um arquivo de inicialização? E eu vou apenas clicar no botão play aqui. Então o playbook lança o aplicativo, ele entra em construir mais verificando se há algum erro fora do curso, eles apenas nos deram projeto. Não há erros, Onda. Uma vez terminado, então vamos ver o nosso lançamento Broza com a nossa aplicação. Nenhum aviso que temos por padrão registrar e um botão de login. Então, se tivéssemos escolhido a autenticação que não teríamos esse registro e saudade. Mas ao escolher cones individuais, temos o feijão que temos. Bem, o projeto foi gerado inclusivamente, fora de todas as bibliotecas e funcionalidades necessárias para suportar o registro no log off curso. Isso pode ser estendido e manipulado buraco que queremos, e é exatamente o que vamos fazer. Mas essa interface vai desaparecer porque você não precisa interferir para mais de um IP e ainda não é. Andi, vou explicar tudo isso para você no próximo vídeo. Vamos começar a construir algo em que se pareça mais com o que se espera de um FBI . Em um pouco mais sensato
7. Tour de estrutura de projetos e arquivos: Ei, pessoal, bem-vindos de volta neste vídeo nós vamos fazer uma turnê fora da nossa estrutura mais completa e dual geralmente fora do estúdio visual. Agora, vamos começar. Você quer toe estúdio visual aberto que irá, em seguida, levá-lo a esta tela de aterrissagem onde ele pode saber, Vá em frente e abra ou crie um novo projeto no lado esquerdo. Você verá seus projetos listados no dedo do pé nessa lista. Certo? Então, nosso projeto é tanto loja AP. Eu posso clicar nisso e, em seguida, ele vai lançar a janela média. Tememos que o Solution Explorer e todos os seus arquivos. Não, minha solução experimentou a esquerda por padrão. Acho que o seu é para a direita. Mas então você sabe que é documentos sobre o bico DACA e faria em torno do acampamento nele na UNP nele destacou todas essas coisas maravilhosas. Então você sabe, você pode fazer esta interface seu ou como você se sentir confortável vendo suas coisas. Você pode dragão soltá-lo em qualquer lugar redimensionar à vontade em então. No Solution Explorer, ele mostra todos os seus arquivos de projeto. Então você tem a rota www que vai ter arquivos estáticos até mesmo para ter áreas que normalmente mantém é algumas páginas relacionadas à identidade, como em, você sabe, gerenciamento de
usuários em, você sabe, fazer login, registrar qualquer coisa com autenticação do usuário e gerenciamento estava dentro desta
borda áreas padrão . Você tem dados nos quais armazena todas as classes relacionadas a dados e 100 migrações. Eu só estou desviando porque eu só quero que você tenha um apreço sobre o que você está olhando. Se esta é a sua primeira vez justa. Tudo bem, então você tem páginas. Não, porque temos um modelo de navalha trabalhando com lá. Algumas coisas que realmente não precisamos, já que vamos construir um P.I . Então, uh, como eu disse no vídeo anterior, a razão pela qual eu escolhi a navalha ou eu teria escolhido a NBC é para que pudéssemos tirar vantagem do padrão. Autenticação de
usuário para recursos individuais de cones A. Então, fazendo isso, o projeto foi recriado com algumas coisas padrão que eu não teria que gastar tempo construindo novamente. Mas também outras coisas padrão que realmente não precisamos. Vamos gastar tempo consertando o projeto, estamos excluindo o que não queremos e recompensando o que queremos. Mas eu quero que você também tenha um apreço pelo que o Dot Net Core realmente lhe dá seguir
em frente antes de eu entrar nos ajustes a serem feitos. Nós também temos as configurações para cima que Jason se você clicar que, que é ah, arquivo de
conflito, que mostra algumas configurações padrão na cadeia de conexão para as configurações de
log do banco de dados e um monte inteiro começa. Então eu não vou estar mais uma vez em. Você tem o programa não nos ver? Qual é o arquivo padrão que é executado cada vez que você clica na reprodução ou cada vez que seu aplicativo é iniciado. O programa que CS é como o arquivo Isar inicial e depois último. Mas, de modo algum, temos o nosso arranque nazista s, que basicamente incorpora o que chamamos de meio foram assim um monte de configurações acontecem aqui muito fora coisas padrão que precisam ser incluídas na inicialização literalmente. É por isso que começou que CS todas essas coisas são colocadas neste arquivo. Não, este fogo vai exigir alguma modificação por nós, a fim de obter um PR pronto agora para ser justo , se nós escolhemos o modelo A P a, então nós não precisaríamos atender essas modificações. Mas eu escolhi modelos de razão. Então eu vou tirar algumas das funções relacionadas à razão e colocar em algumas
funções relacionadas a P I . Outra razão para levá-lo nesta jornada é que se você não tem uma compreensão completa o que é o tribunal dotnet, porque se você estava usando dotnet framework, eu sei que você está fazendo a transição para dot net core. Às vezes é relacionado de uma forma muito abstrata. O que os serviços e o que exatamente precisa continuar para que o aplicativo principal dominante seja aberto que o dot net core seja como uma linha de base. Porque é um número de funções, um número de capacidades fora da caixa com eles. Com base no seu contexto, ele terá certos recursos incluídos por padrão em. Então, se você quiser mais, você pode adicioná-los com base em seus expoentes conas novamente. Então, dentro do nosso contexto, criamos uma aplicação navalha usando o tribunal dotnet. Então, por padrão, sem um número fora da navalha, realmente, seria, hum, filhos de
telefone incluídos no início dos nazistas para que pudéssemos começar no Canadá e 35. Vemos que estamos adicionando um resultado páginas que podemos continuar e vemos que temos você
arquivos estáticos em suas páginas mop Reza indo dedo do pé. Então estas são algumas pequenas configurações que iriam mudar, provavelmente para remover porque não precisamos de funções relacionadas a navalha. Realmente quer um P I funções relacionadas. Então é tão fácil como apagar o que não queremos mudar o seu pensamento. E esse é o ajuste literal para mudar o comportamento de toda a nossa
aplicação principal dominante . E é por isso que não fazer guerra é tão legal. Então deixe-me apenas dar-lhe uma carga sobre as modificações que vamos encontrar recentemente . Vamos mudar algumas das configurações aqui no arquivo do susto. Então vamos apagar certos Fuller que não queremos e criar pastas que
possamos pastas e outros arquivos específicos do FBI para que possamos começar essa festa. Então, vamos começar. Então, na linha 35. Então eu vou deixar todas essas configurações porque estas estão dizendo que quando o aplicativo é iniciado, eu quero usar um contexto de DVD usando o SQL Server Onda Um F core ou em núcleo de trabalho diferente porque é um número de para outros bancos de dados, você pode usar o SQL Server. Você também pode usar meu SQL em. Você tem alguns conectores disponíveis, então estamos usando o SQL Server porque temos um banco de dados SQL Server em, estaremos usando a seqüência de conexão padrão. Eu também vou modificar o que nós também vamos usar a identidade padrão. Então isso significa que o padrão usar bibliotecas de autenticação. Infelizmente, isso teria incluído quando criamos os projetos que o usuário individual cones opção
de autenticação. Sim, é tudo o que é tipo de bootstrap nestas duas chamadas, certo? Então estamos dizendo que estamos usando o banco de dados que é chamado neste chá para conexão mais tarde . Vamos mudar isso. Vamos usar esse contexto BB. Os buracos sobre as necessidades de armazenamento de dados de autenticação do usuário, certo? Isso é o que isso está dizendo. Mas então a parte em que diz artérias ou páginas, eu não estou realmente interessado em artérias de páginas. Estou interessado em controlador, então você tem páginas Reza qualquer metade NBC e vemos o mar diz para controladores assim AP olhos são geralmente baseados na funcionalidade do controlador. Então eu vou mudar isso de pilhas de páginas dos controladores Adah. Então eu estou dizendo ao aplicativo que eu vou estar usando controladores para,
você sabe, você sabe, o que quer que seja que eu preciso estar fazendo em seguida, nós vamos estar mudando de você arquivos estáticos alguém para remover você arquivos estáticos porque Eu realmente não preciso de arquivos estáticos em meus arquivos estáticos a p I são que você vai estragar quando você tem, você sabe, javascript e CSS. Aqueles arquivos que são necessários para, você sabe, estilo. Eu não preciso disso porque um FBI não vai acontecer. Interfere pelo menos os olhos AP. Você acabou de ser chamado sentado em cima de um banco de dados, certo? Então, eu estou removendo o uso de arquivos estáticos em Eu também estou indo toe mudança linha 63 para dizer endpoints que controladores mop. Tudo bem, então qualquer coisa que estivesse dizendo navalha, eu vou mudá-lo, Totó Controladores? Não, com tudo isso, não podemos acionar uma construção, e isso é segurando a mudança de controle em B. Isso é um teclado. Corta tubarão. Alternativamente, você pode simplesmente ir para o item de menu construir na solução clique compilação, que irá indicar o mesmo tubarão teclado. O que? Para você. Portanto, qualquer opção que você preferir, você pode fazê-lo não. Tudo bem, então este edifício está terminado no que eu vou fazer é a pista, algumas das pastas que nós realmente não precisamos. Então eu vou começar com www Route. Então, se eu olhar em rotinas www, você vai ver o que vamos ver. CSS gs lib. Certo. Então, como eu disse, todos os arquivos estáticos que são necessários para, você sabe, javascript styling todas essas coisas maravilhosas para interface de usuário seria armazenado na
rota W W. Agora, eu acabei de remover o dedo necessário, tenho arquivos estáticos. Então eu realmente não preciso de raízes www. Eu vou remover isso, então eu apenas clique nele. Pressione Delete. Ele vai dizer que tudo será permanentemente apagado, eu digo. Está bem, deixa continuar. Tudo bem. Próximo. Temos áreas que não precisamos da era. Então, como eu disse, áreas vêm com algumas coisas de identidade, mas não é a funcionalidade de identidade, certo? Para que eu possa remover áreas. Eu apenas segurar no controle em páginas clique também para que possamos remover áreas em páginas. Então, clicando em, em
seguida, segure-o no controle e tomando outro. Eu estou selecionando dois de cada vez e, em seguida, eu pressione excluir então apenas removeu tudo. Uma vez no seu projeto está ficando um pouco mais magro. Então você sabe que está cortando, embora decida realmente? Na verdade, um projeto não tem que ter um monte de $4, certo? Porque mais uma vez, nós realmente só temos arquivos judiciais que estão manipulando, entregando pedidos e manipulando teatro para dar respostas. Certo. Mas para lidar com os pedidos, o que precisamos são controladores, certo? Então eu vou clicar com o botão direito do mouse no meu projeto. Então temos a solução no topo. Mas havia o incêndio do projeto lá em baixo. Vou clicar com o botão direito. Então eu fui para ir para novo ou desculpe,
adicionar, em
seguida, primeiro eles sem uma nova pasta. Então vamos dizer adicionar pasta e, em seguida, o completo eu vou ter controladores. Não, minha sugestão para você é que se você me ver direito C maiúsculo para alguma coisa, você também escreve C maiúsculo do seu lado. Muitas vezes ele passava tempo depurando as coisas só para perceber que você sabe, você tinha um pouco comum onde deveria ter sido capital e vice-versa. Então eu sempre tentarei manter bons padrões de codificação em def. Você apenas, você
sabe, segue a convenção que eu estou sugerindo que ele não deve ter nenhum problema. Então temos uma pasta chamada Controladores? - Não. Nossa pasta de controladores irá conter incêndios de classe especial ou arquivo de tribunal especial Literalmente chamados controladores e controladores fazer exatamente isso. Eles controlam o fluxo do aplicativo. Então nosso pedido vai para um endereço que no controle vai pegar. Então ele vai dizer, OK, aqui está a nossa resposta para o seu pedido. Então a primeira coisa que eu vou fazer a próxima coisa que eu vou fazer ou outra coisa é raquete. Meu controlador arde. Vá. Não faça Ida com isso. Vamos adicionar um novo controlador. Vês? Deve estar no topo. Se você não vir controlador do que você pode clicar em novo item, ele irá trazer o mesmo que são caixa. O que? Eu só acho novo item porque eu vou voltar para o mesmo qualquer item. Então, se você criar novo item, você vê classe controlador em, em seguida, o nome padrão. Também isso. Desculpe. Você vê, classe
Controller e você vê uma classe de controlador P I ou o que queremos realmente é um
controlador A P I . Tudo bem, então isso é se você tivesse que ir para um novo item. Eu vou cancelar e eu fui para ir para o novo controlador. Então eu cliquei. Adicionar controlador Goto em. Então esse dinheiro aparece onde está me dando opções mais pontudas. Vou ver um controlador do FBI vazio. Ele poderia controlar com opções de leitura de gravação. Andi par controlador com opções usando em diferentes trabalho duro. Então, agora, vou escolher um controlador P I. Vazio. Tudo bem, vamos. Então eu vou clicar, Adicionar, então ele vai me perguntar, qual o nome que eu quero dar? Então o nome padrão vai ser padrão, mas eu vou chamá-lo de casa, alguém para dizer Controle de Casa. E esse é o nome do meu primeiro controlador AP I ligado. Então eu clico em adicionar, e tem sido para passar algum tempo. Andaimes carrega o controlador. Muito bem, então não, nosso controlador acabou de ser descontrolado e andaimes é apenas o termo técnico. Para ver auto gerado praticamente direito. Então, quando tivermos este controlador. Quero dizer, é simples vir ver um arquivo afiado do tribunal. Temos estão usando declarações no espaço superior ou nome, que é nossos projetos. Nomeie pontos, o nome mais completo. Certo. Então temos o projeto em, depois a pasta. Direita em. Então temos as raízes. Então, o mais rude nos dizendo que para chegar a este controlador, nós temos que digitar, você sabe, as meninas básicas, em
seguida, cortar ap ap eu cortar o nome fora do controle. Tudo bem, então para começar de novo, controlador foram para Creo vai chamar uma ação. Então, em ação é geralmente o que lida com o pedido vindo de, você sabe, alguns aplicativos de terceiros. Então em real teria que ser um público em. É um telefone mostrado, certo, então temos o tipo de retorno. Na verdade, os resultados estão bem. Então damos um nome a ele. Neste caso, eu vou chamá-lo de Índice porque índice é como um caminho padrão para o primeiro por favor, você aquecer quando você chamar. Certos sites estão com o seu mais em. Então o que vamos fazer dentro dessa ação é retornar um resultado. Então, eu só vou ver um retorno e, em seguida, com os diferentes números do FBI representam coisas
diferentes e o melhor número que você pode obter quando você tenta algo em um e p a é o número 200. Isso significa que está tudo bem. O legal é que dot net nos dá funções que eu perdi o retorno. Estes, hum, resposta é muito fácil assim. Eu só diria OK, sobre isso é uma função. Então, se você olhar para a inteligência, ele está dizendo que ele cria um objeto de resultado certo que produz um status vazio com
200 pontos certo? Então, se eu só disse retorno ok, ele iria apenas retornar 200 Mas eu quero retornar uma mensagem de seu eu posso realmente apenas incluir dados dentro do telefone mostrado direito. Então há uma sobrecarga onde pode incluir no objeto. Então, se eu tiver, quero voltar com o status. Ok, então eu posso fazer isso. Então diga: “
Olá mundo”. Ele vai voltar. Comece 200 Orochi com o texto. Olá mundo. Então que fique isso para dar uma volta. Então eu vou apenas clicar no botão play. Ele vai entrar em construção com Misha não tem erros de sintaxe e ele vai girar até versão
light off. Eu estou em seguida, provavelmente o navegador. Tudo bem, então quando seu navegador carregar, eles provavelmente estarão vendo um status para um quatro. E o http pediu um para mim, não
é telefone. O que ele está dizendo é que ele não encontrou nenhum passe padrão ou qualquer conteúdo para retornar neste pote
padrão. Então esta é a nossa menina. Toda vez que entrarmos em um barco ancorado, vamos ter algum hospedeiro local, o cólon, em algum porto. Andi Bem, geralmente não funciona a menos que você esteja em B, mas mais ainda onde no barqueiro não está funcionando geralmente não funciona a menos que você esteja em B,
mas mais ainda onde no barqueiro não está funcionando. Então isso é uma espécie de anomalia ou motivo de preocupação, certo? Então o que acontece é que se você olhar de perto, ele disse que para chegar ao controlador, precisamos dizer barra ap I slash controlador. Então temos a nossa base. Você é. Eu sei o que está bem. Um cólon de mangueira 4432 Deixe-me divulgar em topos necessários sobre o que precisamos fazer é dizer, barra ap I barra E então ele disse, Controlador e colchetes. Então, quando é um controle de inserção colchetes, o que ele realmente quis dizer foi cortar o nome fora do controlador, que nós chamamos de casa. Então, quando eu fizer isso, veremos Hello World sendo devolvido. Mas não é exatamente onde quero que testemos e validemos isso. Lembre-se, é um FBI. Então o FBI pode estar devolvendo todo tipo de coisas que podem estar retornando. Pelo menos eles podem estar devolvendo alguns objetos do Jason, coisas assim. Olá Mundo é apenas um casal barato para que possamos ter uma vitória rápida para a duração fora desta lição. Mas só a parte de cima, tudo fora. Quero que usemos o carteiro. Então eu passei aqui, e o que eu vou fazer é criar uma nova solicitação. Tudo bem, então eu só vou substituí-lo pelo mesmo caminho em que eu colocá-lo no carteiro. É que eu entendo, então eu clico em enviar. Então temos a mesma resposta. Pequeno mundo, nem a razão de te mostrar no carteiro somos nós por causa do status. Então você não vê isso no Broza. Pelo menos não está prontamente disponível para você, mas você verá o status 200. Certo, sendo devolvido. Tudo bem. Tudo bem. Alguém que termine esta lição aqui. Acho que já fizemos o suficiente. Nós reorganizar as pastas para ser mais propício toe relógios adquiridos para ou um projeto P I para revestir toda a luta todos os fãs estáticos e classifica que eu realmente não preciso. Criamos um controlador em. Criamos nossa primeira opção onde testamos o FBI com o carteiro, só para ter certeza de que estamos recebendo os resultados certos da ação. Então em nossa próxima lição vai continuar algumas configurações como começamos, você sabe, você sabe, trazer todo esse FBI em Realidade reboque.
8. Configurando e usando interface interface: Ei pessoal, bem-vindos de volta a esta vitela que vamos estar
revisando, configurando e usando mais forte. De qualquer forma, agora eu mencionei antes a importância de ter olhos AP bem documentados. Eles agem como um guia para pessoas que consomem o
A.P.A. A.P.A. em git diz-lhes como ele é usado, o que chamar quando eles querem. Que tipo de informação sobre o DSO Swagger faz um excelente trabalho fora, você sabe, criar documentos está nos ajudando a criar documentos. Na verdade,
ele nos levou os documentos de geração automática com base no que desenvolvemos. E então vamos usar esse tempo,
integrá-lo ao nosso FBI. Neste momento, só temos um ponto, mas então, você sabe que vamos colocar na luta. Eu olho para ele com um ponto e, em seguida, colocar em outra coisa e, em seguida, apenas olhar para todo tudo apenas é gerado para nós. Então, para começar, temos que incluir fivela swash. Sua fivela é arrogante. É biblioteca dotnet Praticamente para fazer isso, vamos usar uma ferramenta chamadas que você começa, então nós apenas clicar com o botão direito do mouse em nosso projeto. Em seguida, descemos para gerenciar novos pacotes get. Uma vez que o lords up, é uma janela que vai nos mostrar um monte de pacotes de pacotes são como bibliotecas que têm funcionalidade, certo? Então você não sabe o que um pacote para uma coisa particular e você obtém um pacote fora funções e funcionalidade praticamente assim que você verá aqui estes são todos os que
já estão instalados. Então nós queremos Boro porque você quer aqueles que não são instaladores em. Eu aconselharia que você clique em incluir pré-lançamento apenas no caso de a versão que você está usando a versão de donna corps que você está usando a versão fora da biblioteca pode não ser incluído. Se você não clicar em, inclua pré-lançamento. Eles querem a biblioteca mais recente para a versão mais recente desse núcleo. De qualquer forma, vamos em frente e procurar. Procuro o Boco. Então isso é S W A s lavagem Boco. Tudo bem, e então uma vez que fizermos essa busca vai ver alguns resultados e nós vamos não fazer Senhor os únicos para ele alimentá-lo ponto net core para que serão três anos, certo? Só queríamos um batedor e um sargento. Eu quero arrogância. - Você. Por quê? Então não sei o que você só precisa passar sobre a linha e você verá a seta para baixo , certo? C para dormir que seta para baixo,
e, em seguida, ele vai se conectar aos servidores, pedir que você aceite algo em. Então você deixa que ele faça a sua coisa. E então quando ele foi instalado com sucesso, você vê aquela seta verde? Então nós temos esse. Vamos pegar o próximo,
que é “slugger”. Gin. Só não sei essa. Que ela faça a sua coisa. Tudo bem, então nós temos essa ferramenta ligada. Então o último seria vangloriado. - Você. Por quê? Então nós só não sabemos esse também. Agora, depois de não carregá-lo, todas aquelas bibliotecas. Se voltarmos para a facada instalada, você os veria listados lá. Fora do curso. Você quer limpar a busca para que eles possam ver todas as bibliotecas que, você sabe, ter cortesia de novo obter as que a seta azul para cima estão para cima. É assim que eu quero dizer, você pode vir até o talão apropriado. Você pode selecionar tudo e ele pode atualizar, mas eu não vou fazer isso às vezes fora de sua exigir que você faça algumas grandes mudanças pobres . E eu não vou passar por isso neste vídeo ou nesta, você sabe lição, então podemos deixar isso para mais tarde. Mas a coisa mais importante é que nós temos fivela swash instalada e nós apenas costumávamos chegar pela primeira vez de qualquer maneira, seguindo em frente. A próxima coisa que queremos fazer é configurar alguma configuração. Então, como teríamos discutido, preparar para isso começa sobre mangueiras de arquivo CS, um monte off con figuração e inicializar er que são necessários quando nosso Danek ou aplicação começa. Então, é
claro que você quer incluir ou novo serviço ou nossa nova biblioteca, que é mais forte. R slash vocal, hum, em nosso meio onde? Então é aí que o aplicativo é iniciado. Ele está ciente de que este é um serviço que precisa ser incluído, alguém para começar a introduzi-lo depois que eu inicializar o banco de dados. Mas antes de eu inicializar meus controladores então às vezes ordem importa quando você está inicializando serviços. Às vezes, você não deseja inicializar esse serviço antes desse. Eu costumo deixar que os controles por último porque na hora de adicionar os controladores. Todo o resto deveria estar no lugar. Não sei se espero que isso faça sentido. Então eu sempre digo que ordem importa se você não pode se incomodar. É a ordem parece dedo do pé, você sabe, difícil de entender. Basta deixar este controlador um para o último. Praticamente. Certo, então vamos adicionar o serviço de futebol. Então, para começar, vamos dizer que os serviços ponto sobre. Em seguida, você pode não ver uma lista do anúncio ausente em. Depois de abusos, Swagger. Lá vamos nós. Adicione Jensen arrogante,
incluindo nossas bibliotecas. Você sabe como esse novo método de extensão. Então adicione o gin de futebol. Então vamos ter que colocar algo como uma expressão de ferida. Então vamos ver conversando. Você já viu, então? Uma flecha, certo. , Andi, abra e feche. Crie uma brisa. Então isso é só o começo. Nós não terminamos em tudo. Então os serviços que o anúncio viu Gourgeon abrir. Prepare-se, então. Você é a expressão lambda. Você está falando a flecha. Então abra. Perdido. Realmente brisa perto brisa para parênteses e, em seguida, cínico. E assim, onde quando começar a preencher dentro das chaves? - Não. Com algumas informações necessárias para que o sargento possa operar. Então eu estou apenas quebrando a linha e eu estou com o topo para que pareça batido. Tudo bem em. Então eu vou começar com a minha expressão, que é o mar ou a terra. Uma lembrança. Você poderia ver aquela Onda slugger? - Não. Tudo bem, então, Open. Prepare-se. Então eu vou mandar me ligar e de novo. Então eu só estou fazendo isso terra por linhas para que, você sabe, ele não se confunda quando você tenta produzi-lo. Então vamos começar a sentir alguma informação sobre a Saga. Então, se eu olhar para ser os parâmetros de função para os formulários de futebol doc e ele está pedindo por um nome em, então ele está pedindo para abrir uma informação P I. Certo, então o nome que vou dar é V 1,
como na versão 1, como na versão 1, esta é a primeira versão do FBI,
então a batida de futebol realmente ajuda com a versão. Você sabe, quando você tem mais de uma versão fora do jogo, talvez na versão da BBC eu tenho que patrocinadores e uma versão gratuita e versão paga. Você pode realmente ter Dom. Futebol gera documentos separados besta sobre isso. Mas tudo depende da sua configuração. Então esta é a primeira versão do par que estavam se preparando para construir. Então V 1 em, então eu vou ver um FBI aberto ao meio-dia na íntegra. Desculpe. O tipo de seu aberto um p I estar cheio direito em então. Este é um novo a p a em para abrir um b a em para objeto. Mas eu só fui inicializá-lo aqui em, em seguida, dentro do limitador armazena este parênteses que, em seguida, dentro de abrir um b a dentro para estes são os pontos de dados ajustado controle e espaço E me mostrar todos os pontos de dados que eu sou um monte de filo dentro fora isso para que eu possa ver um título é igual a e eu quero chamá-lo de minha livraria 80 i para um lunático, todo o meu que parece um pouco pessoal demais. Estamos tentando,
sabe, sabe, preparar para o mundo profissional. Então livraria um p I em, em seguida, versão vírgula. Andi,
posso dizer que a versão é igual ao dedo V um. Tudo bem, mas quando você vê que você tem um gnomo fora de todas as coisas que você poderia sentir ele poderia apenas dar o dedo do pé vírgula. Você pode colocar em informações de contato, mais fora uma descrição. Sete colocando guerra para descrição. Então eu vou apenas para a linha de freio para que ele não pareça muito confuso. Amigos. Oh, nosso inimigo. Sim. Às vezes fico obcecado com essas coisas. Tudo bem, Sam, esta linha quebrando, tentando fazer com que tudo pareça necessário. Então não digite comigo ainda. Monta isso um pouco melhor em. Então, a próxima coisa que eu ia colocar era a descrição em seguida descrição. Isto é educacional para uma livraria. Certo, então esse é o primeiro passo para preparar o nosso batedor. Então nós adicionamos o serviço para o futebol. Você sabe, geração de
documentos. Praticamente. Isso é o que este só está vendo. Então estamos dizendo que ao gerar o documento, estes são alguns valores estáticos que precisamos ter. Então esse é um título fora do documento. A versão fora do papel e a documentação Onda a descrição. Tudo bem, então em seguida, vamos passar por cima do nosso método de configuração. Então esse era o método dos serviços de conficker, certo? Isso é chamado de comprador do tempo de execução. Não, vamos ser burros com o conficker, que também leva o estudioso a tempo. E é usado para o pipeline de solicitação TTP. Então a primeira coisa que eu vou adicionar para esta seção sobre eu vou fazer logo abaixo desta declaração é para cima que use slugger. Tudo bem, abra e essas chaves. Então eu estou vendo com terrível para executar esses que você se gaba. Então há outra terra que qualquer um que eu tenha que dizer que use arrogância. Você, eu me lembro disso. Não sabemos que três bibliotecas, certo? Então, Swagger, Jen era o serviço. Estou a
dizer, seu batedor, não, estou a dizer que te vanglorias. Por quê? Que é,
bem, bem, nós abreviação para interface de usuário. E então este requer um pouco fora do lambda como expressão semelhante ao que
acabamos de ver. Então eu tenho que abrir e fechar parênteses. Põe o alarme, a conversa e estou a usar. Veja, você pode usar praticamente tudo o que quiser aqui. Deus vê, comece a configuração na minha cabeça. Mas eu não estou vendo você mais. Você vê, hum, a seta em seguida, aberta inclui brisa acesa, em
seguida, semi-cólon. Então, dentro de fora, as chaves iam dizer si dot slugger endpoints direitos para ver a inteligência está falando exatamente o que queremos fazer. Tudo bem, Andi, depois que dissermos, veja esse idiota dentro disso e você vai ter que digitar isso muito parecido. O todo que eu estou digitando. É onde sem antes slash slugger cess novamente, v uma barra Slager ponto j, filho. Certo, então isso é provavelmente uma coisa que você quer dizer, que é quanta margem de manobra desejo intervalo de digitação. E você provavelmente sabe. Você provavelmente pode torná-lo um pouco mais fácil, mas podemos deixar assim sob espontaneidade,
hum, hum, e depois vírgula em seguida o nome. Então eu estou apenas mento reutilizar o título que eu tinha aparecido em Coloque como o nome aqui. Certo,
então, não, não, dissemos ao nosso pedido que pretendemos usar o “slugger”. Então, por favor ,
Senhor ,
essas ,
Senhor,
essas
bibliotecas quando o aplicativo é executado por precaução. Tudo bem? - Não. Vamos tentar e ver que diferença faz quando eu vou depurar orbe ancorada Roeser vai carregar , ir para o 40 com certeza. Mas então eu quero ver a documentação do futebol para que eu possa ver barra no próprio caminho que eu acabei de colocar, que era slugger slash v um slash slugger, não J filho. Então, quando eu fizer isso, tudo bem. Então eu estou pegando essa flecha, e eu conheço minha esposa. Eu sei porquê. Então eu vou voltar para os meus projetos. Tudo bem, então o problema que eu tenho é porque fora do controle que eu tenho para o FBI. Então, o que acontece é que se você tem uma ação pública em um controle de Ap I, mas você não deu nenhum atributo de descanso e logo entraremos em outro descanso. Na verdade, terrível. A questão é que está ali. Na verdade, vai se afastar, competir com a arrogância. Certo, então aqui está o que vamos fazer. Vou apagar este controlador. Tudo bem? Então, em casa, controle disso era nosso experimento, só para ter certeza de que nosso pessoal eu estava trabalhando, então nós pensamos que iria. Então eu só vou deletar. Então eu vou adicionar um novo, então eu estou indo apenas para clicar com o botão direito do mouse I goto controller on. Então desta vez vamos dizer que eu quero um controlador AP com ações corretas de leitura. Então este vai nos dar, como um modelo? - Não. Então não é loira. Controle de força um preenchimento. Este é um modelo. Certo? Então eu só clique em adicionar eu vou chamar este aqui. Bem, Bem, acho que
posso chamá-lo de Controle Doméstico de novo. Então eu estou apenas recriando casa controlável com cabo gerado automaticamente. Tudo bem. E aqui vamos nós. Então você pode ver que este é um pouco mais colorido, um pouco mais animado do que o anterior sobre o que eu estava dizendo sobre os atributos restantes seriam esses, um atributos anotações de dados que são uma notação que são colocados acima do ação. Então isso é que eu entendo isso dito, verbo de
descanso. Eu não sou. Eu entendo que apoios. Isso é outro ver put. Exclui Esses são todos verbos de pulso. Certo, então esses são os atributos do pulso que eles estão falando, então vou tentar de novo. Eu vou voltar para dedicar mais, no
entanto, entanto, fazer qualquer outra mudança, mas recriar o meu controlador eu vou apenas voltar para depuração mais bem. E voltamos para Attar para quatro. Então deixe-me tentar de novo. Slash swagger slash v uma barra Slager ponto j. filho, quando eu faço isso não, você está vendo tudo bem, alguma documentação. Mas então isso obviamente não é muito decifrável. Se você nunca viu Jason antes, isso não faria sentido para você. Se conheces o Jason, então ainda não significa o que o sentido faz. - Não. Você tem que se sentar e estudá-lo. Então, para chegar à arrogância real você eu, a bela da interface de usuário, são o belo documento que estamos falando de barcos. Você iria apenas tirar tudo e c slash Slager. Então, é o anfitrião local do cólon do aeroporto, barra de arrogância. E uma vez que você faz
isso, ele vai redirecionar no índice dot html com um documentos bem gerados mostrando todos os seus pontos em. Senhorita, se eu puder abaixar isso um pouco e trazê-lo ao lado Bem, nós temos no estúdio visual, certo? Então você pode ver a livraria valores estáticos. Ap I. Este é um par educativo para uma livraria. Essa é a descrição, Appleton. Hum, você sabe, nós temos força. Bem, fique bem. Então, tenha a função get. Eu retornaria todos os valores, então. É o telefone de uma casa de pslash. Diga, veja, ele diz que você tem que ser uma casa de corte pode perfurar para baixo e mostra que, um , você sabe, esquemas são barcos, a função. Então, fora do curso, isso pode ficar muito mais avançado é um muito básico e é foi gerado automaticamente a partir basicamente do nada. Então, você sabe, é um bom passo na direção certa. Eles também mostram que nunca chegar onde você pode ver um ps slash home slash i D, que é um método que temos aqui em. Então, se aprofundarmos isso, isso mostra a descrição do parlamento e que ele espera sobre as possíveis respostas. Tudo bem, então eu não estou pronto para começar a explicar o que você sabe, o que cada função está em, como ela funciona, certo? Em nenhum lugar apenas focando em configurações de linha baseadas, porque nós tiramos essas coisas do caminho para começar, modo que quando começamos nosso desenvolvimento, você não depois de voltar a fazer essas coisas novamente. Não vamos voltar atrás aos nossos projetos no início daquele arquivo CS. Eu não posso enfatizar o suficiente que a documentação é muito, muito importante. É irritante, mas é importante porque, você sabe, se nós fornecermos bons documentos, isso reduz a necessidade de as pessoas contactarem você
para obter apoio. Então o que vamos fazer é aumentar as capacidades dos documentos gerados automaticamente. Então vamos , incluir o que chamamos de documentação externa,
que é padrão no Visual Studio bem depois da vizinhança, mas vem no Visual Studio. Mas então swagger pode realmente tirar proveito dele e incluí-lo em sua bela documentação. E então o que queremos fazer é ir para o projeto, clicar com o botão
direito, ir para baixo para propriedades em, em
seguida, dentro de propriedades. Vamos construir uma vez na construção, vamos fazer duas coisas. O primeiro 1 para mim é esta Uma palavra diz tudo colocar caminho ou saída. Vejo o arquivo de documentação XML. Nós só pegamos isso. Então o que estamos vendo é que, em segundo plano, queremos um projeto. Os documentos mantêm seus próprios documentos. Isso e será na forma de um arquivo XML. Além disso, uma vez que incluímos que vamos começar a receber alguns avisos são barcos que você sabe que eles precisam de cada função para ser documentada. Vou mostrar-vos um exemplo. Então eu vou para mim essa mudança,
salvar, e, em seguida, voltar para home controller. E então você começa a notar que você está recebendo linhas verdes, hum, sob a classe, sob o nome fora da ação. E se você acabou, a função é dizer ou o ar. Oh, desculpe. Vendo comentário XML ausente para membro visível publicamente que, assim que uma vez de uma
função de propriedade pública ou classe, eles esperam que você está indo para documentá-lo. E isso é o que qualquer um traz essa opção significava. Então, quando eles dizem documentado, quero dizer, você coloca três, você sabe, que é um comum comum comum rastreado. Mas quando você coloca três fora desses, ele gera esse resumo, e então você vê isso? Então, esse aviso usando o velho ido Tudo bem, então se você fizer isso sobre cada um tipo de gera um resumo onde ele diz ok, retorna, queremos dizer às pessoas o que ele retorna. Deveríamos dar uma descrição dessa função,
nossa classe, nossa classe, seja lá o que for, certo? Então isso é muito legal. É um tipo de auto gerado. Se você tem parâmetros. Eu tenho um perímetro de entrada aqui. É ver o nome Param I d. Você sabe, então é muito legal. Mas a coisa é que você pode ficar irritante, eles podem ficar irritantes, especialmente quando você não precisa documentar cada público enfrentando, hum, propriedade e função. Certo. Então o que vamos fazer é dobrar dinheiro para a mesma janela de propriedades e construir sobre nós vamos suprimir o aviso. Então, se passarmos sobre a flecha Oh, bem, eu sinto muito. Eu pensei que eles iriam mostrar-lhe o número do erro, mas geralmente há como um identificador de cordão associado com o nosso Você vê se lá vamos nós. Então, se você descer a lista da era, então você olha para os avisos que você está recebendo. Você vê que há um número associado com o aviso. Então você vê, apenas habilitando isso Não, é esperar que eu vou colocar esse comentário XML em cada coisa que é pública, e isso não é prático. Mas não preciso documentar o ventilador de início e essas coisas. Então o que eu quero fazer suprimir este tribunal de advertência, que é 159 Uma vez que eu voltar para a minha janela de propriedades e você vê esta opção enquanto eles suprimem os avisos, eu já estou suprimindo 17 01 e 17. Tenho certeza que você também está. Mas fomos em 1/3 1 ponto e vírgula. 1591 No quando eu marcar, salve e volte para o meu controlador. Então você vai ver que essas linhas não vão para cima se eu for para o ar, menos que você veja que não há mais avisos dessa natureza. Então, ao suprimir o aviso, é basicamente dizer isso. Quero que saibas que não te vou chatear com este,
certo? Quero que saibas que não te vou chatear com este, Mas à medida que avançamos , no
entanto, , no
entanto,
quando fizermos nossos controladores vamos querer colocar em nossa documentação resumida qualquer pouco continuar com essas configurações. Eu fiz o compartilhamento de cadeia para habilitar a documentação XML no arquivo de volta no meu início de que CS há algo que eu preciso fazer em. Tenho que voltar aos serviços de conficker. Função depois das linhas onde eu montei,
lesma Jen,
eu não vou dizer onde você pode encontrar a excelente documentação. Função depois das linhas onde eu montei, lesma Jen, Eu sinto muito. Não, não está por dentro. Certo. Desculpe. Então é dentro daqui que eu vou continuar a documentação, então eu ainda estou dentro das chaves de origem do futebol. Fizemos as coisas escuras do futebol. Em seguida, sob a coisa ponto mais forte, eu vou continuar, então eu vou declarar algo e ver bar exposta extensão divertido começar para o arquivo estrela X. Você abreviação para seu arquivo de quantidade. Você pode escrevê-lo simplificado, se quiser. Isso é bom em. Depois fui para a direita. Então é um caminho muito complicado aqui, então eu usaria interpretação. O que eu vou ver é, hum então eu tenho um cifrão aberto e fechar aspas dentro das aspas. Coloque minha cinta aberta e fechada nisso. Estou à procura de assembléia. Muito bem, pontos,
comecem a montagem em execução. Então a inteligência irá ajudá-lo ao longo do caminho. E isso é um canal de função. E então eu estou recebendo o nome certo pontos em. Isso também é um telefone mostrado lá. Diga esse nome. Tudo bem, então isso está basicamente dizendo para obter a execução de um semelhante. Então este sou eu pegando o caminho onde o projeto fica. Então este é um tecido muito dinâmico e eu poderia notar o literalmente dentro para o projeto, mas então isso seria exclusivo para o projeto e eu teria que fazer isso toda vez . Tenho um novo projeto. Então, fazendo assim, eu só estou dizendo qual é o caminho no nome deste projeto? Certo, então. Eu só quero tudo fora que upended toe o ponto de extensão xml Então você vai encontrar um arquivo
XML este nome onde quer que ele esteja, certo? Então é apenas uma boa dinâmica. Estamos encontrando o fogo externo. Então, habilitando isso, você veria que este é o caminho que gerou um arquivo XML com o mesmo nome de um projeto. Então isso é tudo o que estamos fazendo aqui mesmo, tentando digitar Oh, tudo
isso como uma coisa estática. Estamos apenas sendo dinâmicos, para que você possa copiar em pedaços esta linha em tantos projetos quanto você tiver habilitado essa função para a excelente documentação. A próxima linha que vemos ex caminho fornecer expat físico, Palavras de caminho não combinam. Passe a combinação. Então você vê, eu estou recebendo a parte do leão vermelho. Então isso significa que eu preciso incluir elaborados. Posso ir para a linha vermelha. Mantenha pressionado pressione enter on. Então eu vou receber a sugestão. Sob as lâmpadas, tudo o que preciso para incluir o sistema que possuo uma vez que essa pedra, tudo bem. Então, se você se livrar das linhas, você só precisa do dedo sobre elas. Acerte o rapaz Bold. Você vai dizer que biblioteca você está perdendo assim parte. Mas combinem dentro dos índices de incêndio. Eu vou dizer até o diretório baseado em pontos de contexto. Tudo bem, acalme todos os arquivos X. Tudo bem, então depois de fazer essas ferramentas e então eu estou apenas recebendo o arquivo XML praticamente que eu vou dizer, Veja que incluir comentários XML em. Então eu estou dizendo que você pode encontrar os comentários no caminho X. Tudo bem, então o que quer que coloquemos na seção de resumo de qualquer função ou fogo que temos, vai entrar nisso. Ele está em um arquivo que vemos sendo gerado tendo no arquivo de documentação XML em. Então estamos vendo que quando o swagger está gerando sua documentação, ele deve levar em conta o conteúdo desses incêndios. Então eu vou colocar no verão é este é um artista controlador de teste ap um controlador em então este é apenas para ver recebe valores. Este vai dizer “levantar valor”. Tudo bem, então eu só estou colocando algumas coisas. Então mais uma mudança que vamos encontrar com o batedor é uma linha sob Struggar. Você eu a entendia. Você depois que definimos o suco no arquivo, Eu vou colocar mais uma linha lá para dizer, si dot escreveu prefixo é igual. Vai bem abrir e fechar aspas. Tudo bem, então isso vai fazer com que venha na partida. Então, você sabe, quando entramos no modo de depuração em vez disso, ele vai no reboque você sabe onde depois dos irmãos chegar lá, ele deve aparecer na primeira página. Então vamos ver se isso funciona em Douala. Então eu só entrei em Debo humor e a primeira coisa que surgiu foi, ou documentos slugger. E se você olhar mais de perto, você vê que alguns dos documentos ou alguns dos comentários que eu coloquei para as opções estão lá, certo? Então eu disse, obtém valores certos para que um em recebe um valor. O que deve ser recebe um valor cerebral que. Mas a questão é que funciona, certo? Então é assim que montamos futebol, e mais uma vez é muito importante que mantenhamos esses documentos. Há uma série de outros atributos que serão adicionando ao longo do caminho, e você só veria futebol inteiro vai envolvê-los e incluí-los na documentação e torná-lo mais fácil para nós compartilhar nossos olhos AP segredos com outras pessoas.
9. Configurar o registro usando Configure: Ei, pessoal, bem-vindos de volta neste vídeo, nós vamos estar configurando alguns utilitários de registro em nosso projeto de relações públicas. Agora, quando eu digo saudade , quero dizer, vamos definir a funcionalidade para que possamos basicamente escrever ou configurar um mecanismo pelo qual você pode anotar quaisquer ações que considerarmos importantes em nosso aplicação. Então, o importante sobre a saudade, especialmente em um FBI, é que isso ajuda você a desmascarar. Isso ajuda você a rastrear exatamente o que realmente aconteceu em onde Soto conseguir isso. Nós vamos usar no login. Existem outras bibliotecas que você sabe que são boas. Eu uso amor para redes também, mas neste vídeo para este servo roxo abusando log final. Então, para começar, nós vamos passar sobre o novo entra diretamente com o projeto, ir para gerenciar, obter pacotes, então nós estamos indo para bro em nós vamos procurar e isso é uma letra e L ou G e um log. Não, eles são o número deles aqui. Mas o que realmente nos interessa está apaixonado por extensões, esse desejo. Tudo bem, então vamos clicar nesse. Não o carregue em nossos projetos. E uma vez feito isso, podemos sempre ir para o instalado e verificar se eles estão movendo o filtro e mostrando tudo o que está dentro ou projeto, hum, cortesia fora de novos resultados. Muito bem, a
seguir, queremos criar um conflito. Fatos já configurados este conflito finalmente pode encontrá-lo no recurso é para este projeto , então você pode realmente apenas ir em frente e copiá-lo. Andi, crie um arquivo chamado End Log Dot condenados. Então, para criar um arquivo, basta
clicar com o botão direito do mouse no projeto ir. Para adicionar no novo item na verdade? Na verdade, não importa qual. Eu só uso um arquivo de texto, mas ele deve ter a extensão confortável ponto. Tudo bem, então você pode usar um arquivo de texto e você vê no log dot conflito como o nome em. Então você pode apenas colocar o conteúdo em. Eu não vou passar tempo escrevendo com você, mas vou explicar o que está no arquivo. Então o arquivo é basicamente apenas inicializando em log xml. Bem, é uma configuração XML para quatro no log, então ele está apenas fazendo alguma inicialização sit no esquema de que introduziu alguns er
inicializar básico em. Então temos o caminho. Então, o caminho interno do arquivo, eu estou sentando-o para algum caminho na minha máquina. Tudo bem, então você pode mudar isso. Então, a coisa mais fácil, talvez para você, para que você possa ver onde é sua escola de troncos. Basta colocá-lo em sua unidade principal, chamar em barra e provavelmente criar uma pasta chamada Logs. Então, vou fazer isso mudá-la. Então é o tronco de barra C. Então, um c dois-pontos barra registra logon interno, em
seguida, para o nome do arquivo. Então, os alvos apontam para arquivos de sangue. Então o alvo do amor fogo. Ou seja, onde deve toda a escola de registros. Tudo bem, então vamos dizer, encontrei-o. Então você pode colocar em nosso caminho mais uma vez, talvez para sua pasta de projeto ou para algum lugar que é muito fácil de encontrar. Certo. E depois deite-se aqui. Ele está basicamente dizendo, como você quer que eu nomeie esse arquivo tão bem, isso está realmente dizendo “Segure seu mutilado chamado o fogo”. Então, a chamada isca de tubarão desbloquear gorducho para cada dia que você realizar ações. Ele vai olhar para a data e gerar um novo arquivo. Certo. Então, torna mais fácil rastrear o que aconteceu ontem versus semana passada versus hoje, especificamente em. Então as cargas estariam inteiras. Se cada linha olhar para que você vai ter o bit longo o nível que significa erro ocidental em para você. Então veja essa coisa de nível em, então você vai ter a mensagem real relativa a essa linha. Tudo bem, então isso é o que está em algumas regras, como na entrega mínima do máximo de música de terra. Mas acho que isso é bom o suficiente para nós. Os lucros. Vou guardar isso mais uma vez. Isso está incluído com o vídeo para que você possa ir em frente no Fetchit se desejar. Tudo bem. Então, em seguida, precisamos configurar para classes e configurar ou iniciar para que possamos apenas fazer uma mudança de
controle de construção rápida e ser apenas para garantir que não introduzimos nenhum heros para quebrar ou programar Andi. Foi bem sucedido. Então podemos prosseguir alguém para adicionar a pastas ao meu projeto. Então eu vou clicar com o botão direito do mouse em Adicionar nova pasta Onda em então o 1º 1 vai ser contratos em, em
seguida, o 2º 1 Então eu vou para lá novamente, certo? Clique em nova pasta. E este foi a estes serviços. Tudo bem,
então, sob contratos e quer criar arquivos de classe em com clique direto novamente clique em adicionar classe em. Então eu vou ligar para este em que eu serviço mais tempo. Então, nos serviços. Vou fazer a mesma coisa. Crie uma aula, e eu vou chamar este serviço mais longo. Então um é um serviço mais longo que está sob os serviços para ela no outro é eu
serviço mais longo sob a pasta de contratos? Não, sob eu amo os serviços ou eu amo um serviço. Desculpe, vamos criar um velho. Desculpe, este vai interferir. Então, a convenção geral de nomes para Interferes é que você colocou eu, um na frente do joelho. Certo. Interface pública, não classe, mas interferir. Por isso, é mais fácil descrever a classe e alterá-la para a interface. Mas certifique-se de não perder esse passo. Tudo bem, então dentro da interface do anti LaVoy, faça o login quatro, então este filho do telefone vai pegar um parâmetro, hum, fora do tipo string e vamos chamá-lo de mensagem. Tudo bem, então tem mensagem
longa em quatro cordas. A coisa é que existem basicamente alguns tipos de coisas que vão querer amar pode estar em para avisos, mensagens de
depuração e definitivamente erros que querem Sierra. Então nós temos uma função para um log em quatro em, então nós estamos indo apenas para criar três outras funções para aviso. Então eu apenas duplicado que eu apenas usar o controle e ser assim, selecionando a terra apenas fazer controle e ser qualquer duplicata que forro por isso tem muito tempo em alerta aga completo sobre. Então eu vou ter log,
depurar e, em seguida, log erro. Tudo bem, então eu tenho essas quatro funções que serão lidar com o registro em baseado em como ele vai
ser configurado. Cada um aparecerá de forma diferente dentro do arquivo de log. Tudo bem. Então seria mais fácil para nós ver todas as flechas cortadas através do ruído fora em quatro. Talvez avisos sejam menos úteis, e definitivamente não precisamos do livro em certas situações. Então é isso para os nossos contratos? Posso guardar isso e depois ir à missa. Agora o serviço está indo para o pé. Tenha as definições para as funções que você acabou de delinear no interferir. Então eu vou fazer Colon. Eu serviço mais longo. Tudo bem, então isso é o que eu chamo de herança. Então, a classe vai ser herdando da interface em então. Por causa disso, Smith diz que preciso incluir algumas coisas que faltam. Então eu estou indo apenas para usar a lâmpada colocar na instrução usando em, em seguida, mais para isso , vai me dizer que eu fui implementado depois. Não, vá em frente e implemente os interferes também. Não, eu entendo as definições de função dela, hum, por função que foi declarada no arquivo do contrato. Agora, depois de fazer isso, eu preciso ,
uh, uh, de elementos, então ah, propriedade. Praticamente alguém tem estática privada, e então isso vai ficar fora do tipo I por mais tempo. Por isso, estou mais longe da lei final. Glamorous depois incluem cedro usando n alto. Então eles têm sua própria costa madeireira. Mas eu estou usando n log, então eu quero ter certeza que eu estou usando no log direito? Eu mais, mais tempo. Então isso vai ser um gerente de amor igual. Alguns inicializando meu objeto mais longo em Gwen para usar Obter classe atual por mais tempo. Tudo bem, então saiba que eu tenho esse forro. Posso invocar este objecto ou isto. Vamos chamá-lo de objeto para que eu possa chamar esses objetos. Noto carregar todo o meu madeireiro. Então vamos começar com as pessoas de registro agora mesmo. É apenas durante não são implementados. Estou implementando. Então eu vou dizer quando é o que eu chamo de desculpa quando eu chamo a função de depuração amorosa. Então eu quero que meu dedo mais longo crie uma mensagem d ousada. Veja que, em seguida, o que ele vai enviar é a mensagem que eu passei para a função . Tudo bem. E isso é muito mais longo. Log Arrow vai fazer a mesma coisa. Estou chamando meu erro de ponto de objeto mais longo. Tudo bem. Dentro e fora do curso, sou
eu que estou controlando quais mensagens realmente estão sendo transmitidas. Então, se é um erro e eu devo ter certeza que eu passei no ar uma mensagem para que quando eu verifiquei os logs eu vejo o árabe que estava jogando tudo bem, então eu sei que eu tenho certeza que você tem o zumbido dele se você não tomou e possivelmente em aleatório off . Mas eu estou esperando que você já posit vídeo e terminar um construtor para esperar que você escreveu a mesma coisa que eu ia ler sobre onde ambos carrinho andi Pouco mundo para mais informações ponto para
registro por mais tempo que Warren para avisado. Então estamos todos na mesma página. Agora temos mais uma mudança para fazer. Isso é para o assustado sobre o CSO. Temos toe adicionar que os componentes do nosso meio onde as configurações e lembrar
questões ordem sempre receber os controladores mentindo para o último. Então, qualquer outra coisa aqui adicionando apenas um pouco acima da direita. Então, para no log art para o serviço mais longo a ser inicializado em nosso aplicativo que
iniciar , eu vou dizer serviços encaixados. Adicione Singleton. Então você pode saber adicionar o serviço em todo o meio estavam na inicialização fora do aplicativo, adicionando qualquer singleton ou transiente ou adicionar escopo. Então, quero dizer, estamos usando uma única vez, então eu só vou dizer adicionar único Thanh eu serviço logger em. Vou explicar a diferença Cidade na única cidade sublinhar PTA eo transitório mais tarde em sua não sobrecarregando com informações ainda. Então o que estamos fazendo é dizer que queremos criar uma instância Singleton fora do serviço
neste é o nosso serviço. Realmente Nosso Este é o nosso contrato para o serviço e esta é a implementação fora do contrato. Então, qualquer coisa que está faltando, você sabe, você apenas sobre ele e incluir a biblioteca de acordo até que você não veja nenhuma linha verde sobre isso, nós teríamos estabelecido no amor em nossa aplicação em todo o nosso núcleo Donna aplicação na carne que está pronto para uso. Sei que nos estabelecemos no amor. Precisamos testá-lo, certo? Então o teste real seria tentar algo ou colocar em uma linha fora do campo que deveria criar um log e então verificar se muito foi realmente criado. Então eu vou falar com o meu controlador sobre o que vamos fazer é colocar em algumas linhas em talvez duas ou quatro opções de maricas. Quando atingimos a ação que ele deve escrever o log que a ação foi atingida para
começar , o que precisamos fazer é executar essa coisa chamada injeção de dependência, onde nosso serviço vai ser injetado no controlador para que o controlador pode interagir com estão em serviço de amor. Certo. Então nós fazemos referência sobre o serviço através do contrato, alguém para dizer privado, e eu sou nós apenas chamá-lo de Andi só leitura. Vejo que serviço mais longo. Certo, então esse é o nome do meu contrato que eu criei. Eu posso apenas ir em frente e quer usar para fora, entrar ou apenas escolher sobre o responsável para incluir qualquer dependência ausente em, em
seguida, sublinhar mais tempo. Então esse é o nome dos meus objetos. Isso é quando eles incorporam o serviço que está registrando. Mas então para injeção de dependência, precisamos do dedo do pé. Fique limpo por dentro. Off. Sobre. Controlador. Sobre. Construtor. Certo. Então eu vou dizer que controladores domésticos públicos são construtores. Uma função padrão que é chamada uma vez que uma classe é inicializada. Certo? Então eu vou dizer que uma vez que você ligou para o controlador doméstico, eu quero que você inicialize I serviço mais longo. Eu vou apenas passar no olho serviço mais longo em, em seguida, os parâmetros eu mais tempo para que a coisa
legal sobre Donna Court se recusou a fazer injeção de dependência em versões anteriores fora NBC, precisamos de ferramentas de terceiros como injetar ou algo assim assim, mas NBC torna que o núcleo net ponto desculpe torna muito fácil apenas a dependência Injectar porque ele vem biscotti construído em todo este ecossistema envolve injeção dependência. Então isso reduz algumas obstruções, , algumas duplicações e fazer as coisas mais de uma vez, reduz a necessidade de alguns fora disso. Então eu estou indo apenas para inicializar nosso objeto somente leitura na pontuação mais longo do objeto mais longo que vai ser passado em quando nossos controladores domésticos chamado. Sei que inicializei meu objeto. Não posso interagir com o serviço. Então, se eu quisesse permitir algo que eu poderia dizer sublinhar mais não em então eu tenho acesso a todas as minhas funções que eu acabei de declarar. Então eu gostaria de talvez fazer em quatro em DSI acessado, acessado controlador home. Tudo bem, então eu vou dizer no amor que você acessa o controle doméstico em eu
vou vou tentar e fazer um diferente, alguns para parar isso. Então, sob os gets, digamos que eu log Debo em vez disso. Tudo bem, vamos, então. Eu vou dizer o valor de Deus em não sei Post. Baseado nisso, vou adorar um erro desta vez. Então, em seu post, eu vou dizer que este é um erro, algo assim no último sob. Vamos tentar as pistas. Eu ia ficar um pouco complicado,
mas tudo bem. Eu ia ficar um pouco complicado, Podemos conseguir isso mais tarde. Então este vai ser um aviso. Isto é um aviso. Tudo bem, sobre isso vai ser aviso de amor. Então eu desisti. Todas essas funções são ações em vez com funcionalidade de saudade. Então vamos tentar alguém para entrar de barco ancorado, e eu também vou lançar carteiro. Então, se você já o instalou ou se você ainda não o fez, então você pode ir em frente e instalá-lo e iniciá-lo. Tudo bem, então nós vamos colocar em nosso primeiro AP que eu chamo. Então eu apenas copiei o URL de nossas sessões de depuração, disse US escola anfitriã local em quatro. Porque o meu porto vai ser diferente do seu. Então, seja lá qual for a base que você está. Em seguida, no Carteiro, eu disse que você é l slash ap I slash home. Então esse é o nome do meu controle. A p a não está situada em casa. Quando eu faço isso, eu tenho que ir direto para a direita. Se eu fizer home slash cinco, em
seguida, enviá-lo envia valor para o dedo do pé. Certo, então essa é a desculpa. Então deixe-me mostrar o que está acontecendo. Então, quando eu fui para casa, ele foi para este aqui. Então, a expectativa é que no arquivo da lei, eu fui ver esse registro antes dos resultados chegarem, certo? O mesmo esquecimento veria uma depuração. E eu suponho que o valor em torno realmente que é cerebral, que tudo bem, tem um valor devolvido o valor em seguida, vamos apenas fazer um post. Então, para se opor, entendeu? Nós temos feito obter alguns apenas vai remover esse valor. E eu só tenho que mudar esse pedido, parar o post e enviar. Eu nunca recuei um pouco estava indo um pouco rápido demais. Muito bem, então, então,
de
volta ao nosso controlador,
temos o nosso posto. volta ao nosso controlador, Chegamos lá através de um P? Eu corto para casa. Então é isso que temos. É um método pós-venda. Então, não estamos usando gets, mas estamos usando post. Está bem, mas está à espera de algum valor do corpo. Certo? Então isso significa que usar carteiro temos dedo do pé colocado em algum rosto são algum valor no corpo. Então, se você clicar que o corpo para fora assim que aparecer você infiltrar a autorização de Arum, cabeçalhos e corpo direito sobre. Em seguida, o padrão selecionado é conhecido. Então temos que ir para onde? Dedo cru. Tudo bem, então você tem maneiras diferentes de enviar dados para o corpo fora do pedido que está sendo enviado. Certo, então vamos selecionar um cru e então vamos sair do teste Jason. Então você pode ver texto. Jason é o que queremos. Tudo bem. Então, se você ver nos enviou uma mensagem de texto, clique nele e você vê Jason na lista em, então nós vamos apenas digitar uma string, e nós vamos dizer valor de teste. Tudo bem, , quando enviarmos, vamos ver se esse funciona. Tudo bem? Então não vemos nada voltar porque,
bem, bem, não
está retornando nada, mas estamos vendo um status. Ok. Certo. Eu poderia até modificar isso,
que poderia devolver outra coisa. Eu poderia até modificar isso, Mas não é para isso que estamos aqui. Nós testamos o post nele passou em então o final seria outro. Que queremos testar seria a exclusão. Então, se você olhar para a diretriz ou assim para começar a fazer, veja FBI Slash e é mais uma vez por que a documentação é tão importante. Então é o FBI, corte e p i com barra de ação cinco. Certo, então vamos tentar isso juntos. Então, desta vez estamos fazendo um deletes. O tipo de solicitações não é poses, não get, mas é excluir direito em. Espera-se que eu passe valores suficientes. Vou salvar cinco. Não preciso do nosso corpo de alguém para dizer de conhecido sobre o motivo. Não, não
preciso dos nossos corpos do que sou. Se você olhar para o post, Eu também olho para coloca que você vê de tsunamis corpo está esperando o valor dos direitos do corpo . Então eu tenho esse mau hábito ter uma mão pesada quando se trata de suprimir o turno de qualquer maneira,
então vamos tentar apagar. Então eu tenho esse mau hábito ter uma mão pesada quando se trata de suprimir o turno de qualquer maneira, Então eu apenas mudar que para excluir uma barra ps É um cais com barra de ação cinco de repente enviar e, em seguida, ele vai responder, Okey, então isso significa que ele bateu. E se você não tem certeza, você sempre pode colocar nossos pontos de pausa na ação. Oh, porque eu quero dizer uma modificação. O ponto de interrupção funcionará após reinicializações, mas você só pode colocar pontos de interrupção em uma linha fora da ação em. Em seguida, certifique-se de que ele acerte a direita no seu clique enviar. Você vai fazer uma pausa para o Depot Guy no lugar certo, qualquer buraco que eu acabei de testar todas as opções em que colocamos um tribunal mais longo. Então o que eu vou fazer é encontrar esse caminho. Então esqueci o caminho. Meu caminho é C barra projeto livraria barra um ps projeto barra barra bloqueios. Vou falar sobre o Peel que abre a janela do explorador. Eu vou navegar até ele aqui estou. Então, navegei no caminho do arquivo no meu sistema, e vejo o arquivo recém-criado. Então, se eu clicar com o botão direito do mouse e vamos dizer aberto com Notificar mais mais, então eu vou ver linhas seus pedidos que eu enviei para que, primeiro lugar, você pode notar que ele tem na data em que estava no carimbo de data/hora em, mas tem em o tipo fora da linha de log ou o nível. Certo. Então nós sabemos todos os em quatro com todos fora dos eros. Sabemos todos os avisos, certo? Então ele nos diz o estreito não onde eles eram apenas uma informação geral ou não
foi erro que ocorreu. Ou se você apenas começar a avisar fora do curso onde os que estão determinando qual deles foi
escrito estavam no tribunal. Então, como desenvolvedor, você será capaz de saber que quando isso acontecer, colocá-lo para baixo como garantia. Quando este acontecer, coloque-o como um erro. Então alguém chama em respostas ou, você sabe, eles experimentam essa dificuldade neste momento. Neste dia, você pode encontrar o arquivo, encontrar o carimbo de hora em, descobrir qual seta pode ter ocorrido que contribuiu para a experiência desse usuário. Então é assim que configuramos o registro em nosso p I. E é por isso que é relevante para a nossa aplicação em, você sabe, você pode revisá-lo mais uma vez. Isso está incluído com o recurso é para vídeos. Então esse é o arquivo de configuração excelente em. Você pode ir em frente em configurar todas as outras coisas para um desejo
10. Configuração de CORS: nesta lição, vamos configurar nossa política de curso. Nenhum carro é curto de ou é um acrônimo de origem cruzada. Compartilhamento de recursos Praticamente é um mecanismo que dá direitos a outros usuários que não estão no mesmo não significa que eso. Se no aplicativo é hospedado em outra máquina da minha máquina em que ele está tentando interromper é o meu EPA. Ele falharia basicamente do jeito que temos. - Não. Então a política do curso é basicamente uma maneira de permitir a interrupção através do tubo para que , você sabe, todos de qualquer lugar do mundo possam interagir com o FBI, se necessário. Então eu estou aqui no meu ponto de inicialização CS fogo ligado. Vamos descer a função de configurar serviços e então eu posso adicionar isso logo abaixo onde estamos inicializando oh, nossa identidade na estrutura de entidade. E eu coloquei isso acima da implementação do slugger. Então o que eu vou dizer aqui é que os serviços ancorados. núcleo de Deus. Tudo bem, então aí está, nosso curso de inteligência vai ajudar. Então eu vou colocar o meu semi-cólon, mas então precisamos de algumas opções, certo? Então eu vou usar toda a minha Andi começar como uma expressão lambda falando,
tudo bem, tudo bem, e nós realmente vamos me levar lá,
abrir e fechar, Curly breeze on, em
seguida, dentro fora isso em vez do brisas atuais, vamos ver ou não adicionar política. Então, depois da política do Adam, vamos chamar-lhe a política do curso. Então eu entendo as principais respostas lá está claro o que publicou? Isto está ligado, então. Vamos lá, então precisamos de outro. Então muitas vezes, você provavelmente está se perguntando, lá você não pode todas essas configurações e você provavelmente está se perguntando,
OK, Home, Home, eu suponho. Memorize essas coisas. Sabe, honestidade. Você provavelmente vai memorizá-lo. E você provavelmente se acostuma com o padrão. Andi, mesmo que não o faças, aí está. Há muitos recursos ali. Isso irá ajudá-lo ponto Net core tem grande documentação. Então, enquanto eu vou junto, eu posso estar usando tokens diferentes, então você pode não ver pessoas usando ou você pode não ver construtor, mas é o mesmo conceito, certo? Então estamos fazendo. Sei que só construindo a política. Então eu vou colocar o construtor em outra linha, então, você sabe, ele não se arrasta, tudo está claro. E então eu fui para dizer, pontos
construtor muito qualquer origem. Então esta,
esta política ou apesar da política, está basicamente dizendo que você sabe, em qualquer lugar que a chamada são os direitos do servidor de chamada ou um aplicativo que está fazendo, hum, contato com o meu pai. algum lugar que vem do “Olá “? É direito em, então sob isso eu vou dizer ponto sobre. Eu vou dizer olá. Qualquer método. Então isso significa que eu não vou restringir ninguém Toe só será capaz de ligar para certas partes
do FBI e não chamar outros. Então mais um onde eu estou vendo um baixo qualquer cabeçalho porque pode haver cabeçalhos. Ainda não sei que rebatedores vou precisar nas minhas chamadas do FBI, por isso não quero colocar restrições nos cabeçalhos sobre “não “ruído”. Só estou seguindo qualquer caminho fora do curso. Podemos restringi-los de outra forma, mas é bom ter uma política aberta, pelo
menos com base no contexto. Aqui. É um bom momento para a política aberta, e então restringimos o aplicativo que em vez de um nível global agora, depois que fizemos isso e construímos essa política. Temos mais duas linhas fora do tribunal que precisamos escrever. E isso é conhecido na configuração. Então fizemos isso nos serviços de configuração foram adicionados esse serviço para poros? Não, precisamos soltar o dedo do pé. Sabe como deve estar se comportando. Então eu vou fazer isso logo acima usar enraizamento em. Vou dizer que use núcleos. Certo, alguns inquilinos que mais usam núcleos no dia. Eu tenho que especificar qual política. Então acabamos de nomeá-lo aqui. Nós apenas construímos uma política e damos a ela o nome, política do
curso. Alguém para reutilizá-lo. Não te ouço pontuações. Estamos usando a política do curso em então estamos praticamente acabados. É isso. Então nós adicionamos o aplicativo de armazenamento de núcleos e sabemos que estamos prontos para um pouco sobre interação
11. Analisar e adicionar mudanças no GitHub: Ei, pessoal, estamos de volta. E nesta lição, vamos simplesmente revisar o que fizemos ao verificar nossas mudanças no reboque. Argueta Balcones. Então sei que tenho certeza que já nos inscrevemos. O que queremos fazer é adicionar nossos novos projetos ou projeto atual como um repositório em nossas
varandas do gueto . Então, para começar com
isso, é relativamente fácil. A primeira coisa que você quer fazer é olhar no canto inferior direito em um canto e você vai ver são mas em seus vestidos fora do controle fonte para que você possa clicar sobre isso. Então você pode escolher obter. Portanto, se você não vê isso se você não vê no controle de origem em nosso se quando você clica nele , você não vê get. Isso significa que você pode ter perdido algo na instalação para que você possa ir em frente E não Senhor as ferramentas de terceiros para o estúdio visual ou rever os vídeos de isolamento que você
teria passado antes neste ponto em, certifique-se que você não perdeu nenhuma etapa de qualquer maneira, se você vê-lo, você pode continuar para clicar em get, e uma vez que você fez isso, você verá algumas alterações na interface. Um que você não vê mais isso. Mas isto está no controle da fonte. Mas, você sabe, veja uma que diz livraria A P. I. E você vê a filial sendo chamada de Mestre. Muito bem, a
seguir, vais querer publicar para te levantares. Então você vê esta nova equipe Explorer mijar e vir para cima e você vê empurrado como seus
serviços de desenvolvimento . Nós não estamos usando eles ups, mas nós vamos estar usando get hub Talvez mais tarde e eu posso configurar desenvolver século como isso funciona. Mas agora vamos nos concentrar em sair. Isso é mais fácil de começar e então eu vou em frente e clicar em publicar para obter ajuda. Você me pediria para verificar meu cone de usuário. Portanto, se você ainda não assinou isso do que pode, provavelmente será um problema para entrar. Hum, se você já entrou então você vai se parecer com isso. Então, basta confirmar que pode mudar o nome, se quiser. Eu vou embora. Minha Andi pode adicionar uma descrição, se desejar. Se você torná-lo privado, isso significa tudo o que você será capaz de vê-lo e interagir com ele, a menos que você convide diretamente alguém para vir, colaborar com ele com você. Eu vou deixar o meu em Ticked on Click Publish para que ele seja um repositório público, publicamente acessível. Então o que vai fazer é criar o repositório. Sincronizar, certifique-se de que ele empurra seu ponto com muito gueto sob o meu perfil. Agora, quando eu conseguir esperança, eu vou ver todos os meus repositórios, e eu vou ver o meu recém-criado uma livraria AP I. Quando eu clicar
nele, ele vai navegar para o espaço. Então daqui, eu posso adicionar uma descrição se eu não colocá-lo lá antes no meu site, você sabe, preencher como uma leitura rápida para dar algumas informações sobre seus positivos. Vou fazer tudo isso aqui. Você pode ir em frente e fazer seu próprio barco quando nos reunirmos,
e então algumas informações devem estar lá. Mas sim, é
isso. Então, saiba que se o seu computador falhar, é que você sempre terá um backup em Get Up. Você sempre pode voltar para clonar ou não carregar onde você pode simplesmente abrir no Visual Studio vai descer para a sua máquina você pode abri-lo e começar a trabalhar novamente. E essa é uma das principais vantagens em usar 1/3 partido,
hum, hum, controle de fonte hospedada a
frio fornecido como gueto, onde seu cabo estará sempre em algum lugar seguro. Se mais tarde você quiser alterá-lo de público, você pode ir para as configurações em. Você pode gerenciar o acesso tão bem. Eu não acho que você precisa ir para gerenciar o acesso deles atrás. Assim que você clicar em configurações e rolar para baixo
, você verá. Torne esta reportagem privada para público. Você pode transferir a propriedade ou excluí-la se desejar acesso gerenciado com um advogado para convidar outras pessoas para colaborarem com você.
12. Crie banco de banco de banco SQL Server: Ei, pessoal, neste vídeo, nós vamos começar a projetar o banco de dados que vamos usar pelo menos os
dados base que eu é que vamos usar para este projeto. O cenário geral com o qual estamos trabalhando é aquele em que temos uma livraria no dia. Quer que desenvolvamos um AP porque, bem, eles têm. Há uma livraria, eles têm uma base de dados. Eles estão armazenando dados sobre os livros e autores. A Andi. Então, o que acontece, no entanto, é que eles querem realmente fornecer suas informações sobre seus livros e seus
autores para terceiros, hum, pessoal na melhor maneira de fazer isso é através de um E.P. Para que diferentes sites possam se integrar com seu banco de dados e extrair dados de seus livros em potencialmente até mesmo fazer compras através desses sites de terceiros. Então, os cenários, realmente que vamos construir um FBI em cima do banco de dados existente. Dito isto, os scripts para o banco de dados que estamos prestes a construir são fornecidos no recurso é assim, se você já deve sentir com a construção de um banco de dados a partir do zero, então você pode simplesmente não saber esse script e ir em frente e gerado em seu computador. Para aqueles que não são vistos, você sabe como confortável. Então você pode assistir. Este vídeo vai através da construção de toda a base de dados. Na verdade, só temos duas mesas. Um para os livros, outro para os autores. Nós vamos criar um relacionamento no dia como nós construímos ele dito, e você vai ver quaisquer pequenas nuances sobre a construção do banco de dados através do estúdio de
gerenciamento de sequelas . Se você quiser melhorar suas habilidades em desenvolvimento de banco de dados, que você pode conferir meu outro curso, que é intitulado Microsoft SQL Server Development para todos para que você possa verificar isso e melhorar suas habilidades em SQL over. Vou continuar, então já teríamos instalado o SQL Express, senhor. Um SQL Express. Se você tiver outra edição fora do SQL Server em sua máquina e tudo bem, você pode simplesmente ir em frente e exibir o estúdio de gerenciamento com essa instância sobre quando
começar de novo nesta instância, onde eu acabei de abrir o estúdio de gerenciamento e O Spotswood aparece. Então, para conduzir minha instância do SQL Express, eu apenas uso um ponto e, em seguida, sobre barra e na palavra esque UAL Express. Assim que eu fizer isso e puder me conectar, então eu devo ser capaz de obter acesso a esta tela. Então, nos bancos de dados, eu vou apenas clicar com o botão direito e dizer novo banco de dados. E, em seguida, a primeira coisa que qualquer um a fornecer é o nome fora do banco de dados. Vou chamar-lhe livraria. Tudo bem. Livraria, caixa de
camelo. Bigby Big é tudo o resto, a minúscula. Então eu só chamo isso de livraria Click. Ok, não, para chegar ao banco de dados, qualquer um para expandir bancos de dados. Então você vê que aqui eu tenho um monte de outros bancos de dados, mas o que nós estamos interessados é livraria, então você provavelmente tem um. E se você está em seus pés e você deve ser capaz de nunca chegar então nós descemos pequena livraria e havia mesas Actiq em. Em seguida, clicamos em novo. Então, tabelas radicalmente, mesa
nova. Tudo bem, então, que vai lançar o nosso designer de tabela Agora para mais designer de tabela, vamos apenas começar a preencher todas as colunas, o tipo de dados que cada coluna deve ter e se podemos aceitar nenhum valor nessa coluna ou Não. Certo? Então, a primeira coluna que cada entidade precisa ter no banco de dados bem projetado é um i d. Tudo bem, então eu seria representaria um fogo de identidade único, certo para cada registro que entra, eles podem ser identificada exclusivamente por qualquer valor que entre na coluna ID. Esse é o seu propósito, então o tipo de dados que estou usando para o meu próprio é int, mas então, quando é um único identificando honestamente o que você chama de chave primária, então para torná-la uma chave primária, eu vou apenas jogar grilos, clique com o botão direito do mouse
e, em seguida, você verá a opção definir a chave primária em. Então a próxima coisa que eu quero fazer é ter certeza de que o valor muda por si só todas as vezes. Então, sob propriedades de coluna, eu vou para baixo para aquele que diz que eu não vi especificação e, em seguida, eu vou
definir isso como sim, eu estou fazendo uma identidade. Assim que essa identidade, ele aumentará por um cada vez que um registro for adicionado, você pode mudar isso, mas para não, nós deixamos isso em paz. Em seguida, vou adicionar o primeiro nome. Assim, o primeiro nome do autor neste tipo de dados de quando usar environ char 50. Então Environ pneu está dizendo que eu vou ser história em texto sobre eu quero armazenar até 50 caracteres no valor de fora do texto. Tudo bem, em
seguida, onde o sobrenome, que também vai ser para convidar nossos 50 eu vou ter viol e então este eu vou definir marcas de caracteres ambientais porque, você sabe, no caso de você querer dizer coisas legais sobre Marcas de Autor significa que não há
limites perceptíveis . Portanto, é quase até a limitação de seu banco de dados versus sua máquina. Mas não há como 50. Você fez isso. Quer chegar a 50 caracteres. Tudo o que o 51 além será cortado fora de marcas. Não há nenhum número real em Limites escreve, em
seguida, perfil em. Então vamos dizer perfil. Ah, tudo
bem, bem, eu acho que bio e perfil são praticamente iguais, então eu só removo perfis. Então o autor tem o primeiro nome sobrenome bio. Se pensarmos em qualquer outra coisa ao longo do caminho no projeto e podemos adicioná-lo alguns apenas vai fazer controle s e salvar. Desculpe, fiz isso sem explicar. Então, apenas para salvar o nome fora da tabela, nós controlamos SRE não pode o disquete seu em. Então damos um nome a ele. Autor Clique em OK
e, em seguida, temos a nossa primeira tabela, que é autor da próxima tabela que queremos. Então mesas iraquianas novamente ir para novo ir para a mesa em então o estábulo vai ser livros. Então, se todos do mesmo padrão de design temos um 90 Eu estou fazendo um tipo difícil em um músculo para torná-lo uma chave primária em Definir para ser identidade. Tudo bem, então é claro, você sempre pode pausar o vídeo e rebobinar onde eu possa ter que rapidamente lá. Mas eu só pressiono. Então cada livro tem um título sobre o título vai ser Environ Char. Eu vou colocar o gráfico Environ aqui para ser 100 porque você sabe que você tem alguns livros com títulos longos . Bem, o ano em diante, então isso é sempre complicado
quando, quando se trata do ano no ano da publicação, você vê isso? Nós em inteiro que você salvar. Talvez convide os nossos quatro, certo? , Pode ficar complicado, então eu acho que porque não há tipo de dados de ano, também
há um tempo de batida no momento, mas eu não quero armazenar todo o tempo de escritura só para obter os direitos do ano. Então o que eu vou fazer é que eu vou contar como int, certo? Então, é
claro, quando você está criando o aplicativo, cabe a você garantir que os dados adequados sejam transmitidos ao banco de dados. Então, todas essas são regras. Você tem que estar atento, oferecendo colocar na ESPN, que é, você sabe, o número único de livros que ele pode ter sobre isso pode ser uma identificação única também. Mas você fora de ter coisas que fazem um livro, Uli, por ter o livro em si dentro do banco de dados, você quer geralmente ter certeza de que você tem uma chave primária que é separada e além de identificar fatores off Um livro. Tudo bem, um, eu vou colocar em um resumo para que o resumo seria como, você sabe, se você fosse anunciá-lo para alguém, deixá-los ler o resumo. Vamos ter uma imagem para este livro. Então, em uma imagem de pré-visualização sobre este aqui, eu vou definir nós em março são 150 também. Então eu estou sentado para ser, você sabe, bastante grande em termos fora, então o que acontece é que a imagem vai realmente ser o
dedo do pé do caminho . Ah, arquivo estou deixando um arquivo em algum lugar? Tudo bem. Então podemos deixar isso como está Quando chegarmos a esse ponto, vamos explorá-lo um pouco mais. Então temos o preço. Vou definir o preço do dinheiro dele. Então SQL MSs você realmente nos dá um tipo de dados. Você tem dinheiro pequeno, e você tem dinheiro onde é dinheiro. Dinheiro, certo? Então o dinheiro é como um bom tipo de dados literalmente projetado para armazenar valores monetários. Hum e você sabe, ele embutido no motor para caçar esses valores melhor. Certo, então o último seria o autor. Então autor, eu sei que vai agir como uma chave primária. E isso tem que ser em Tudor porque sprint Desculpe, chave
estrangeira, porque chaves estrangeiras tem que ter o mesmo fez o tipo da chave primária correspondente, certo? Então, uma chave estrangeira. Estou basicamente a dizer que qualquer valor que venha aqui vai ligar ao que todo mundo vai entrar aqui. Então, se o Autor Um trouxe
um livro, um livro, nós vamos guardar esse registro de livros que eu vou colocar no título do ano e tudo sobre o livro. E então eu fui colocar um como um valor para o autor. Eu t dizer que este livro está associado com o outro com o autor. Desculpe, quem também tem que eu desvalorizo? Certo, então há duas coisas que precisamos fazer aqui. E então terminamos com esse projeto para saber onde estou indo? Dedo um, salve esta mesa. Então eu vou salvar este aqui. Tem livros em cima. Deviam ser autores. Eu o chamei de autor. Deveria ser autores. Então, se você tem autor, eu sugiro que você faça nós estamos prestes a fazer onde Basta expandir tabelas e você vê suas duas tabelas Lá você vê autor em livros. Assim, o nome da tabela geralmente deve ser plural para refletir que ele está armazenando
mais de um registro. Então você está armazenando mais de um disco fora de terços. Então você adiou terços, certo? Então deixe-me passar por esse exercício de renomeação novamente. Desculpe. Às vezes, mexo rápido. Tudo bem. Então você pode clicar com o botão direito. Está ligado, então você vê renomear agora. Uma vez que você faz
isso, torna-se inevitável. Então o que eu sabia era apenas um clique duplo, mas muito lentamente. Então, já está selecionado. E se eu tomá-lo mais uma vez, torna-se inevitável. Foi tudo o que fiz de forma diferente. Mas é o mesmo efeito. Então autores e livros E quando você receber esse aviso renomeação rentável, clique em Sim, em Pressione Ahead. Certo, então temos autores e livros. Então, agora que o nomeei melhor, o que vou fazer é certo. Clique no espaço vazio sob o design dos livros, certo? Então volte para o design dos meus livros clique direito, vá para relacionamentos sobre o número,
passou o anúncio direito em, em seguida, ao lado de tabelas na especificação da coluna. Vou clicar nesse papel. Eu vejo essas reticências nas reticências. Então eu vou para a tabela de chaves primárias, que são os autores. Então eu quero uma chave primária. O autor é estável, que é I D. Sobre isso. Estou dizendo que a coluna correspondente no livro estável na tabela Chave Estrangeira, A coluna correspondente seria autor I d. A coluna correspondente seria autor I d. Então autor limite, I d torna mais fácil saber que tudo isso é uma chave estrangeira para o autor Stable Sonam, ligando o significado. Não posso ter o autor 100 no livro “Estável” para um livro. Mas eu só tenho cinco autores são conhecidos fora deles do I d 100. Então o que estamos criando aqui é uma restrição no valor que é possível mais uma vez se você sabe, eu fui muito rápido. Andya eu estou usando jargão é que você não está entendendo bem o novo cântico. Meu curso de desenvolvimento do servidor Microsoft SQL para todos nele trará você do zero. Quais bases de dados são inteiras para desenvolver bases de dados para os seus propósitos no Ben? Você sabe, tudo o resto foi encaixado no lugar. Que óperas à frente aqui. Então eu clico, OK, chuto a roupa, então eu economizo. Então, uma vez que eu salvei
isso, ele vai me mostrar que eu estou prestes a me mudar. Eu digo que sim. Não, você pode ficar na era se você não é tão familiar. Você estava com este tipo de modificação fora, você pode obter um erro dizendo que você sabe, você não pode mudar tabelas que já existem ou você tem que cair ou algo assim. O que você pode fazer é ir para ferramentas ou duas opções. E, em seguida, na caixa de diálogo que aparece, você vai para baixo para designers em. Então você verá essa opção. Asus evitar alterações são necessárias. Mesa de recreação. Então você teria um tique-taque se você tem área teria. Viciado, você acabou de desmultar. Tudo bem, então uma vez que você está no bilhete e clique, OK, e então você transita novamente. Você deve estar bem. Tudo bem, então agora que nós tivemos nós projetamos este banco de dados ou a próxima missão será começar a construir na
A.P.I . Pelo menos começar o projeto começa a partir da fonte marcou nosso próprio prédio. velho é o FBI em cima disso. Certo? Então vamos colocar dados de exemplo e talvez fazer algumas modificações à medida que avançamos mais
tarde . Mas agora conseguimos um pouco. Mais uma vez, o script está disponível para você e o que você pode fazer com o script, e ele vai olhar, eu vou olhar assim. Isto é o guião. Então o que você faz com ele é abri-lo no estúdio de gerenciamento em você basta clicar em executar, e ele vai apenas, você sabe, construir essas tabelas. Então eu passei por como você os constrói no designer com o roteiro. Você só precisa abrir o script no no estúdio de gerenciamento. Desculpe. E então o slick executar, e ele irá em frente e criar ambas as tabelas para você. Tudo bem. Tudo bem. Então é tudo por hoje em breve.
13. Implementar o quadro de dados e Entidade: Vocês nesta lista de nós vamos começar a definir nossas classes de dados em nosso projeto que
possamos começar a interagir com nossos dados. Paz? Não, nós configuramos os bancos de dados no SQL Server em. Usamos o SQL Server Express em. O que eu tenho aqui é um poço, este é um diagrama de banco de dados ou e r d. Então, praticamente a gerar isso eu teria perfurado no banco de dados e
, em seguida, vai ser uma estrela. Grams cozinhar diretamente novo diagrama. Apareceu uma caixa de diálogo. Eu adicionei as mesas. Então ele gerou isso. Então ele ainda me mostrando todas as colunas, as chaves primárias nas chaves estrangeiras em Mostre-me que há um relacionamento de chave estrangeira. O que Primerica relação chave estrangeira entre estas duas tabelas. De qualquer forma, isso é realmente só um cara porque não é onde o trabalho vai ser. O trabalho vai ser em estúdio visual, então nós temos algumas mudanças que vão ter que fazer para o visual studio,
nosso produto em estúdio visual em vez de ter algum conhecimento fora do banco de dados que estamos construindo sobre o outro Lado. Então a primeira mudança que vou fazer é nas configurações de cima que Jason arquivou. Então, neste arquivo, você verá uma conexão padrão, e ele vai ter algum servidor em algumas informações de banco de dados lá. Ninguém é o padrão. Eles estão te dando. Ah, um nome único. Então eles te dão é ser nets traço. Seja qual for o nome do seu projeto, então algum bom valor, certo? Você sabe, o que isso faria é dizer a estrutura de entidade que este é o nome fora do banco de dados e se ele não existe, então criou ele existe,
em seguida, usá-lo. Então, no nosso caso, já
temos um banco de dados. Isso é uma simulação porque estamos construindo um banco de dados do FBI estrangeiro que já existe. Então, o que precisamos fazer é contar uma. Em que servidor está o banco de dados? Então este é ah, servidor de banco de dados
local que basicamente veio embutido no Visual Studio. É perfeitamente capaz, mas não observamos, e estamos usando o SQL Express no caminho para obter rs. Você expressa ainda diz o nome. Então você está indo para o pé. Você tem três opções. Você pode dizer o nome aqui deve barra caixa de máquina andan SQL Express ou qualquer
instância que você instalou no caso Talvez não me seguiu e obter SQL Express Qualquer de outra instância que você está usando que tudo bem. Apenas apontou para o servidor certo. Então, se você me seguiu fazendo exatamente o que eu estou fazendo e isso é perfeitamente bom, então o endereço do servidor que precisamos aqui seria algo como o nome da máquina ou nós vamos escrever host local em, então a barra de caixa e em seguida, você verá o SQL Express. Então isto está dizendo a máquina local, que é a minha máquina aqui no SQL Express. Instância, Se os bancos de dados em outro servidor, seguida, mais frequentemente do que não, você pode realmente apenas colocar no nome dessa máquina nesse espaço. Tudo bem, no DSO isso está me dizendo que eu tenho caracteres de fuga inválidos. Então, na verdade, preciso de uma barra invertida dupla bem ali. Certo? Então é se uma barra, como barra invertida é algo especial. Então é só dizer sobre caráter ilegal. Basta colocar esse duplo sobre ele deve estar bem, são Então eu estou dizendo que meu servidor é uma máquina local e você está procurando
instância SQL Express , que é praticamente o que é exibido aqui ou quando tentamos se conectar. Lembre-se, vimos que o SQL Express para que você pudesse tê-lo escrito como aparece aqui. Claro, você precisa dobrar barra porque uma barra s é um problema ou você pode uma
barra invertida de host local SQL Express são desiguais, curtos, analfabetos. Seria para ver parada completa s seu expresso, Nossa parada completa barra SQL express. Eu poderia ter dito ponto final bem aqui. Tudo bem, então a barra invertida parada total eso que a parada total representa local foi praticamente, mas eu deixo no host local. A próxima é a parte do banco de dados. Precisamos do nome da nossa base de dados. Então nomeei minha loja de livros de banco de dados. Foi assim que eu lhe chamei. Então eu vou mudar o nome deste banco de dados, que é o que eles estão me dando. E eu disse que eles estão me dando uma parte de uma caridade. Chamam-lhe livraria no FBI Square, por isso vou apagar a gordura. Tudo bem. De qualquer forma, você apaga o que estava lá. Deixe o semi cólon, por favor. Então está deletando em torno dos ponto-e-vírgula? Não incomode aqueles semi cólon então Se você correr em erros ou você vê que Groenlândia aparecendo, é provavelmente porque ele perdeu o topo que você pode desfazer. Volte ao original e tente novamente. Então, você deseja alterar o nome do servidor entre o sinal de igual no semi dois-pontos? Parece para o banco de dados Nome Igual Sign em semi dois-pontos em. Você não tem que incomodar mais nada nesta linha fora praticamente para que você possa apenas clicar em Salvar. Veja este arquivo e ele pode fechar esse arquivo Então nós terminamos com o fogo para nenhum próximo acima nós
temos o contexto de banco de dados aplicativo. Então, para o aplicativo DB Context, que é telefonado sob sua pasta de dados em Isso é um aplicativo de arquivo. Contexto do DB. É basicamente interagir com as configurações aspas Jason D. para conexão, e a razão está fazendo isso é, no nosso começo. Nós tínhamos dito que foram usados na conexão padrão. Uh, então o contexto DB está usando esse aplicativo de arquivo de classe. Contexto de Banco de Dados, que está usando um servidor SQL na configuração da String de conexão, é encontrado na forma de conexão padrão em configurações up. Jason Então este contexto DB é não é não que fizemos este ajuste. Não olha para o nosso banco de dados atual que acabamos de dizer que é que o banco de dados estava trabalhando com . Então, não, o que precisamos fazer é escrever alguns arquivos de classe em nossos projetos que serão exatamente como sobre tabelas. Então, quando eu digo arquivos de classe direita que se parecem com nossas tabelas, o que eu estou vendo é que você pode apenas digitar Asyut tipo. Vamos começar dizendo, db set on, por favor. O invólucro é muito importante. Você quer BB maiúsculo, então a primeira tabela seria autores, então eu estou escrevendo um arquivo de classe. Então eu vou explicar por que eu fui ver Autor não são autores. Então Beebe disse:
Autor . E então eu estou dando o nome de autores e é uma propriedade, na verdade. Então é definido na linha vermelha, não é? Vamos descobrir sobre isso ainda. Em seguida, outro. Então eu só escrevi a palavra adereço. O Rop pressionou duas vezes, e gerou essa linha para mim. Então eu claramente perdi o qualificador público fora de que uma vez caixas Amigo deve ser público. BB define no autor em suportes de fome e, em seguida, autores em. Então deixe-me tentar de novo. Então é TV pública em suportes angulares. E então este, seu livro sobre o nome fora da mesa é livros são então estes o que está neste colchete angular está esperando uma aula. Então o que vou fazer é pairar sobre ele. Coloque a lâmpada ligada e, em
seguida, veja gerar um autor de classe em um novo arquivo. Então eu vou fazer a mesma coisa para a venda de livros. Ele deixou de ser branco e Underland para saber ser Sion ou qualquer cor que é apenas como uma palavra-chave realmente. Então eu fui para a mesma coisa para bookworm, fui para gerar livro em um novo arquivo para que ele foi gerado esses dois arquivos autor e livro dentro da minha pasta de dados bem ao lado do meu aplicativo. Contexto do DB. Agora, a razão pela qual eu nomeei o autor da classe, mas a tabela ou o nome fora dos autores da propriedade é realmente uma questão de semântica, certo? Então temos um conjunto de autores, certo? Mas, em seguida, qualquer que seja o nome da classe, você deseja representar uma instância singular muitas vezes autor. Então, um autor representa um registro representando uma classe em nosso, hum, você sabe, nossos conceitos são projeto certo, nosso programa. Então é realmente um pouco de semântica, mas sim. Então temos uma aula para o autor, e quando temos um grupo fora deles, ele seria autores. E aquele mentum fonte na besta de dados sobre a tabela chamado autores sobre o conceito CME para livros. Certo, então vou começar a preencher os arquivos da turma da Haute. Solidos mantenha o controle e clique. Tudo bem, então, controle, clique nele. Navegado até a definição das classes. Certo, isso funciona 90% de desconto no tempo. Então eu vou começar a colocar escreveu as propriedades para autor em relação às propriedades em tipos de
dados que tínhamos descrito em nosso banco de dados. Ou vamos supor que não construímos esse banco de dados, mas estamos herdando um banco de dados que temos que desenvolver. Precisamos saber quais eram os nomes das colunas? Quais eram os tipos de dados? Citron era a chave. Temos que imitar tudo isso em nossa classe de dados para que possamos começar a interagir com a tabela
apropriada. Então eu vou realmente começar por dizer a ele a tabela que ele deve mapear. Então eu posso ter a oportunidade de usar mais anotações de dados de chamada onda. Começamos com colchetes. Então isso é entre os Braves para o espaço próximo ao público, certo? E vamos ver a mesa Capital, a mesa T e uma doença de queimadura aberta e próxima. E então eu vou dizer a vocês que a tabela er associada com é toda a terceira porque esse é o nome fora da tabela no banco de dados. Então, se você digitou errado ou talvez ele não colocou o s, tudo bem. Eu não vou matar pagar uma ortografia. Mas apenas certifique-se de que você colocá-lo de volta porque estúdio visual não vai alergia para prosseguir, ou você vai ter problemas se as ortografias não são precisas. Tudo bem, então a mesa precisa de algo incluído. Então, vou incluir essa dependência. Então nós temos nossas anotações Dana Data para esquemas em, então nós vamos começar a preencher velho acima classe autor também vai encontrar este alguém
parcial para dizer, autor, cruz
parcial. Então é ordem pública de classe parcial. Desculpe. Tudo bem, então nós vamos ter na coluna idee em nós definimos idéia no banco de dados para ser inteiro ou assim indo para o nosso primeiro nome e sobrenome ambos uma string, porque no banco de dados nós os declaramos como vier charge apenas para voltar e check, Você sempre pode voltar para suas colunas. Eu olho para os tipos de dados Então primeiro nome foi março são ou ambiente são os primeiros no meu
sobrenome são ambos. Que na bio foi var marcas de char, que é praticamente apenas mais uma corda em. Então é isso. Então lá teríamos definido todas as colunas correspondentes. Então, uma coluna. Bem, são todos eles. São quatro colunas e temos as quatro colunas aqui. No entanto, o que acontece é que no Autor pode ter muitos livros, Então esse é o ponto da relação com um autor, muitos livros. Então, se você não está tão familiarizado com as relações no banco de dados projetando cântico, meu curso Microsoft SQL para todos bem, mas não mostrar a tabela com a chave estrangeira. Praticamente são os muitos. Então, uma vez que você coloca uma chave estrangeira em uma tabela, você está dizendo que você tem uma entidade que pode ter muitos fora desses registros. Eles têm um autor. um Você sabe, registro para uma pessoa que você pode ter muitos livros relacionados a esse autor. Então, em C afiado, o que queremos fazer é criar ah, propriedade que diz que se eu conseguir um autor e eu quero todos os livros associados ID, então eu preciso pelo menos fora dos livros. Então é exatamente isso que vamos escrever. Então, ter público virtual ligado. Então vou incluir isto. Então, estamos usando uma lista, que é um tipo de dados nítido C. Eu listo fora do tipo de livro, certo. Então eu quero uma lista fora das aulas de livros. Vou ligar para essa lista de livros. É isso. Então, se eu conseguir um autor, então eu seria capaz de incluir todos os livros relacionados dentro desse disco? Não, para o livro, vamos começar definindo a qual tabela ele está associado, que é a tabela de livros. Então eu vou mais uma vez encontrar este aqui parcial seu livro público de classe parcial. Não, eu vou começar a construir velho ou definir a coluna diferente. Então eu basicamente dei cada um fora deles,
então eu apenas passar e lembro muito deles de volta para os testes beta que você estipulou
no caso de você ter então eu apenas passar e lembro muito deles de volta para os testes beta que você estipulou estipulado diferentes tipos de dados de mim e eu fui em frente e disse vídeo
composto e falhas em. Mas vou explicar o que está acontecendo aqui. Então temos a ideia. Claro que temos o título onde o in. Então você vê alguns pontos de interrogação além deles, eu basicamente estou fazendo nada. Tudo bem, então quando dizemos notável no banco de dados seria de definido não é em C afiado, você tem que colocar um ponto de interrogação e ele funciona em alguns tipos de dados. Não funciona em alguém. Uma vez que colocamos o ponto de interrogação, isso significa que é um dedo do pé de carga. Tem o valor? Não. Então estrutura de entidade vai impor este tipo de validação. Então, se eu tentar criar um livro sobre, eu não fornecer um vital para título estadual do que é diferente, o
trabalho provavelmente vai chutá-lo para trás e dizer que você precisa de um válido para isso. Geralmente é tão rigoroso com numérico em barras. Uma vez que brincou corda, ele meio que tem um pouco mais de clemência, então eu estou realmente apenas focando no inteiro. O duplo Andi,
o outro inteiro agora preencheu todas as colunas aqui que estão presentes no
banco de dados em ter autor Odd I D. Mas, em seguida, a coisa legal sobre framework entidade é que se você tem, ah, Relação Ori dessa relação chave estrangeira lembrar que eu discuti isso com autor. Ao incluir esta lista fora dos livros, eu posso recuperar apenas um autor e, em seguida, obter automaticamente a lista fora dos livros. Não, a mesma coisa para o livro. Se eu recuperar um livro sobre, eu quero alguns detalhes sobre o autor em SQL que você iria depois em uma junção interna, mas no quadro de entidade, ele permite que você inclua uma propriedade fora do tipo fora do arquivo de classe que tem os dados. Então não, quando eu receber esse livro, eu teria uma propriedade nesse livro chamado Autor em Ideias de Autor Off Course. O que vincularia o autor? E você sabe que qualquer que seja a idéia do autor,
está ligado para recuperá-lo automaticamente. Então eu seria capaz de obter seu primeiro nome sobrenome por em seus detalhes apenas recebendo o livro. Então é isso que em diferentes trabalhos traz para a mesa para que você possa ir em frente e salvar isso em que é isso para não. Então, o que fizemos apenas para recapitular. E eu só vou fazer um projeto de lei para ter certeza de que eu não apresentei nada para quebrar o programa e foi bem sucedido. Então isso é bom. Então o que nós apenas fizemos foi um aplaude as configurações para o banco de dados para olhar para o nosso
banco de dados apropriado , que mais uma vez estaria dentro deste contexto no banco de dados existente. Tudo bem, nós também fomos em frente no DWI configurado as classes parciais para nossas tabelas. Destes são como conduítes são embaixadores de banco de dados. Eu não sei que outra palavra eu poderia usar para descrevê-los, mas praticamente eles estão indo para intermediar relações entre nosso aplicativo aqui no banco de dados
real. Então nosso contexto de banco de dados de contexto? Não, sim, está tudo bem? Eu estou procurando uma tabela chamada autores e eu vou estar usando esta classe que acabamos definir to-corretor Qualquer relação entre aqueles Se eu quero dizer começar algo, será relativo ao que eu posso inserir através desta classe em como vamos junto. Isso fará um pouco mais de sentido, ou apenas fazendo com base na configuração. Algumas coisas vão mudar que podem ter que revisitar essas coisas, mas para lugar nenhum essas configurações, então não precisamos fazê-las novamente. Não negue
14. Configurar o AutoMapper e DTOs: Bem-vinda de volta a isto. Ouça, nós vamos definir nossos objetos de transferência de dados, ou DT deve quatro abreviações, bem como configurar Oper Autumn, que irá lidar com o mapeamento de poço entre nossos dados. Amigos são objetos em nossas classes de dados base. Então deixe-me explicar um pouco sobre por que precisamos de objetos de transferência de dados. Então eu tenho aqui as classes de dados que criamos recentemente, que seria livro sobre autor. Então nós já sabemos que estes estão limpando diretamente para as tabelas no banco de dados. Se mudarmos a tabela na base de dados, você tem que mudar essas classes de acordo apenas para ter certeza de que não quebramos nada ao longo do caminho. Agora, a coisa é que nós não queremos interagir diretamente com essas classes. Essas classes devem ser representação direta fora do banco de dados se precisarmos
modificá-las , elas só devem ser modificadas modificações relativas no banco de dados sobre gargantas construindo o MP que eu ia expor certas funcionalidades que permitiriam que a
interação fosse alguém limitado. Então estamos no controle sobre o que eu usuário pode fazer através do nosso 80 I em que são começa com o
desenvolvimento adequado . Então eu provavelmente vou dar um exemplo onde, você sabe, inserir um novo registro, inserir um novo livro, nós provavelmente não iria allusá-los dedo colocar em um valor para o I d. você sabe,
aoinserir um novo registro,
inserir um novo livro,
nós provavelmente não iria allusá-los dedo colocar em um valor para o I d.
Dê-lhes um título. Dê-lhes, senhor. Dê a eles a capacidade de inserir um título. Digite o ano, talvez o número ISBN em talvez um resumo sobre tudo, mas eles não são o i d. Também provavelmente para determinar o autor em qualquer coisa. Nós provavelmente não queremos que eles sejam capazes de mudar o barco de imagem sobre eles para ser capaz mudar o preço e assim por diante. Então, um objeto de transferência de dados é basicamente o que chamamos de modelo. Se estamos na NBC chamaria de modelo em um par. desenvolvimento chamará isso de “B t o”. Tudo bem, então basicamente vai ser como um conduíte. Então é mais uma obstrução longe do banco de dados onde estamos controlando que tipo de
besouro pode ser passado. Então estamos lidando com essa manipulação depois, então estamos construindo esse programa. Então, a primeira coisa que vamos fazer é incluir Oper Outono em nossa Solução. Então, vamos clicar com o botão direito do mouse ou projetar em nosso projeto. Desculpe em, então, Goto gerenciar novos pacotes get Então vamos para Bro's e, em seguida, estamos procurando auto Ma Per Então auto é um automóvel e er esfregão no Semicon Tomar incluem pré lançamento Se você tinha unticketed de um exercício anterior em, Estamos procurando o carro Ma per, então vamos em frente e instalar o Oper Outono. Em seguida, nós também vamos instalar as extensões ponto Microsoft que ele injeção dependência . Então vá em frente e comece com isso. E então, uma vez que terminamos com isso, podemos ir em frente e sair de novo get então não, nós temos outono superior. Não, precisamos do dedo do pé. Deixe a nossa aplicação saber sobre outono superior Alguém para ir em frente e criar uma nova pasta em Eu quero chamar esta pasta. Ma pings Então m e p p i n g. Eu tenho um erro de gastos lá, não ver o meu cursor. A mãe dela fala, depois dentro dessa cheia que vamos criar uma nova aula. Vou chamar-lhe esfregões. Então você só quer escolher nomes que não colidam com as palavras-chave. Certo? Então você não pode dar. Você pode chamá-lo de algo diferente. Apenas certifique-se de que ele não trava com as palavras-chave. Então nós temos mapas públicos de aula, e então eu vou dizer chamada no perfil. Tudo bem, então ele vai me pedir para incluir algo que eu tenho que usar. Parte superior do outono. Está tudo bem, então. Bem, esta é apenas uma classe de configuração, então ainda não estamos prontos para isso, mas nós deixamos que precisamos deixar nossa aplicação ou barco ou aspirações de oper outono. Então vamos começar, não CS em. Então eu vou dar o dedo do pé. Adicione todos os direitos acima deste Strugar. Alguém para dizer serviços, pontos ad Oh, muito mapeador. E aí está, no fim da lista. Então, no outono superior e então eu quero dizer, digite fora, em
seguida, chamar o lugar o nome da nossa classe, que é esfregões. Então digite esfregões no semi cólon fora do curso vá em frente e inclua qualquer coisa que precisa ser incluído. Então estamos prontos para ir na parte, então não, nossa aplicação sabe que precisa tomar Pratt desencadeou os serviços. Em seguida, vamos fazer alguns detalhes. Então, onde podemos não fazer todos os DT bem? Não, mas vou encontrar os da base e depois, medida que avançarmos, provavelmente farei outros. Então eu vou destruir,
clique novamente, clique novamente, criar uma nova pasta. Por isso, as pastas são uma excelente maneira de manter seus arquivos semelhantes juntos. A Agita. Um dispara por todo o lado. Então é por isso que vou criar um monte de balas à medida que elas avançarem. Então, desta vez eu vou chamá-lo de buracos DT. Certo? Então esse é o nome fora da pasta. Em seguida, eu iria interagir com a pasta clique adicionar período, uma nova classe em. Então eu quero chamar este autor Beatty, ou e eu vou apenas criar outra classe ao mesmo tempo em plantão este livro, GTO. Então, para cada classe de dados que você tem cada tabela, você sabe, você provavelmente quer ter certeza de que você tem objetos de transferência batida para que você possa desviar o que não
deve ser modificado em você rastrear fora o que deve ser modificado ao longo do caminho. Tudo bem, então estas são as bases que a DT deve que eu vou ter uma entrada tão real que vão se parecer com a classe de dados. Então eu estou realmente apenas indo para copiar tudo isso sobre a classe de dados em que eu vou colocar no DT ou aqui não é uma coisa boa. Então você pode estar se perguntando. Ok, então por que eu preciso ir às aulas? E isso é bom. Essa é uma pergunta válida. Eso Eu apenas copiei tudo, desde autor para autor DDO Tudo, desde reserva para
detalhes do livro . A coisa boa sobre o DT Oh não, é que é Low City e quatro certas validações da vanguarda. Então, enquanto nós teríamos configurado o banco de dados para dizer Ok em março são 50 você notaria que o livro é uma corda e não há limite real para a corda, então a corda poderia ser marcas de pneu ambiente e poderia ser convite nosso 50 poderia ser environ Taiwan. Não sabemos a este nível que não ouvimos, entanto, quando eles chegam ao GTO, é com
isso que nossos usuários estarão interagindo. Portanto, quaisquer regras que estabelecemos para validação aqui, se for necessário ou se for, você sabe, limitado no número de caracteres que você pode obter Seja o que for que queremos definir o limite. Hum, nossos usuários fora do A p i para ser capaz de fazer, nós faríamos no nível de objetos de transferência de dados que você vê aqui que eu copiei e colado diretamente do booby para ter uma linha vermelha. Então você provavelmente foi em frente e incluiu dados, mas realmente intimamente, eu não quero que o GTO interaja diretamente com a classe de dados, então os detalhes devem interagir uns com os outros. Então eu tenho detalhes do autor. Então, se eu precisar de alguma representação muitas vezes autor dentro dos detalhes do meu livro, então o relativo seria detalhe do autor. Tudo bem, então detalhes sobre classes de dados não interagem diretamente. Certo? Então é por isso que temos Oper Autumn para saber que temos que configurar detalhes. Tudo bem, eu posso voltar para meus esfregões que o arquivo CS e terminar minhas configurações. Então a configuração a que estou me referindo aqui é criar o mapeamento. Então eu estou deixando outono superior nem que essas duas classes devem ser capazes de marcar diretamente para o outro. E é por isso que a mesma coluna ou nome de propriedade tem que estar presente. Então, se eu soletrar um errado ou se eu falei resumo com um velho. Mas com isso, você acaba na classe de dados do livro tanto no GTO quanto no GTO, então os automóveis vão ignorar isso porque no que diz respeito ao automóvel, eles não são os mesmos. Eles não são como certos. Então, quando estou sentado em mapas que CS é o que estamos felizes que estamos fazendo aqui. Então eu vou dizer, criar esfregão e, em seguida, abrir o suporte angular. E então eu vou ver que eu quero limpar o autor e depois salvar vírgula para o autor E T O. Então, depois do suporte angular, abro e fecho parênteses e vou dizer ponto reverso esfregão. Isso significa que o mapeamento pode ir em qualquer direção. Não, você vê que ter um número para ele cai e eu tenho um erro ortográfico. Deixe-me descrever isso então. Vou em frente e incluir tudo o que precisa ser incluído. Então, depois de incluir tudo o que precisa ser incluído, papai e eu vamos comprar um Ridley. Oh, meu mal, meu mal. Então o que precisamos aqui na classe é Ah, construtor. Foi mal meu. Então devemos dizer mapas públicos. Então eu não emigrei para o construtor. Desculpe-se. Então nós temos ou classe esfregões do que temos nosso construtor em. Então vamos ser claros braço UPI está bem. Então eu posso apenas criar os dois mapeamentos. Então eu tenho um para o autor e também detalhes em então eu estou com um para o livro Onda Book DT. Tudo bem, então essencialmente, o que isso vai fazer é só eu encher qualquer um desses em então. Então, quando eu digo Phil, quero dizer, se eu correr de acordo com o banco de dados e eu recuperar a classe de dados fora do livro, então o detalhe que eu tenho talvez três colunas a menos do que a classe de dados tem. Então eu posso apenas fazer uma limpeza direta, e ele vai encontrar as cores dos mesmos nomes colocando esses dados, ignorar os outros, e então eu tenho ah livro PTO objeto preenchido com os dados relevantes. Vindo da classe original no reverso é verdade porque fora desta configuração, mop
reversa, onde os detalhes do livro podem ser preenchidos com dados. Eu só preciso mapeá-lo e ele vai preencher em objeto off tipo livro com dados que podem então ser passados para o banco de dados. Fora do curso. Só conseguiria esse incêndio se as validações que montei no vídeo do livro tivessem sido bem sucedidas. Não, só o fechamento. Vamos fazer uma compilação e garantir que tudo esteja intacto ao fazer a minha compilação. E eu vejo que eu tenho que usar um sério assim no autor DT ou eu tenho a propriedade e mapeamento do dedo do pé livro. Então, como eu disse antes bto staff para DT também d t o direito sobre a coisa legal sobre
operadores de outono que uma vez que a esfregona existe,
se eu tiver que esfregar algo, um, do autor GTO, mas relativo ao livro, ele vai automaticamente lidar com esse mapeamento é uma biblioteca tão incrível para você. Então eu fiz esse ajuste e eu vou construir novamente. Estou a ver se tenho alguma assembléia ausente. Eu não quero construir bem sucedida no DSO.
15. Analisar e adicionar mudanças no GitHub: Bem-vinda de volta. É aquele tempo novamente quando revisamos o que fizemos para esta seção e, em seguida, verificamos nossas mudanças em obter esperança. Então, para esta parte fora do curso, teríamos criado um banco de dados no SQL Server Express em. Em seguida, fomos em frente e alteramos nossas configurações para apontar para o banco de dados recém-criado. Implementamos as classes de dados que estariam usando para interagir com as tabelas
no banco de dados. E também configuramos Autumn Oper com alguns DT deve para garantir que temos a
configuração de mapeamento para nosso usuário e versus nosso banco de dados. E no nosso A P I Não, vamos apenas verificar as nossas mudanças. Então cada carrapato vermelho representa que eu mudei o arquivo. Então, se você ver nossa tomada, isso significa que o arquivo foi alterado desde a última galinha. Se você vir um cadeado, isso significa que nenhuma modificação ocorreu desde que o incêndio foi verificado. Se você ver que o inimigo processo é que, enquanto você acabou de adicionar algo novo para o erso
robusto existente para frango são mudanças. Fomos diretamente a solução clique em Commit on, dar-lhe uma mensagem para que eu possa apenas escrever um bom a mensagem para que você possa pausar o vídeo e escreve a mensagem como eu escrevi. Mas eu sempre encorajo você a ser relativamente detalhado em sua mensagem para
que alguém que aparece possa ter uma idéia sobre o que foi feito com esta galinha. No entanto, para verificar completamente assim não estão ao lado da palavra commit all e, em seguida, você vê , cometer tudo na pia sobre o que vai fazer é cometer localmente e, em seguida, empurrá-lo para obter ajuda . Uma vez feito isso, você sempre pode voltar para o seu positivo e verificar se suas alterações foram feitas em. Então é isso.
16. Autores de configuração: Bem-vinda de volta. Vamos começar a configurar nosso repositório de autor agora. Apenas um pouco de fundo são repositórios praticamente como uma coleção fora de funções, certo? Então, quando falamos sobre o nosso autor repulsou ou o que estamos fazendo é a criação de uma
estrutura base através da qual irá interagir com o nosso dedo do pé da tabela do autor, realizar quaisquer operações relacionadas ao banco de dados. Então é outro nível de obstrução para que não estejamos chamando diretamente a classe de dados toda vez. Mas estamos apenas chamando uma função. Andi, esta função pode ser usada em vários lugares. Então vamos nos sentar para injeção de dependência em nossos controladores para acesso. Mas também vamos usar essa oportunidade para configurar um repositório base. Então isso significa que cada mesa, bem, cada fita vai levar a cabo esse cara. Quatro das mesmas funções são operações. Basicamente, as operações de multidão criar, ler, atualizar e excluir. Então vamos estar configurando uma base ou buster com ah definição de linha de base para essas funções. E, em seguida, cada outra classe ou cada outro repositório em vez herdará desta base um pouco. Comece com isso. Então primeiro eles querem ir para a nossa pasta de contratos, botão
direito, clique. Acrescente em que estou adicionando classe. Eu realmente estou adicionando bem, classe ou interfere, estamos realmente criando um interfere. Mas posso usar as aulas de qualquer maneira. Andi, vou ligar para este. Eu repositório BCE. Tudo bem,
então, uma vez que você tenha colocado esse nome, eu basicamente repositório à frente e clique, adicione e espere que isso seja gerado. Então, mais uma vez, estamos fazendo uma interferência, então eu vou mudar por último o Inter feroz. Tudo bem, então. Só vou dizer que quero que a base seja relativa a uma entidade de classe que estou chamando chá. Onde? Chá. Classe de cólon. Partes desta coluna dizendo que este é um repositório baseado em sua funcionalidade será relativo à água uma classe que eu digo que é relativo. E quando digo classe, quero dizer as classes de dados que são os corretores diretos. Para a tabela apropriada, todos
vocês farão sentido. Por isso, vou passar pouco por aquela bancada. Estamos construindo juntos. Então vamos ter funções de combustível. Bem definido,
não definido. Bem definido, Declarado dentro. Fora desta interface ligada, vamos começar com este chamado Encontrar tudo Não, eu vou estar usando programação assíncrona então você olhar para uma programação síncrona, que é,
uh, uh, programação
paralela técnica que faz muito fácil de implementar, e vai aumentar a capacidade de resposta fora de sua aplicação nessas operações. Então vamos sentar juntos assim toe devido a declarar em uma função síncrona, temos que declarar para a tarefa e, em seguida, abrimos colchetes angulares e, em seguida, se ele está retornando valor, e então você tem que especificar o valor que está sendo retornado ou o tipo de dados off, o valor será retornado. Então o primeiro 1 que estou fazendo é encontrar tudo e eu queria encontrar tudo na forma de uma lista. Então, as listas são divertidas? Eu listo isso. Eu quero a lista fora do tipo t lembrar, chás apenas filha relativa, um tipo de classe está sendo passado em frente. Então vou chamá-lo de encontrar tudo. Então, basicamente, estou vendo se essa função é chamada, é uma função assíncrona. Deve retornar pelo menos fora de qualquer classe que eu estou solicitando, eu estou chamando a função. Encontrar fora. Em seguida, temos uma tarefa neste é apenas retornando uma instância fora de qualquer elemento de classe ou um objeto fora de qualquer tipo de classe que eu estou solicitando em. Vou ligar para este. Encontrar por Heidi neste vai tirar um parâmetro off int i d. Em seguida, temos tarefa. Desculpe. Tarefa no touro. Então este vai devolver um booleano. Vou ligar para este. Criar em quê? Estou criando uma entidade fora do tipo T. Então, estou chamando de entidade. É o meu nome base para isso. Então, seja qual for o tipo de classe, eu vou criar uma instância off, Entende? Para passar o objeto. Ele está esperando um objeto fora desse tipo de classe em. Então eu quero também ter um pouco e excluir que vão olhar muito idêntico para criar . Então eu vou apenas duplicar isso e dizer obter Andi Deletes Lembre-se, Controle D é o Sharkey duplicado. E então eu subi uma função final chamada Task Bull neste é ir dedo do pé peneiramento. Certo. Então a coisa dentro de dois trabalhos diferentes quando você cria, você tem que sempre salvar as alterações para ele realmente comprometido com o banco de dados. Agora, este é apenas o repositório base. Não, preciso de um repositório específico para as operações do meu autor. Vou seguir em frente nos contratos. Criar outro interfere em. Então este vai ser chamado eu repositório autor. Tudo bem em. Então eu vou em frente e clique, adicionar. Mas, mais uma vez, é um inter taxas. Mas, em seguida, esta interface vai herdar da base de repositório. Tudo bem, então quando eu digo herdar, eu só quero dizer que eu vou ver eu autor repositório Colon em. Em seguida, adicionar base de repositório em então t não é o que eu estou passando, mas porque eu sei que eu estou lidando com autor, a entidade exata será autor Tudo bem, então isso significa que tudo o que será feito dentro fora deste particular interfere vai relativo ao autor. Mas então isso é legal. Vai ser assim para cada classe de dados que você vai ter um repositório quatro. Então você está indo apenas para especificar qual classe de dados é relativa dedo do pé sobre, em
seguida, suas funções serão definidas em relação a isso. Está bem, mas isto é só mais uma interface. Então isso significa que se há outras operações relacionadas com Auster que eu quero realizar, que nós não somos, você sabe, não
somos parte da besta. Então a base é apenas você sabe, estas são quatro operações que cada mesa vai ser capaz de realizar. Quero dizer, ter tipos específicos fora de operações. Talvez eu queira recuperar autor por um livro que eu d ou algo diferente fora da norma fora
da norma do que está na base. Então eu posso escrever essas declarações de dentro para fora. Isso interfere parte no cara vai precisar incluir o que está faltando. Lá vamos nós. Então, mais uma vez, estas são interfaces, e estas são apenas declarações. Então, é claro, precisamos de uma classe concreta que vai realmente implementar essas operações. Então o contrato,
senhor, interage com as declarações, mas depois com os seus serviços. Então eu tenho uma pasta aqui serviços Estes serão arquivos que irão herdar. Então fizemos algo assim com o serviço mais longo onde eu tinha o contrato com as declarações fora das funções em seguida o serviço herdado do contrato. Andi realmente colocou as definições para essas funções. Certo? Então nós estamos fazendo a mesma coisa aqui nós temos eu repositório autor, que é herdar da base em. Então o que eu vou fazer é entrar em serviços em uma nova turma. Andi, esta será a autora. Repositório, clique em adicionar Então eu vou fazer com que o repositório herde de Eu comprei Repositório de Autor Direito em. Então eu fui depois incluir um A pasta está usando esse espaço de nome em. Então eu vou ter que colocar o dedo nas definições para outras funções. Então é isso que a linha vermelha é. Então, se eu passar o mouse, você vai dizer implementar interface e ele irá gerar tudo fora do método Stubbs relativo dedo do pé que foi definido. Então você vê, todos eles vêm de B é porque, mas herdando I autor Repositório, eu estou tirando tudo do que está na base. E então, se eu tivesse funções personalizadas aqui, então eu também teria Stubbs método representando-os em um só lugar. Não, posso fazer uma conta rápida só para ter certeza de que não estou perdendo nada. E é sempre bom fazer construções depois de fazer algumas alterações judiciais, porque você pode ter perdido algo ao longo do caminho ou ele não fez algo corretamente em uma compilação, irá informá-lo sobre impedi-lo de avançar com erros gritantes. Certo? Então o construtor é bem sucedido e não, vamos começar a implementar essas funções. Então, para começar, o que eu preciso é de uma instância fora do meu contato de banco de dados de aplicativo. Então lembre-se que o contexto do aplicativo BB e eu acabei de abrir o arquivo rapidamente. Ele tem as definições para Whole para se conectar ao banco de dados. Ele sabe que estas são as classes de dados que ele deve olhar de pé sobre. Ele sabe que as configurações, juntamente com a conexão, cadeia tudo o que está envolvido nesta classe. Então, o que precisamos é de um objeto fora desta classe, que é o nosso contexto de banco de dados aplicativo dentro de para Buster para que possamos começar a interagir com o banco de dados. Então eu vou começar definindo propriedade privada leitura somente em It vai ser fora do
tipo de contexto de banco de dados aplicativo em. Vou chamar o nome dos objetos na partitura. DB certo? Não, depois de fazer isso, vou inicializá-lo dentro do construtor. Então eu vou criar um construtor. E para fazer isso, eu posso ler C t o r laptop e ele gera um construtor. Então isso é um bom corte
afiado de conseguir o seu construtor. Então saiba que sou um construtor. Eu vou dizer a ele que ele deve tirar um parâmetro fora do tipo de aplicação. Contexto do banco de dados ativado Eu vou chamar o parâmetro db Então um é sublinhado DB e um é apenas BD em. Então, dentro desta construção, vou inicializá-la no placar. B B é igual a DD, então isso é o que chamamos de injeção de dependência, onde você declara propriedade sobre o novo, inicializá-lo no construtor, e então você pode usar o objeto livremente, em
qualquer lugar em seu aplicativo. Agora eu vou fazer as definições são o direito a funcionalidade em cada um. Meus pensamentos param relativos. O conjunto que os defino é a ordem em que os defini na base do repositório, e há uma pessoa especial para o fazer esta semana. Então, na verdade, eu vou começar com o salvamento porque esse é o mais fácil, certo? Então eu quero fazer salvar e, em seguida, vamos fazer de encontrar tudo para baixo para excluir nessa ordem. Então vamos começar com seguro, então eu quero encontrar a função de salvar. Então o que eu vou fazer é remover essa exceção que está sendo jogando e então nós
vamos ver var muda algumas brigas de variável chamando-o muda em, então eu vou dizer underscore db Então esses são meus objetos que me permite interagir com o banco de dados são núcleo de estrutura de entidade que corretores todas as operações de banco de dados em meu nome. Então este é o meu objeto para talkto framework entidade. Então eu digo ponto e então eu tenho um monte de funções. Então, mais frequentemente do que não, você pode olhar para a função. Eu meio que inferir o que é suposto fazer. Então, , adicione, tenho certeza que você pode inferir que o anúncio ajudaria a adicionar algo ao banco de dados. Você tem atualizações, exclui o que estamos passando por elas. Então, neste momento, o que queremos fazer é salvar. Então queremos procurar algo que sugira ser seguro, certo? Eles salvaram as alterações que eles têm. Veja se mudanças um dissipador sabe que a diferença entre os dois é bem, obviamente um é assíncrono e um não é assíncrono. Salvar alterações funciona. Isso é bom. Mas então porque estamos usando uma programação síncrona aqui, eu vou para você tirar vantagem de estruturas de entidade. Você é funções síncronas NC que salvar muda uma pia em, em
seguida, abrir e fechar brisa. Não, há poucas coisas que eles precisam notar quando se trata de funções assíncronas. Um. Sim, definimos como tarefas. Mas então você paira sobre esta agência dizendo que é Oh, eu sinto muito. Isso é diferente. Deixe-me completar a base do tribunal e depois explicar o todo. É interessante. Então este é o nosso ouro. Então o que é suposto fazer é voltar. Se houve mudanças, carne não é. Então, se eu enviei algo para o banco de dados do que a estrutura de entidade, quando ele não salvar alterações, ele deve dizer que sim, houve uma mudança de casa. Quaisquer registros foram alterados ou algo assim, certo? Então, se nenhum registro foi alterado, então esse é o nosso problema, certo? Então eu quero voltar para nossas cataratas. Era problema deles ou não? Se houve registros alterados, então está tudo bem. Então isso voltaria a ser verdade. Então eu só vou escrever mudanças de retorno maiores que zero. Certo, então este é um bom e dedo do pé um caminho fora de ver cheque. Se as mudanças foram Grã-Bretanha e zero e, em seguida, retornar o resultado fora que Não, Eu estou vendo em erro aqui. Então ele está dizendo que eu não posso, hum, retornar basicamente esta área, dizendo que é eu estou retornando tarefa,
hum, mas algo está dentro Portanto, esta área não é realmente clara. Então é isso que eu estou explicando o sincronizado em. Portanto, esse erro realmente não lhe diz qual é o problema. O problema é que quando você faz uma chamada assíncrona, ela está retornando. E se você passar o mouse sobre essas alterações é tarefa. Lembre-se que temos tarefa Bull aqui. Ele está retornando tarefa int,
mas, em seguida, para esta operação toe acontecer, ele precisa de um int. Tudo bem, então está essencialmente dizendo que, você sabe, os tipos de dados não são muito. Então, quando estamos fazendo e uma chamada de função síncrona, você sabe, para obter sobre o tipo concreto, como em voltar e em uma não uma tarefa em, eu vou ter que prosseguir com a palavra-chave aguarde então que é outra questão em si porque não vai me dizer que você não pode fazer em como ele sem e uma função pia. Então, a sugestão aqui seria feita o método uma pia, que está introduzindo a palavra-chave perseguindo público e notar tudo. Não vai embora. Todos os erros agora desaparecem. Então deixe-me apenas um pouco de tudo isso acima Um. Quando você é um dedo do barco, defina em função assíncrona. Você tem que dizer facilitando você dar-lhe o qualificador, é claro, de tarefa enfrentando público e, em seguida, para retornar tipo. E se for nulo, então não haveria tipos de retorno. Seria apenas uma tarefa. Em seguida, salvar vai Salvar é um nome de função. Então você precisa da palavra-chave, um dissipador, a tarefa de palavra-chave. Se houver um tipo de dados envolvido, então você colocá-lo nos colchetes angulares. Se não, então você não. E então você tem que ter certeza de que você realmente vai estar chamando algo que é um síncrono dentro dessa definição. Caso contrário, você seria meio obsoleto para ter a pia na tarefa. Se você não estiver realmente fazendo uma operação assíncrona, certo, sempre que você estiver fazendo a chamada de função, você tem que prosseguir com a palavra-chave aguarde. Eu notei que quando eu não escolho o nosso, eh, acho que delegados automáticos destacados para que os dois fora deles trabalham bem juntos. Então, se você não tem nenhuma causa de função assíncrona aqui, então você não precisa de uma função assíncrona praticamente tudo bem. Não, o próximo em que vamos trabalhar é o achado. Certo, então volte para a base e certifique-se de que salvamos, certo? Não, nós vamos olhar para encontrar tudo isso e encontrar tudo. Quero devolver uma lista dos autores. Eu quero retornar todos os autores que estão atualmente o banco de dados, então eu vou declarar uma variável de nossos autores igual a em Então eu fui embora. É porque eu pretendo usar na função assíncrona direita no ponto de banco de dados pontuação em dizendo sublinhado d B que eu tenho acesso a todas as classes de dados que teriam sido definidas no contexto de banco de dados. Então eu tenho um encontro. Uma classe chamada autor nas propriedades chamada autores, certo, então isso é uma propriedade. Então db dot autores em apenas o cheque duplo novamente seus autores, porque foi assim que eu chamei aqui. Esse é o nome da propriedade, o autor das aulas. Mas as propriedades são em terceiro lugar porque a conexão fora autores Tudo bem, então eu não seria autores ponto sobre. Eu quero pelo menos uma fantasia para listar que ele afunda, então lembre-se, se eu vou esperar. Então eu preciso preceder a tarefa com a palavra-chave uma pia. Tudo bem, lá vamos nós. Todo o ar se foi. Não, esta área ainda está aqui porque diz que é a necessidade de devolver algo, por isso espero que devolva uma lista. Autor. Então esta é a lista? Eu só vou ver um retorno autores. Então, uma vez que esta função
é chamada, ele vai retornar uma lista de objetos fora do tipo autor, Tudo bem, caridade. O próximo seria multado por identificação então demitido por eu seria um implemento bem simples. Seria semelhante. Então este está esperando um parâmetro off i d. Então eu vou salvar o nosso autor porque eu estou esperando encontrar um autor através desta função em. Então eu vou ver um peso nos autores de pontos do banco de dados, então olhar o autor estável , então eu quero que você descubra que ele está sincronicamente ligado. Então eu só preciso passar no i d são para que o achado que você tem encontrar e encontrar um canto
praticamente o que a disfunção faz, é, hum, ele procura no banco de dados para ou procura nessa tabela para qualquer elemento que tem o chave primária correspondente a isso. Então sabemos que a Primerica é chamada idee. Ele saberá isso automaticamente. Então, espera-se que passemos adiante, eu desvalorizo. Isso é suposto ser uma chave primária, e então ele vai encontrá-la. Em seguida, isso está esperando no objeto off tipo autor. Então teríamos entrado nos registros do autor. Precisamos voltar. Autor. Lá vamos nós. Tudo bem, tudo bem. Então, estamos indo muito bem. Em seguida, seria cria uma pequena escola, mas toe um repositório, encontrar ou criar em. Então, neste aqui, teríamos conseguido alguma entidade fora do tipo autores. O que queremos fazer é criar um novo registro de autor usando esses dados em É bem simples. Então, o que faria é sublinhar os autores do ponto do banco de dados adicionar pontos. Também temos, mas depois recebe o que tivemos uma pia. Então podemos usar em uma pia, certo? Então, em uma pia. E então eu passei na entidade que está prestes a ser adicionada. Tudo bem, então, se eu fizer em um canto fora do curso, eu preciso de um peso. Então a última coisa depois de você ter feito. Essa ligação não é? Oh, eu tenho uma espera e eles também pensam que é um público uma pia, Então é fácil esquecer que é fácil escrever um e não lembrar o outro. Mas garanto que o estúdio bizarro sempre te lembrará que precisa dele. Então a última coisa aqui seria devolver o ouro. Então, o que acontece que depois de fazer esta operação, você tem que salvar as alterações? E eu tenho ah, função dedicada a apenas chamar mudanças de salvamento, que na verdade,
é, na verdade, estão, hum, na função síncrona. Então eu preciso devolver qualquer valor que isso retorne. Então, o ouro que é esperado é ah parente de barras. Se as alterações foram salvas com sucesso não são assim o que eu vou fazer, você só diz retornar e então eu estou chamando em uma função de pia. Então, desta vez é a minha função de encarar. Refiro-me a esta função assíncrona. Mas mais uma vez, se você está chamando uma função assíncrona, você tem que esperar por isso. Eu só vou ligar para salvar direito, então ele vai fazer a entidade. Se a operação do núcleo F e isso vai chamar a minha função, aguarde os resultados e, em seguida, retorná-lo. Então, no momento em que ele retorna, ele estaria devolvendo barras em todos os tipos fora. Coisa maravilhosa. Este é apenas um grande e agradável ecossistema e é realmente ótimo de entender. Tudo bem, então em seguida depois de criar, nós temos atualizações que excluir. Então deixe-me apenas atualizá-lo. Então, seja ele é praticamente um direto para a frente, como a adição, Exceto que você tem db você diz sublinhar autores do ponto de banco de dados Mas, em seguida, não há esperança Bit a pensar. Então é realmente um pouco acima. Então você está chamando a entidade que está sendo atualizada, hum, ou você está mandando a entidade que deve, você sabe, ser necessária em cima. Então você vai fazer o CMC. Se as mudanças foram, você retornar um seve trigo e, em seguida, fora do curso se eu estou esperando do que eu preciso de uma série pensar essencialmente. Se eu não declarasse isso como uma pia, então você não faria sentido. Tenho isto como algo falso. Tudo bem, então certo, aqui está toda a operação assíncrona é minha própria, então é o mesmo tipo de dinâmica para excluir tanto ajuste para copiar isso em vez de digitar tudo de novo, vá para excluir colado, mas em vez de atualizar. Vou remover, então, para excluir, ele é removido. Removido. Não tem na função de perseguição, facilitando a versão para ele. Então é removida a entidade em. Você acha que a elite é a operação de salvamento? Teríamos concluído sentado fora da linha base de operações croatas para a nossa tabela de autores. Certo. Assim, a partir daqui podemos criar um novo autor que podemos remover no autor existente. Podemos encontrar todos os autores ou encontrar um autor específico. Você pode salvar todas as alterações fora do curso que é necessário em nós também pode atualizar sobre Autor é dados. Tudo bem, então é isso por sentar. Nosso autor Buster passou por um pouco, mas fizemos algum trabalho base aqui que não precisaremos repetir novamente porque para qualquer outro repositório que esteja configurando, já
temos a base, então não teremos que refazer a base a cada tempo. Todas as diferenças seria que nós precisamos entrar e escrever o tribunal específico para
essa classe de dados. Esse repositório está sendo construído para
17. Autores de configuração: Ei, pessoal, bem-vindos de volta a este vídeo, nós vamos estar configurando nosso controlador AP para nossos autores. Agora, antes de começarmos a configurar isso, há alguns. Ou há pelo menos mais uma configuração que precisamos realizar antes que possamos começar
com sucesso a configurar nosso controle. E isso está na inicialização, não no arquivo CS. Então, quando eu tenho que começar sobre CS, eu vou estar indo para a seção de serviços em. O que eu preciso fazer é adicionar ao nosso início o fato de que precisamos de uma instância com escopo fora ou repositório. Certo? Então isso vai nos ajudar com nossas injeções de dependência. Vou dizer que o serviço é esse anúncio marcado. Tudo bem, então você pode sempre um bife. Eu olho para o que o escopo significa, mas é como ele é definido. Mas eu tinha a mira. O que eu preciso dizer é estou examinando o repositório do autor, o repositório do autor do olho, Andi, o repositório do autor, certo? Então, a mesma coisa que fizemos com o serviço seis com o serviço mais longo, exceto o serviço
mais longo adicionado única vez. Desta vez está no escopo. Você também teve transiente Agora cada versão adicionar esculpt, transiente são singletons Cada um tem sua própria maneira de trabalhar até agora horas que você tem escopo com minhas operações de dados Eu posso incluir a leitura sobre qual é a diferença entre cada Então no corpo fazendo com isso? Um corpo de conhecimento. Certo? Saiba, então você pode ler isso mais tarde. Mas faça isso esculpir. E havia Pasching I autor Repositório Onda, Repositório
autor em Se você precisa incluir quaisquer espaços de nome ausentes, em seguida, vá em frente e fazê-lo . Eu sei que ele está no arquivo de inicialização. Eu posso saber confortavelmente injetá-lo como uma dependência em qualquer outra classe que será usado
no escopo deste projeto. Então, o que estou me referindo especificamente a saber é o nosso controlador. Então nós temos nosso esporte controlador e nós já temos um controlador doméstico, que eu estava usando como um controle de teste. Então, se você quiser removê-lo, você pode deixar lá? É o nosso teste, então podemos removê-lo mais tarde quando nossa aplicação realmente floresceu em algo. Então agora eu vou apenas ir em frente e clique com o botão direito e clique em Adicionar controlador em seguida. Desta vez eu quero um controle vazio. Eu não quero qualquer controlador com funções pré-definidas para mim estará escrevendo sobre cada endpoint nós mesmos. Certo, Então um controlador de par vazio em, em
seguida, clique em adicionar Quer ter certeza de que damos nome para que o nome seja autores . Então controlador de autores, eu acho estranho. E quando a operação estiver concluída, temos o nosso controlador do FBI que temos ou rota, que é que os autores seriam um p I cortar autores. É assim que se chega a este controlador. Tudo bem, agora, enquanto estamos aqui estará fazendo algumas configurações baseadas mais uma vez, porque estaremos construindo todos os pontos finais em vídeos separados. Mas agora eu só quero fazer certas coisas para que saibamos exatamente o que este controlador fará, e então podemos visualizá-lo na documentação. Então um que eu quero um resumo alguém para em um resumo, Eu só escrevi que Oh, rapidamente segundo vídeo positivo e copiado. Se você quer nossa tortura e resumo, hum, outras coisas que eu vou fazer ou a próxima coisa importante que eu vou fazer seria injetar a dependência do repositório do autor. Então eu preciso de uma propriedade privada somente leitura fora do tipo I repositório autor. Tudo bem. E, claro, se você precisar incluir bibliotecas, vá em frente e faça isso. Então vou chamá-lo de autor. Repositório vai sublinhar o autor Buster porque, você sabe, isso é apenas a minha convenção de nomes para propriedades privadas. Tudo bem,
então, uh, uh, isso é sublinhado, Repositório de
Autor. E depois preciso de um construtor. Lembre-se, nós temos C turnê em então que generoso um construtor em. Então passamos em um parâmetro. Alguns só querem copiar e colar que apenas se movem rapidamente. Isso está no placar. Andi Dentro de nossos construtores, onde inicializamos a dependência é assim como muitos dependência é como você pode ter, você pode precisar de mais de um repositórios representados no controlador CME. Então você apenas adicionar quantos e certifique-se de colocá-los em como parâmetros e, em seguida,
inicializá-los aqui. Então é sublinhado. O repositório do autor é igual ao valor que o aplicativo passaria. Então é assim que a injeção de dependência funciona. Teríamos definido nosso serviço e nosso contrato nós deixamos o aplicativo saber que o serviço no contrato são desossados um para o outro. Então, o que quer que ele veja isso do que ele deve saber que ele interage com essa classe baseada em. Então, dentro de um controlador de quatro, podemos simplesmente passá-lo. Nós temos nosso objeto privado, mas então ele está sendo inicializado pelo que o “start off CS” está passando por cima. Isso é basicamente dependência. Injeção, mais uma vez, dot net core torna isso muito fácil. Agora, outra coisa que eu quero definir um barco ou controle. E isso é realmente para fins de geração de documentação. Mais uma vez, você quer se certificar de que sua documentação é realmente boa para quem vai consumir seu p I. Então eu vou te mostrar mais uma. Essa notação que você pode adicionar ao seu controlador em que é dizer ao documento que ele
produz o tipo de resposta em seguida. Então os tipos de resposta referem-se basicamente aos cabos http para que você tenha 200 para ok, 400 para manteiga. Pergunta etcetera. Sobre os diferentes tipos de resposta são escola status. Então nós sabemos que um começou a escola que nós obviamente vamos voltar. Ele vai ser o status 200, então eu posso dizer códigos de status porque eles nos deram
um enorme, um enorme, você sabe. Então estamos gaguejando pontuações pontos. Então, a partir deste Eelam, eu posso apenas ver o status 200. Ok, então isso significa que sempre que alguém olhar para o documento para isso, eles vão saber que pelo menos esta resposta pode ser retornada. Então vamos apenas salvar nosso, você sabe, apenas construir. Certifique-se de que não quebrou nada em então que vai para o modo de depuração. E olhe para a documentação que é gerada até agora no documento não está refletindo nosso Tudo bem, OK? Sim. Então, quero dizer, eles têm recuado um pouco. Portanto, nossa documentação para o nosso controlador a p a para autores não apareceria ainda porque não temos um ponto final para documentação. Então Songer está ignorando porque não há literalmente nada para documentos. O que? Então, quando começarmos a construir os pontos finais do FBI, então vamos começar a vê-lo aparecer nos documentos. Então isso é basicamente Ford sentado fora do controlador em seu, você sabe, nível
mínimo. A próxima operação seria começar a sentar ou obter endpoints, e então vamos começar a ver a verdadeira beleza fora ou controlador autor ganhar vida
18. Autores de Setup: Vocês, rapazes. Bem-vindo de volta a este vídeo, vamos começar a configurar nossos endpoints para o nosso controlador de autor. Não, perdi uma etapa na configuração básica para os controladores onde deveria ter incluído o serviço mais longo. Então nós vamos estar registrando. Ele iria sair do caminho, a interação ou a funcionalidade fora do nosso AP e FBI, porque o que eu vou fazer é introduzir na mãe Private Read único objeto neste vai ser fora do tipo I serviço mais longo em, Compreender? Para chamá-lo de sublinhado por mais tempo. Então eu vou no construtor em outro parâmetro. Eu vou desesperar a linha para que eu não vá muito longe, e vai ser fora do tipo. Eu serviço mais longo. Então eu estou apenas apresentando essa dependência. Então eu só vou ver o sublinhado mais longo é igual dedo do pé mais longo. Tudo bem, então agora eu injetei o serviço mais longo no controlador A p I em praticamente todos os outros controladores APEC. Bem, pelo
menos se você pretende registrar o que está acontecendo, ele precisaria ter isso como uma dependência também. Tudo bem, então vamos começar. Então eu quero Ah, no ponto final para conseguir todos os livros. Sei que vamos começar a olhar verbos. Então eu teria dito lá na introdução que você tem alguns verbos que você tem, obter post colocado em e bem, ser adiado e excluir. Então a primeira coisa que eu quero fazer é deixar nosso controle ou norte através do edifício e notações que eu sou foi definir um http, get função. E isso é literalmente tudo que você tem para digitar. Http. Obter. Tudo bem. Em seguida, eu vou dizer que eu quero uma tarefa pública uma pia. Andi,
eu queria fora do tipo I resultado de ação. Então os resultados da ação é o único se usar se você está acostumado a M v c Web regular, NBC do que você sabe, resultados de
ação. Eu realmente resultado é uma pequena extensão fora de opção resultados reunião Você tem mais que você pode retornar. Então, os resultados das opções. Você poderia voltar tanto. Eu sei mais. Não. Nos resultados do meu leilão, você pode retornar ainda mais, especialmente no contexto do FBI, onde você estará devolvendo certas coisas. Eu não retornaria em um aplicativo da NBC, então a tarefa que eu a ação resulta. Vou ligar para este. Pegue livros. Desculpe. Chame os autores. Meu amigo. Assim como conseguir autores. Este é o controlador do autor. Então estamos recebendo autores machucando minhas costas. Então estamos recebendo autores e então eu vou apenas adicionar um resumo acima disso rapidamente. Então este eu vou ver sair dos autores. Então eu acho mais fácil
fazer a documentação que ele começou, então,
você sabe,
refiná-la conforme você avança. documentação que ele começou, então, você sabe, Mas pelo menos começou quando você está fazendo a coisa faz colocá-lo lá para que você não se esqueça sobre isso. Então isso é obter todos os autores e ele retorna lista off autores. Tudo bem, Aan den. O que precisamos definir aqui seria o funcional que você deseja invocar. Então lembre-se que não estamos interagindo com a nossa classe de dados diretamente estavam interagindo é DT Além disso, o controlador fala com o DEA para transferir objetos Outono Oper com o meu entre os objetos de
transferência de dados sob autor. Então nosso repositório vai chamar o objeto de dados na situação em que nós vamos
esfregá-lo para o objeto de transferência de dados em, em
seguida, retornar o objeto de transferência de dados para quem está chamando isso de p I Então vamos olhar como isso está indo trabalho. Então eu começo vendo autores de barras é igual a em Eu estou chamando uma função assíncrona. Como eu digo Await sublinhado Autor relata história encaixado em para obter todos os autores que eu tenho a função encontrar tudo bem, agora que eu tenho todos os autores, Eu preciso dedo esfregão para meus objetos de transferência de dados eu fui ver var Oh ther ou vai var que é resposta é igual no DSO. Essa é outra dependência que eu vou precisar. Então eu teria incluído Autumn Oper no arquivo CS ponto de inicialização. Então não, eu aguento essa independência. Então você vê, medida que
você avança, você vai descobrir que você precisa de uma dependência diferente é do mesmo processo. Você apenas inclui uma instância disso. Então estamos lidando com Ah, eu limpei, então apenas dupliquei essa linha e eu estou digitando. Eu esfrego e vou chamar o objeto de minha ajuda. Então eu vou fazer a mesma coisa aqui onde eu vou introduzir uma vírgula e, em seguida, introduzir eu sou superior à minha lista fora parâmetros Andi assumir backtrack Andi, mudar para fora. Então, estou fazendo isso rápido. Então, copiar e colar é o seu amigo que quando você quer fazer as coisas rapidamente. Mas pode incluir qualquer espaço de
nome perdido ou usar o Oper Autumn. Não, temos a parte superior do outono injetada em seu pedido. Podemos começar a usar a parte superior do outono. Então, quando eu quero esfregar, eu diria sublinhar esfregão er não esfregão. Tudo bem, então eu vou dizer que eu quero esfregar. Então, se você apenas olhar para o incidente definição que mapas de pontos é qual é o destino
que você quer um mapa? Qual é a fonte? Então eu quero MET na lista de fora. Bem, senhor, objeto de transferência de
teatro. Nosso detalhe de autor é o que chamamos. Então a fonte seria autores. Tudo bem, então estou limpando meu lábio. Meus autores voltando do banco de dados no mínimo fora do tipo de objeto de transferência de dados. Lembro-me daquele objeto de transferência de dados Mais uma vez, eu amo você para controlar quais dados você quer. Não são assim, em outras palavras, que este é um registro completo fora do autor. Mas e se nós só quiséssemos enviar de volta algumas das propriedades são as colunas, alguns fora dos dados e não todos os dados. Se eu na minha autoria DT Oh disse que eu deixei de fora o i d em. Talvez eu não tenha incluído a biografia. Eu só queria o primeiro nome e sobrenome. Se essas fossem as duas únicas propriedades que eu tinha no objeto de transferência de dados, então esta operação aqui eu diria que sim, eu estou recebendo cinco propriedades, mas eu estou apenas pegando toda a ferramenta que importa em relação à classe em DSO. Tudo o que eu retornei para o chamador seria apenas as propriedades que o
objeto de transferência de dados definiu. Então é isso que os objetos de transferência de dados liga a fazer. Eles permitem que você controle quais dados são realmente apresentados para a pessoa que está chamando o FBI em relação ao que está realmente vindo do banco de dados. Não. Depois de ter feito uma base de dados, crânio esfregou-a. A próxima coisa que eu provavelmente gostaria de fazer é retornar, então eu quero retornar a resposta. Portanto, existem funções incorporadas para o tipo de resposta. Então, se alguém fez uma chamada para obter autores, então eu devolveria a lista dos autores com a nossa resposta esfriada. Ok. Tudo bem. Então isso é como um AP universal. Eu amo que qualquer um construindo um aplicativo em torno de um P. Eu saberia que quando eles vêem em 200 resposta, está
tudo bem. Então, tudo correu bem, então eu diria, OK, porque, bem, aquele Nick ou um P eu me dei aquela função de construção. Eu diria, Aqui está a carga útil com a resposta esfumaçada. Certo. Então a dor seria os dados de marcha ou a lista de autores para que ele retornasse. Certo, então voltamos. O Senhor. Não, eu quero me gabar disso um pouco. Então eu quero adicionar um pouco fora de log e um pouco fora de manipulação de exceção também. Então eu sempre tento colocar em capturas de pista. Certo. Então você tenta e opera, e então você pega qualquer exceção. Então o que eu faria aqui é tentar tudo isso. Tudo bem, então. O que eu vou fazer é dizer que você tenta isso em troca. Certo, , então, se houver uma exceção, você quer pegá-la,
então a exceção pega, então você pode Verdadeiro, mas eu prefiro talvez apenas responder para que não travar o aplicativo e ver, hum, retornar por solicitação. Preferia que eu não respondesse uma pergunta sobre manteiga. Provavelmente retornar algo assim Assim perguntas manteiga 400 pergunta manteiga sugeriria que o chamador ou o cliente feito pela solicitação para o servidor, que não é necessariamente as crianças, porque eles só solicitaram uma lista fora autores. Há muito pouco que eles poderiam fazer erroneamente e se ele bateu aqui e algo deu errado com nossa operação e nós não queremos dizer a eles que era sobre um pedido, mas queremos talvez sugerir que algo deu errado por todos os lados. Então você tem a função causa status marcado, certo, e então você pode passar no tribunal. Então é aqui que aprender alguns dos números vem torna-se importante. Portanto, o erro interno do servidor é 500. Eu acho que 501 é portão interno com Há algo que é assim que os diferentes números estão lá. Eu não estou dizendo que você deve memorizar todos os números lá. Certos números que você estará usando uma e outra vez em alguns fora deles são construídos em como OK e o pedido ruim e esse tipo de coisas são construídos em, mas, você sabe, é bom saber os números e segurar o dedo do pé você sabe, manobrar em torno deles. Então eu estou dizendo aqui que quando você tenta obter todos os autores, se fizermos tudo bem, você recebe a resposta 200 com os dados associados a uma chamada. Se algo der errado, no entanto, eu vou te dizer Bem, eu estou te enviando sobre aquele erro 500 para dizer que algo deu errado para ver se está ligado . Há até uma sobreposição. Então você pode até dar-lhes , uma mensagem para salvar algo,então você provavelmente pode dizer que algo deu errado. Entre em contato com o administrador. Tudo bem, então essas são pequenas coisas que você pode adicionar ao seu FBI para torná-lo um pouco
mais pessoal do que apenas você sabe, eu robô respondendo às pessoas. A próxima coisa que eu vou fazer é adicionar um pouco de registro, então eu quero amar no dsi. Sublinhar ponto mais longo em quatro, longo em quatro, e depois? Eu quero registrar quando a pessoa faz ah carro. Então isso vai atender a chamada. Então, quando ele atinge as tentativas indo log do dedo do pé e dizer que isso foi tentado. Então, a tentativa , recebe todos os autores, então não há forma real. Quero dizer, é o seu tempo que você está certo, as mensagens que você quer. Tudo bem. Você pode até colocar um coto de tempo. Então eu só vou usar interpolação. Bem, já
há um carimbo de data/hora embutido no tronco, na verdade. Então, eu só estou dizendo tentativa obter todos os autores em, em seguida, logo antes da resposta okey, Eu diria mais tempo. Isso é o log in quatro em. Eu provavelmente veria sucesso 40 autores de Deus fora. Então você sabe que essa ligação foi bem sucedida. Tudo bem, então você sabe, você pode apresentar esses registros em qualquer lugar que você julgar necessário. Eu só estou colocando aqueles lá, por exemplo, saquê. Você não tem que registrar cada pequena linha assim. Hum, você pode realmente soprar para o arquivo do amor. Mas, em seguida, onde se torna muito importante para mim seria no no tri na captura na parte
da igreja. Desculpe. Então, logo antes de eu voltar, foi ah, na seta. Eu gostaria de registrar para fins de auditoria interna dot log mais longo ponto. Terrível porque ele pegou na exceção em seguida, os detalhes que eu estou colocando neste seria e eu só usei inter poluição aqui. Diga, hum e assim ele seria meu objeto de exceção aluguel. Então eu quero registrar o que o ar real awas ce que a mensagem pode ser, mas não na exceção. Então, às vezes você tem que comer essa mensagem. Então você tem que comer essa exceção interna com mais detalhes. Então, se alguma vez houver uma era, eu quero ver o que o ar awas, Andi talvez quaisquer outros detalhes necessários. E então podemos dizer-lhes que era um conde interno. É depois de tudo que podemos apenas fazer uma compilação rápida, certificando-se de que tudo está bem em. Uma vez que isso tenha sido bem sucedido, podemos apenas entrar em depuração mais do que ver se o nosso controlador do FBI autor e não há como
aparecer em nossa documentação. E lá vamos nós. Então, temos autores não listados em. Nós vemos o nosso um p. Eu chamo um p I cortar autores e nosso resumo obter todos os autores em. Então vemos aqui que bem, o cordão, ele sabe que vai voltar é 200 sucesso. Então podemos continuar, hum, informando que, você sabe, teríamos o potencial de 500 em outras coisas. Então a coisa legal sobre o Slugger é aquela arrogância. Eu baixo-te para testares o “A” bem aqui no folheto. Nenhum carteiro permite que ele faça certas coisas que o futebol não permite que você faça, ou é mais difícil fazê-lo. Soldados é bom ter ambas as ferramentas na mão, então vamos apenas testar sobre um p a direita saber que alguém vai negociar voto em, em
seguida, clique em execuções. Diz que não é necessário o Parlamento. Sem problema. Executamos em Dwell. Não há autores em nosso banco de dados, verdade. E realmente tudo bem, ele realmente funciona. Então a pergunta onde eu estava que era nossa operação get no corpo da resposta estava em branco porque não havia nenhum autor no banco de dados de qualquer maneira. Mas vemos que a nossa resposta chamada foi 200. O que eu vou fazer é estragar algo na definição das nossas
conexões de banco de dados . E então eu vou tentar forçar 500 ar alguém do tipo. Eu estou fazendo isso. Podes fazê-lo comigo, mas certifica-te de que corrigiu a Philia Theron. Mas se você não quiser fazer isso, não há problema. Você pode apenas me observar. Então eu estou apenas mudando o transtorno para que ele se sinta na conexão do banco de dados em eu estou tentando forçar um estagiário a sair, um, erro
do servidor. Então vamos voltar para o modo de depuração e tentar isso novamente. Desta vez carteiro divertido tão atacado na URL que seria o host local no
número da porta barra ap i slash autores. Então eu coloquei isso no pedido sobre DITZ. Eu recebo a operação e clique em enviar em sua tentativa de passar. Então agora você vê que ele está me dando sobre a mensagem. Algo deu errado. Entre em contato com o administrador sobre o código de status é 500 para dizer seta do servidor interno. Tudo bem? Não, a última coisa que vou fazer é olhar para o tronco bem rápido, só para mostrar como é dar uma olhada no fogo do tronco. Você vê onde ele disse OK em para tentar obter todos os alunos ou Desculpe, todos os autores Meu mal. E então foi bem sucedido em. Depois, a segunda chamada passou. Tentou colocar todos os autores em, então estamos vendo a seta onde ela está. Não nos dizer que uma rede relatou isso que isso em então é bem, este ponto deveria ter sido para a Sra. interior Então esta era a mensagem em. Então eu disse, Dash, dê-me qualquer mensagem interior. Na exceção, não
havia nenhuma. Mas isso seria suficiente para explodirmos internamente. Então você não quer dizer aos usuários os detalhes sobre por que ele falhou necessariamente. Mas você quer manter o caminhão fora, em
qual caldeirão, então por quê? Então essa é uma boa maneira de saber o porquê. Então isso é, uh, essas são apenas algumas coisas boas para colocar em seu para ir e procurar o caminho. Desculpe o arquivo de log, mas deixe-me apenas verificar se estou saindo do modo de depuração, certificando-se de corrigir o arquivo de
configurações do APP para que eu não encontre esse problema novamente. A Andi. Então essa é uma boa maneira, uma boa introdução para configurar nosso primeiro endpoint. Então isso é obter autores. O próximo seria obter autor, que seria um autor, então vai ser bastante semelhante. Também está em http. Fique assim, eu só estou indo dedo do pé. Copie isto. Então eu vou ver http. Obter. Mas então este eu queria que ele soubesse que este get requer parâmetro. Então, sempre que você tiver um parâmetro um ou mais parâmetros, você sabe, você pode apenas escrever o pai para capturar aspas de pátina, e então usando abraços atuais, você indica o parâmetro ou os parâmetros. Neste caso, só
temos em idee quanto? Eu só quero copiar tudo isso. Esta função é diferente, filho. Aparecem. Sim, ainda assim, mova-se um pouco mais rápido. Certifique-se de obter May, um aparelho, cartão
de crédito. Então você pode digitar. Eu disse-te se quiseres. Você não precisa. Copie e cole. Deixe-me e Tendência fazer controle de danos. Mas então o que eu quero fazer é mudar isso de obter autores para obter autor. E, em seguida, eu também quero especificar o parâmetro que é necessário. Então eu estou recebendo o autor, certo? E eu estou esperando um parâmetro do tipo I D. Eu estou deixando o P que eu controlar. Eu sei que isso recebe requer um parâmetro do tipo I d. Então o que? Eu vou estar fazendo aqui é alma muito semelhante. Deixe-me copiar o madeireiro morto,
e eu vou ver informações mais longas e tentado a obter,
e então ele pode ser o mais profundo da Teyla que você quer colocar no autor. Deixe-me copiar o madeireiro morto, e eu vou ver informações mais longas e tentado a obter, Então eu vou dizer que eu d cólon. Certo? Então eu estou registrando exatamente o que foi tentado com o i d. E então eu vou apenas especificar o i d que veio através do parâmetro então
tentou obter também com idee que logo em seguida, sob que eu vou salvar o nosso autor é igual para Ah, espere no placar. Ele não BB autor, direitos de
repositório não encontrar por i d E então eu apenas passando o i d. Tudo bem, então eu vou ver que minha resposta será servir resposta ire é igual a e, em seguida, sublinhar meus pontos superiores esfregão . E então eu sou um ovo de esfregão. Uma única instância fora do autor. Então, a última vez que fizemos o menos fora autor detalhado desta vez apenas sendo uma única instância fora autor DT ou assim mapeando isso para o autor que foi coletado em. Depois fui responder. Desculpe, eu estou com o retorno ok com essa resposta. Tudo bem. Então, é claro que você quer adicionar log aqui para ver com sucesso tem autor com idéias. Então conseguiu autor com sucesso com Eddie. Tudo bem, então é bom ter um bom registro de detalhes para que até outra pessoa possa olhar para os registros e entender o que estava acontecendo. Mas vamos fazer um pouco mais nesta operação. Então, mais uma vez, temos ou tentamos pegar como sempre. Então deixe-me só ter que tentar Top gera esse canhoto. Então eu vou tentar tudo isso. Tudo bem, então na seção de gatos, eu gostaria de definir a mesma cerveja e começar a marcar mensagem. Mas então eu sinto que eu vou me repetir porque eu vou fazer isso estão em outras funções também. Assim como outros endpoints. O que eu vou fazer é criar uma função e eu vou chamá-la de privada, e vai ser fora do tipo escola status, os resultados. Então a razão de usar o status bons resultados é que ele vai estar devolvendo essas coisas para a escola, que é praticamente um resultado escola status Tipo de dados Direto sobre. Vou chamar esta vez da era interna. Não, uh, e vai levar ah, parâmetro
string chamado mensagem. Certo? Então, a expectativa aqui é que ele vai lidar com o registro nele também, Eu retornei o início da escola que é necessário. Então deixe-me apenas dizer que, em primeiro lugar, eu quero o amor do dedo mais longo no erro porque essa é a única razão para esta função ser chamada em. A mensagem é o que vai ser amado, certo? Então fui atrás. Certifique-se de ter uma passagem apropriada ou uma mensagem cada vez que entrar neste carro. A seguir, vamos voltar à gagueira. Marcou com o com o erro. Onda. Andi, estou recebendo um erro aqui. Oh, arte. Então o tipo de dados está errado. Então está dizendo que eu deveria estar voltando. Objeto é ou não um resultado de código de status. Então, se fosse apenas status marcado, 500 seria iniciado resultado marcado. Mas como eu tenho a informação adicional com ele, é um resultado de objeto, certo? Então, quero dizer, você não precisa,
você sabe, você sabe, se preocupar com os diferentes tipos de dados mais frequentemente do que não. Se ele passar o mouse sobre o que quer que seja, você precisa retornar, você verá que tipo fora bater o tipo que é, e apenas certifique-se de que você tem o tipo de dados apropriado sendo representado. Então, quando esta função é chamada, ele está indo dedo do pé. Amor. Quaisquer que sejam as mensagens passadas, eu só vou devolver 500. Então isso significa que eu posso apenas fazer este telefonema Sean para que eu possa apenas ligar para o erro interno sempre que chegar à exceção. Mas
lembre-se, lembre-se, preciso da mensagem. Então precisamos fazer a mesma coisa onde eu recebo a exceção. Então eu vou apenas passar em uma string valores então usando interpolação e quero construir uma string semelhante ao que foi colocado no ar de log, alguns realmente apenas vai tirar tudo isso em. Só vou passar como mensagem, certo? Então, quando chegarmos ao caminho da captura, espero que não. Mas se alguma vez fizermos, então ele vai chamar seta interna, passando a mensagem de exceção na exceção interna em. Então, quando ele é chamado, ele vai fazer o registro apropriado e, em seguida, retornar o início da pontuação, que seria então retornado para a função direita em então eu posso realmente apenas ver retornar aqui. Então eu vou estar devolvendo o Arqueiro Interno agora mesmo. Posso remover o arremesso. Assim que chegar lá, vai devolver o valor que esta função chamou de advogado. Então, isso significa que sempre que eu desligo a seção da igreja, uh, ligo. Eu posso apenas fazer isso. Um forro onde apenas chamado segundo interno foi substituído que no anterior. Porque eu queria ser consistente. Quero que tudo flua de uma maneira. Certo. Portanto, o comportamento das exceções que estão sendo capturadas deve ser a costura. Você pega a exceção em você apenas fazer um log no retorno para começar uma escola em 500. , Claro, se quiser mensagens diferentes, não. Então você quer dizer que precisa olhar, você sabe, encontrá-lo um pouco. Mas, finalmente, por 500, não quero ser mais elaborado do que algo deu errado. Realmente. E verdadeiramente certo. Outra coisa que eu quero fazer dentro do meu autor seria verificar se eu realmente recebi de volta alguma coisa quando eu fiz esta chamada. Então eu não quero apenas devolver um 200. Ok. Quando não havia nada de telefone. Certo? Posso devolver uma lista vazia e dizer 200. Certo, mas não havia nada ligado. Que belo passeio. Bem, você sabe, Green fora procurado nesta situação. Eu não quero que você procure por eu com o, hum desculpe. Autor com i d dois e, em seguida, não obter o resultado seria obter um 200. Ok, então o que eu vou fazer aqui é eu vou ver se Autor é não. Então eu quero voltar. Uh, não telefonou. Certo, então não ligue para esses quatro ou quatro, certo? Você deve estar familiarizado com para quatro. Quando você clica em algo na Internet em, em
seguida, ele leva para fora para uma página de quatro e diz, Ei, você provavelmente acabou ou você está procurando por algo que não existe. Isso é um 404 Então é isso que eu quero. Se você começar por um autor com i d 100 quando não há nenhum autor com i d 100 ou pelo menos não
foi telefonado no banco de dados, Então eu quero registrar e ver. Não era o telefone. Então esse retorno iria parar a execução, certo? Aqui então eu poderia apenas adicionar registro Log em Fort asi mais tempo que log talvez avisar o Sr. C Warne eso você pode determinar o grau fora do, hum a intensidade é o perigo de cada operação de cerveja, certo? Alguém para avisar que o autor com i d Andi, Basta usar interpolação não caiu. Tudo bem, então eles procuraram. Não foi encontrado. Tão pouco vai para o Deeble mais do que testar este endpoint. Tudo bem, então swagger está nos mostrando que temos um novo endpoints que está fora do tipo obter quando eu olho, eu vejo que ele tem um parâmetro obrigatório chamado I d. direito no dit está retornando 200 sucesso. Então vamos voltar e adicionar mais anotações para isso. Bem, vamos apenas sacudir em Cavaleiro. Tudo bem, então no Postman, vamos testar este novo ponto para que eu possa sempre consultar a documentação para ver como é a pergunta
deles. Parecia barra ap barra autores barra barra no valor i d. Certo? Então o que eu vou fazer é dizer, barra ap barra autor barra Uma vez que eu não tenho autores em meu banco de dados, então um deve produzir quatro ou quatro em. Na verdade, vou depurar com você. Então o que eu vou fazer é voltar para o controlador. Vamos colocar um ponto de ruptura. Então vamos passar por aqui só para ver exatamente o que acontece. Ele sai do caminho. Então, quando eu for ao carteiro do cara atropelado, mande-o. É o meu ponto de pausa. Então lá vamos nós. Então ninguém foi chamado no ponto certo, e esse é sempre um momento feliz. Se eu verificar, eu d. Nós vemos que o valor um está sendo passado no que usou F 11 para passar. Então vai tentar a operação. Em primeiro lugar, faz logon ,
então sim, ele vai entrar em tudo off que on. Então ele vai tentar encontrar, disse autor. Então, na verdade, vou pular desta vez porque vai passar por outra causa. Então eu só vou usar este pequeno botão play para pular para a próxima linha em. Então você vê, esse autor é realmente não. Então ele não conseguiu um autor do banco de dados com I D um ligado, então ele vai para a nossa, hum seção onde ele deve adorar com o aviso de que não foi telefonado. Sim, e vai fazer isso. Então ele retornará, não telefonou, então pressionando se eu continuar a execução. Então, quando eu olhar para trás no correio, você verá o status de quatro não telefonados sendo devolvidos. Tudo bem, então podemos controlar as expectativas sobre as interações com o A P deles. Eu lancei status, marquei atualizações. Então, ainda assim. Bem, eu não disse em um verão para este aqui, então nós só tivemos um resumo sobre ir dizer Vá em frente. Autor por I d onda parâmetro parâmetro nome é idéia pode deixar isso sozinho e retorna. Autor é obrigatório. Tudo bem, então nada sobre um p uma documentação terá um pouco mais de informação sobre isso. Não. Outra coisa que eu vou fazer é que estes produz anotações de tipo de resposta para o diferente, hum, endpoint. Então este ponto final é capaz de retornar bem? Ou um 500 alguém para dizer abaixo para obter que ele faz OK, mas ele também faz o status 500 status. 500 erro interno do servidor. Bem sobre isso. Eu vou fazer a mesma coisa para este aqui, que também faz o bem. Ele também faz a seta interna, mas também é capaz de fazer um status 404 Então é que faz para todos os quatro não telefonou. Tudo bem, e então vamos dar mais uma olhada na documentação só para ver que diferenças essas carnes. Muito bem, nossa documentação inclui o nosso resumo. Quando eu não no get ofertas, Eu vejo que ele não está ciente de que o 200 sucesso ou 500 seta servidor lá bem possível. E se eu olhar para aquele com o i d. Eu vejo que eu poderia obter um sucesso fora para quatro e um 44 tem sua própria carga útil, o
que teria visto na resposta onde ele está nos dizendo o tipo, o título, o status, as sociedades verdadeiras, eu acho que fora que está sendo devolvido quando nós chamamos que não função de telefone em DSO. Nossa documentação está representando o fato de que isso é o que um quatro ou quatro pode ter nele, certo? Então acho que podemos preencher esses detalhes com nosso custo, hum, conteúdo se precisarmos dele da mesma forma que poderíamos enviar uma mensagem personalizada com nossos cinco países, então isso é praticamente tudo para nos separarmos, Obter e pontos. Em seguida será configurando ou criar em ponto para que a próxima vez que testamos para obter, então devemos ser capazes de validar que os dados estão realmente sendo recuperados do banco de dados.
19. Autores de criar o Endpoint: Bem-vinda de volta a isto. Ouça, vamos configurar o ponto final de criação para os nossos autores, controlador
do FBI. Então, começamos este exercício escrevendo em uma nova tarefa assíncrona fora do tipo I ação resultado em. Então vamos ligar para este. Criar nele vai estar esperando um parâmetro que eu vou ver isso usa anotação que é do corpo, certo? Então isso significa que quando a pessoa ou o cliente está fazendo uma chamada para esses pontos finais, eles são esperados para passar em nosso corpo com algum conteúdo. Agora, é
aqui que os objetos de transferência de dados definitivamente entrarão em jogo porque agora
só temos detalhes do autor, que é aceitar idee. Primeiro nome, sobrenome bio. Andi, eu listo livros. Essencialmente, quando você está criando um autor, um que você não precisa fornecer um i d. em D não esperaria que eles forneçam a lista fora dos livros. Certo? Então o que eu vou fazer é eu vou criar uma nova classe, e eu vou apenas usar o mesmo autor,
DT ou classe, DT ou classe, Mas o arquivo de classe detalhe autor, em vez disso. Mas vou criar uma nova turma em algum lugar para ver público. Além disso, em. Então vou chamar este autor. Desculpe, autor. Cria e T.O. Tudo bem, então. Dentro deste autor criar GTO. Vou ter definições para o primeiro nome, sobrenome na biografia. Então isso é tudo o que eu quero que qualquer um seja capaz de me fornecer para a criação muitas vezes. Autor. Tudo bem, então eles esperavam dados mais uma vez para criar o também seria definido e também criar DT Owen. E a partir daqui, eu posso colocar, hum, certeza que eu sei evitar Segundo, fazer o que é necessário. Hum, deixe-me colocar as quatro balas primeiro nome e sobrenome a biografia eu vou me opcional. Então, depois de incluir algumas bibliotecas para obter essas anotações. Eu também posso colocar em diferentes anotações, como para o tipo de dados e o comprimento máximo. E então eu não vou, você sabe, impor tudo isso. Mas eu só estou me certificando de que eu estou avisando que pelo menos esses dois são necessários em seguida, a biografia é assim? Tudo bem,
então, definindo este autor criar GTO voltando ao meu controle, que eu deixei muito incompleto, eu saberei. Digamos que o parâmetro que eu estou esperando do corpo deve parecer algo como o autor criar DT. Além disso, se eles não colocam mais nada, eles precisam ter certeza de que eles têm pelo menos primeiro nome, sobrenome e biografia sobre isso. Estou forçando ainda mais que nome e sobrenome são necessários. Então voltamos para o controle. Tudo bem, então começamos a definir o que exatamente ou criar deve fazer. Não, vou fazer uma série de verificações fora do curso. Primeiro dia eu vou apenas fazer minha tentativa. Pegar por dentro fora da captura. Eu só voltarei. seta do servidor interno ativaria o erro. Uma função chamada Desculpe,
Andi colocou minhas exceções. Uma função chamada Desculpe, Só estou fazendo isso porque é a coisa mais fácil de fazer para ter certeza que eu não esqueça. Certo. Então eu tenho isso. Eu sei o que vou fazer. Nós vemos se o objeto que é Oh, bem, desculpe eu coloquei na classe e fazendo colocar lá o nome. Desculpe. Então, do corpo, eu estou esperando no autor, objeto fora do tipo autor cria detalhes alguém para dizer se o autor é não. Então isso significa que eles tentaram enviar um pedido Mas não havia dados do autor ou nenhum
dado esperado desde que eu vou apenas retornar. Ah, mas pedido. Foi sobre um pedido da sua parte. Tudo bem, então, há esse objeto ou essa propriedade que eu posso chamar de Estado Modelo, que está basicamente rastreando o status de validação fora dos dados. Certo. Então lembre-se que nós apenas colocar em alguma validação para dizer certas coisas são necessárias, e assim por diante Estado do modelo é basicamente rastrear qualquer coisa que está acontecendo através dos
valores de dados . Então, praticamente é boa prática dedo, fazer todas as verificações antes de ir em frente para transformá-lo mais tarde. Porque o fato é que você quer ter certeza que no momento em que você está chamando o
dedo do banco de dados colocar algo no banco de dados que tudo está em ordem. Então, estou checando se é, saiba que estou dizendo que é só um pedido. Eu não vou mais longe. um Se fosseumcaso em que você só queria autores com você precisa de nomes são sempre gravados. Deve ter algo único que você verificar se há singularidade em. Então você retorna apropriando-se. Por isso, neste momento, é só o que estou a fazer. Então eu não posso nem colocar. Ah, amor. Então, só assim com essas declarações, se você tem uma terra, você não precisa das teses dos pais. Mas uma vez que você tem mais de um, você precisa de parênteses são apenas copiar o log. Uh, bem, deixe-me apenas dizer sobre o placar. Amor mais desgastado. Não, não nasci. Eu só vou ver isso. Eu só vou ver se o pedido vazio foi enviado, tudo bem. E depois, fora do curso, posso colocar outro madeireiro. Começo a ver a submissão. Tentativa de envio do autor. Então nós sabemos. E então este teria sido uma informação. Certo, então estamos informando a todos que alguém tentou criar um autor. Se a carga do compartimento não foi, então estamos apenas avisando para ver o Intercoastal submetido, e então estamos retornando que houve um pedido ruim. Eu provavelmente posso colocar no modelo. Ficou. Bem, deixe-me complicar isso. Mais do que a autoridade costumava ser. Então isso é apenas uma informação. Então podemos seguir em frente com isso, então podemos dizer verificar os estados modelo. Lembre-se que o modelo aqui modelo estado é praticamente, hum, dedo do pé
cansado qualquer validação teria imposto ao nosso DT. Oh, certo. Então o nosso DT sempre dizendo que estes dois são obrigados alguém a dizer, Se não for assim. Eu gosto de fazer os cheques ruins primeiro, certo? Então, sempre verifique se tudo não está em ordem. E se não estiver em ordem, eu não prosseguirei. Se não houver estados de modelo, isso é válido. Então isso significa que se há alguma coisa ah, barcos, os dados que estão sendo enviados que não cumpram os critérios de validação e que nós resolvemos então eu também vou retornar por solicitação. Certo? Mas então eu mudaria o mais perdê-lo ligeiramente para ver. Hum, você sabe disso. Waas incompleto. Nossos dados do autor estavam incompletos. Tudo bem. Outra maneira legal de fazer isso seria em vez de ver autor cada vez que você acabou de dizer, deixe um nome controlador e sua escolta que permite que você apenas obter o controle eo parente para onde o tribunal está sendo escrito. Então, em vez disso, eu estava tentando dizer, autor, cada vez,
autor, autor, cada vez que você poderia apenas ver o nome do controlador, que é ofertas e, em seguida, ver as mensagens, pelo menos no registro, é mais fácil dizer. Foram ou qual controlador que mensagem mais genérica está associada com o nosso qualquer buraco. Há tantas maneiras de fazer isso que se eu tentasse colocar todas as coisas fora do curso, nunca
acabaríamos. Então, você sabe, nós podemos ir em frente e aprender e crescer à medida que avançamos. Não, depois de eu ter tirado minha bunda para fora do caminho. Se ultrapassar estes dois cheques, algo deve estar certo, certo? Então eu vou dizer var autor ou que tipo de reutilização Autor var. Vamos ver, Record é igual a em então você sabe o que eu vou dizer Não quero dizer Autor D T o. Então você sabe que este é o GTO vindo do parâmetro que eu vou salvar o nosso autor. Tudo bem, então eu só estou tentando joelho minha variável para que qualquer um possa olhar para o tribunal e, você sabe, facilmente associar, hum, variáveis com onde eles pertencem até agora, autor vai ser igual a minha mãe por ter esfregado. E então eu fui ver Eu quero TEM acima do autor da classe de dados. Desta vez, quero-o acordado. Seja qual for o dado que está vindo através do autor E T O. Em que, eu sou ganha depois incluir algumas coisas que eu posso obter a classe de dados autor envolvido em. Então o que isso está fazendo é a direção oposta, ou então eu estou recebendo os detalhes do cliente com os dados ligados. Então eu vou dizer OK, minha parte superior. Quero que pegue os dados que foram incluídos aqui, que envolveria o primeiro nome, o sobrenome e a biografia. E então eu quero que você apenas limpe para a classe de dados que tem todo o resto de qualquer maneira , certo? Então, se há algo faltando, ele vai ser inserido. Ele será inserido mais tarde. Ou pelo menos podemos controlar essa. Certo? Assim, no mínimo, uma vez que este é esfregado, pelo
menos o primeiro nome e sobrenome muitas vezes autor deve ser esfregado. Se a nossa biografia está presente que ele será marcado se não estiver presente do que é bem, você sabe, não
é conseqüência que nós não fizemos isso exigir Não ter feito o mapeamento, eu vou tentar e salvar as alterações. Então eu vou dizer var é sucesso é igual dedo longe. É a chamada para o meu autor. Eople autor de Bus história dot Criar direito sobre os sucessos de vírus resultantes que se lembram que isso vai retornar um booleano. O que? É bem sucedido ou não? O que parecia com sucesso ou não em então a criação está esperando uma entidade fora do tipo autor, que eu só tenho tendo feito o mapeamento. Então, vou passar isso. Então, depois de fazer isso, vamos ver se não foi o sucesso dele, ou
seja, se não foi uma operação bem sucedida do que eu provavelmente vou querer fazer logon no DSI. Eu simplesmente amo rapidamente e dizer criação de autor, Campo em. Então eu chamaria minha funcionária interna, então eu devolveria isso. Então, quero dizer, há tantas maneiras de fazer isso ler, em
seguida, desde que tudo o resto é velho t. Então isso significa que se isso foi bem sucedido, desculpe. Então, o ar interno da mensagem seria “Sinto muito”. Estou misturando, misturando, saindo de mim mesmo. O que eu vou fazer aqui é realmente passado nesta mensagem como os direitos de seta do servidor interno. Ok, então eu vou passar um campo de criação de autor como a mensagem. Então é isso que vamos ser registrados. Meu corpo está ligado. Em seguida, o usuário vai apenas obter o algo deu errado. Administrador de contato de peça com um status resfriado 500. Então, se isso foi tentado e não foi bem sucedido, então eles vão obter 500. Então, você sabe, eu estou diferenciando entre pedidos ruins e 500 porque mais uma vez, mas o pedido significa que os clientes não fizeram algo certo nos 500 significa que nosso lado falha. Então eles fizeram tudo certo, e ele chegou a este ponto, e falhou. Então, ou campo aqui ou professores não excepcional e campo. Ou precisamos dizer a eles que algo campo, que é uma flecha 500. No entanto, no final, fora de tudo isso desde que nenhuma dessas partes de fogo seja atingida ou essas. Se as declarações são atingidas, então podemos assumir com segurança que o retorno que criamos com sucesso para que eu possa retornar. Começa a esfriar. Crie o Ted, que eu acredito ser um de dois buracos. - Sim. Então 200 está bem. É um “ok “, Andi, algo certo? Então criado seria dizer, Iêmen você criou algo em tudo está bem e então vai passar aqui e se acabarmos, vemos que está esperando uma corda. Você está em algum valor de objeto. Então o que eu posso voltar aqui seria, ah, você sabe, criar Ted e então ver criar, depois passar um novo objeto com os dados voltando do autor, certo? Assim, uma vez que nós teria criado também com sucesso, esta entidade irá realmente atualizar automaticamente com o novo I d. Por
exemplo, em qualquer coisa que eu provavelmente teria sentado após a submissão, Então isso é apenas indo para retornar os detalhes do que foi criado. E então eu posso incluir eu mais aqui,
uh, uh, Oliver ponto na íntegra para ver. Também foi criado com sucesso. Eles são criados autor nosso Vamos apenas deixar essa oferta criando. Tudo bem, então vamos ficar com isso para dar uma volta. Fizemos um pouco fora do trabalho e depois fora do curso. Quer testar cada cenário para ter certeza de que eles estão funcionando como esperamos antes de eu seguir frente, embora eu tenha negligenciado colocar em uma notação. Então deixe-me dizer que este é um post http. Tudo bem? Então, uma vez que fazemos um post responder ou post request, eles vão saber que ele deve atingir esta função por esta ação. Em vez disso, eu também vou deixar que ele saiba os diferentes tipos de resposta que nós produzimos. Então não produzimos. Ok, mas nós produzimos a ferramenta 1 criada corretamente, então esta vai deixar você saber que foi criada. Ele não vai fazer um 404, mas foi um pedido ruim, Então estoque faz para 100 é maus pedidos. Tudo bem, então. É claro que você sabe. Também deixá-los saber quando eles por sua vez nos seta ocorreu. Tudo bem, sobre isso assim, mas não sair começou a colocar o meu resumo. Então este é o maior ser para a maioria dos programadores lembrando-se de colocar o verão para
que este seria cria no autor em então O nome Param é autor DT. Oh, então eu vou ficar aqui. Bem, eu posso realmente deixar isso em paz, e eu não preciso especificar nada que está sendo devolvido. Então vamos desmascarar mais do que dar uma volta. Tudo bem? Assim, a documentação está funcionando, vemos ou postamos há um exemplo do que é esperado. Certo? Então lembre-se que usamos o DT Oh, nós não usamos o objeto autor completo. E então o detalhe que usamos era o primeiro nome, sobrenome. E por esses são os únicos
dados necessários que devemos passar. E está nos dizendo que deveria estar no corpo do pedido. Certo, então vamos testar isso com o carteiro. Então eu fui e criei uma nova banheira, e então eu coloquei os pontos finais, que é escola anfitriã local a bordo barra ap barra autores. Mas nós temos,
ah, ah, um pouco dar ao luxo de fazer aqui. Então, um que não estamos fazendo, eu entendo, mas estamos fazendo um post. Então temos que mudar esta chamada para postar. Tudo bem, então
no corpo. Precisamos especificar alguns dados, então eu vou para Bem, você tem para mim um de seus dados codificados elin. Uma variedade de binário de gráfico quells que el Então eu vou fazer rock em. Então eu fui mudar isso de texto para Jason. Tudo bem, então eu estou passando em um travesseiro que se parece com isso, e isso está em um tipo de dados são ah, tipo
antigo coisa chamado Jason. Certo. Então Jason é como um padrão quando se trata de enviar e recuperar dados, e é pelo menos alugar No on. É muito fixe. Ele apreendeu. Compreender? Então eu vou apenas copiar esta amostra da documentação em Postman Colá-lo em. Em seguida, para o valor do primeiro nome que eu vou colocar deixe-me colocar meu nome para o valor do sobrenome. Colocarei meu nome também nisso. Vou passar uma biografia em branco. Não é expectativa. Aqui está que uma vez que eu apertar enviar, ele vai chamar esse ponto final. Então o que eu vou fazer é voltar para cima, hum frio e eu vou definir um ponto de ruptura nas criações. Certo? Então, uma vez que
eu fizer isso, eu vou conhecer Hit, enviar, e é o nosso ponto de ruptura. Então, bem, dia
feliz. Se eu passar o mouse sobre o GTO, então eu vou ver que bios em branco. Mas o nome e o sobrenome estão realmente presentes. Tudo bem, então eu tenho certeza que se eu continuar, então seria um sucesso. Então as imagens pressionam f five e continuam através da execução. Andi, verifique o carteiro para ver qual é a resposta. Waas e eu estávamos errados. Na verdade, estou recebendo 500 por sua vez na Terra. Então algo deu errado ao longo do caminho. Sabe, em vez de passar e pisar, posso distrair minha fechadura aqui no meu tronco, estou vendo o que está sendo dito. Então diz que a flecha está faltando. configuração do esfregão não é suportada. Esfregar. Sim, eu entendo completamente o que é isso. Um barco. Então deixe-me sair do barco B ancorado e consertar isso. Então o que aconteceu é que nós introduzimos um novo DT Oh, na forma de autor criar GTO em. Estou a tentar esfregá-lo. Mas adivinha o que eu não fiz. Eu não disse a Autumn Upper para conhecer um barco que mapeia tão de volta aos esfregões. Eu preciso especificar que há eu estou esfregando que existe entre autor e autor. Criar de acordo. Tudo bem, então você vê Ah, seta
muito simples, por causa de uma configuração ausente. Mas é sempre bom. Esse é um dos benefícios fora dos registros porque, você sabe, teria passado tempo Trento, passar por um filipino cada terra para ver onde deu errado e tentou ver a exceção. Mas quanto mais tempo te dizendo, foi por isso que falhou. Então o usuário está vendo que algo falhou. Entre em contato com o administrador que eles chamam você é o amor um bilhete com sua empresa e , em seguida, você pode entrar no log e investigar exatamente o que aconteceu. Certo, então vamos tentar de novo. Vamos voltar para o barco ancorado no teste ou um P I novamente. Então vou tentar enviar os mesmos dados com o Postman. Então é por isso que o carteiro é tão útil porque salva suas sessões. Ele salva seus testes e você sempre pode apenas voltar a escola e clicar. Mande em frente. Então vamos ver se ele passa. Então é o meu ponto de ruptura, e eu vou apenas pressionar uma fogueira para que continue. Então deixe-me revisitar o carteiro. Lá vamos nós. Então, eu vou voltar. Começo-nos em direção a um para ver que foi criado com sucesso em Ele também está retornando todos
os detalhes fora do autor recém-criado. Então,
este é
o primeiro no sobrenome. E bem, não
houve preconceito. Deixe-me tentar outra pessoa. Então, em uma chave Ah Evans Andi, Ela é inteligente. Essa é a nossa biografia. Então deixe-me clicar. Mande em frente. Estou apenas removendo o ponto de ruptura para que, você sabe, não
tenhamos que atrapalhar o deles toda vez. E há um K. Evans com sua biografia. Então, a coisa sobre o não necessário seria que se eu falhasse em enviar um desses campos
obrigatórios. Então deixe-me assumir primeiro e primeiro Emma Lawson foi adquirida. Vou pegar o primeiro nome para definir o ponto de ruptura aqui. Apenas o dedo do pé, certifique-se. Então desta vez eu quero um ponto de ruptura em que eu vou clicar em enviar. Bem
, nem atingiu o ponto de ruptura. Ele acabou de me dizer que é um pedido ruim de 400 para Barroso. Erros de estado do modelo seriam incluídos para dizer que o campo do primeiro nome é obrigatório. Então esse é o poder desligar essas respostas. Então, se você realmente não atingiu o ponto de ruptura, só sei que talvez eu mis cronometrado definir um ponto de interrupção e enviar, mas provavelmente atinge este. O estado do modelo não é válido. Os dados do autor estavam incompletos. Em seguida, ele retornou uma missão de manteiga dizendo a você o estado modelo em com o mais um teste onde eu vou chamá-lo, mas sem qualquer tipo de dados. Então, quando eu bater, enviar vai apenas me dar Oh bem, ele está dando um tipo de mídia não suportado. Então essa é uma resposta padrão. Não, porque não há método post ah na minha p I. Isso não leva nada no corpo. Então realmente e verdadeiramente não deveria. Bem, se o seu pedido não faz muita coisa dentro do FBI, então você vai ter um para em cinco para ver. Sabe, é um convidado pego. Essa é apenas a resposta padrão. Ondas uma cidade Erekat honestamente lhe dizer, ho, eu simularia este para verificar se é pequeno, mas é assim que as coisas são, certo? Então os cinco estrangeiros até mesmo interceptaram antes de tentar chamar isso de criação. Então é isso para configurar a nossa criação em ponto em, temos registro. Temos respostas e validação apropriadas. Erros ao longo do caminho que configuramos um novo detalhe sobre quando voltarmos será configurar a
atualização e ponto Erros ao longo do caminho que configuramos um novo detalhe sobre quando voltarmos será configurar a atualização e ponto
20. Autores de atualização: Ei, pessoal, bem-vindos de volta nesta lição. Vamos definir o ponto final para os nossos autores, um controlador P I. Então eu vou acabar com essa pedra e apenas copiar um pouco do que já existe. Onda só colar. E depois vamos fazer edições à medida que avançarmos. Tudo bem, então? Então, se o meu recuo saiu do trabalho, conserte-o, está
bem? Então eu apenas copiei em paz que o criaram, mas então eu vou fazer algumas mudanças. Então isso vai ser opiáceos no autor em, então a petição para isso é para ser http, colocar Tudo bem, Então quando você fala sobre coloca, isso é tudo você um pouco mais alto. Acho que significa que eles estão colocando. Você fez. Não sei por que chamam de “coloca “, mas vamos trabalhar com isso em “Dwell”. Podemos modificar o status. As pontuações mais tarde estão acabadas, mas esta vai ser melhor. E por não, eu tenho certeza que você provavelmente percebe que isso quase não importa inteiramente o que você chama ação porque nós não estamos chamando as ações pelo nome deles em Carteiro. É realmente o método nos parâmetros que passamos que determinam qual função deve ser capturada. Então, se duas funções são muito parecidas, como você pode ter que criar formações no mesmo controle de par e eu acho que os mesmos parâmetros. O que? Eles têm nomes diferentes. Estes são estúdio pode não dar-lhe um erro, porque na tática, é correto. Mas na forma como os olhos AP funcionam ou pelo menos descansam, Felipe tem trabalho. Isso provavelmente causaria um problema porque as cargas são os dados que estão sendo enviados são
muito parecidos . Então eu posso dizer qual pobre estrela que obter função deve chamar. Certo, então os nomes aqui realmente importam menos do que o fato de que você está colocando a anotação do carrinho
Andi , ou linha nos parâmetros do carro. Construções inesperadas. Então, para nossa atualização em pontos, eu vou colocar em parâmetros idee. Então as expectativas que eles vão chamar,
um, um, colocar o ponto final Desculpe, o a p i B s euro barra um, o I D.
Em d. Em d. Estamos esperando nosso corpo fora de dados. Muitas vezes você vê que as pessoas usam o detalhe de criação e às vezes o chamam e editam ou chamam de absurdo, que significa atualização na inserção de um, porque geralmente o criador e é muito parecido. Você não permite que eles editem as mesmas coisas que você não permite que eles criem, certo? Mas então o ponto é que se precisássemos diferenciar, como, por exemplo, um também, se você quiser que essa pessoa seja capaz de editar a biografia, mas não o primeiro nome e sobrenome, então seríamos capazes para especificar um novo detalhe com todas as propriedades que estavam esperando Dados quatro e estaria aceitando. Estes são para, neste caso, Eu só vou usar o continua na criação porque ele serve um duplo propósito. Mas então a nomeação pode ser perigosa porque, você sabe que quer ser explícito. Mas nesta situação, eu deixo isso em paz. Então também criar detalhes e eu estou vendo que eu estou esperando algo fora detalhe autor. Não, você viu na documentação que é um detalhe do autor. Eu não quero necessariamente dizer autor d t o para quem está lendo documentações. Se eu mudei isso aqui em, Eu só digo nome Param é autor, mesmo que isso signifique perder muito e ele vai me avisar que Hey, você sabe, ele não auto muito, mas isso é o que eu quero que ele diga no documentação. Certo? Então, passando um autor, eu quero o primeiro nome, sobrenome e a biografia. Tudo bem, então. Mais uma vez, se acharmos este aviso irritante, podemos apenas olhar para o tribunal de advertência, que é 1573. Sim, 15. 73 em. Então podemos ir em frente e, hum, tomar tudo nosso suprimir em nossas propriedades. Não, dentro de nosso corpo de ação, temos ou de costume, tente pegar. E em nossa captura, vamos apenas retornar sobre a função de erro interno. Chamar exceção com o objeto e. Então vamos começar com nossos filhotes alguns com o primeiro cheque e ver se eu d é,
isso é menos de um, que
significa que esse valor não faz sentido. Ou se o autor bto é equivalente a saber certo? Então quero devolver o pedido do Bud. Tudo bem. Em, então. pedido tão ruim. Se você olhar para os soberanos, você vê que eles permitirão que você passe no estado modelo. Certo, então essa é uma mãe dizendo que falamos que um barco também será capaz de passar por erro que possamos passar em
um
objeto personalizado um . Ou podemos procurar um objeto apropriado que nos dê a todos os pontos de seta que
queremos . Certo, estou devolvendo pedidos ruins. Se a carga é não, ou isso eu desvalorizar não faz sentido. Também podemos verificar novamente para ver se o estado do modelo ancorado é valorizado. Então, estamos verificando se não é válido. Então, se não mais, o estado é válido. Então eu vou retornar também pedidos ruins. Mas desta vez estou a passar no estado modelo. Certo? Vou deixar o registro por último. Eu só estou andando por todas as principais funções. Tudo bem, então, fazendo depois de fazer esses dois cheques, eu provavelmente posso assumir com segurança que está tudo bem. Alguém para prosseguir e salvar o nosso é. Sucesso é igual a aguardar os resultados. Meu autor posit Torrey como ele chama as atualizações, mas então eu fiz uma falta um grande passo aqui onde eu preciso de um objeto fora do tipo autor. Então estamos recebendo o detalhe que precisamos limpar. Eu não perdi esse passo, então tudo bem até agora. Autores iguais à pontuação Meu esfregão superior ancorado certo? E estou falando sobre a fonte é o que Avery está nadando através da autoria de T.O. Tudo bem, então eu verifico o que é ruim se algo é sobre retorno. Não queremos começar a acertar as operações com dados ruins. Então, verificamos o corpo. É o nosso retorno. Parar a execução rapidamente se algo estiver errado, mas se conseguirmos esse fogo, queremos dedo do pé, fazer o mapeamento, tentar e enviar banco de dados e então nós dizemos, se não, é tão excesso, então sabemos que tínhamos em erro interno o melhor que podemos adivinhar. Isso é tudo o que apenas um erro interno faria com que ele não funcionasse. Então prosseguimos para dizer retorno. Então, se ele pegar o fogo, então nós queremos devolver nenhum conteúdo, certo? Então nenhum conteúdo é Ah, soa por, mas na verdade é uma boa resposta Marcado bom no sentido de que nenhum conteúdo significa que você não teve quaisquer erros Mas eu não tenho nada para mostrar. Então 200 está tudo bem em você voltar. Um resultado se houver dados, mas em nenhum conteúdo está dizendo? Bem, estava
tudo bem, mas baseado no pedido, isso vai ter qualquer coisa para mostrar. Mas eu não pedi nada de mim. Certo? Então é isso que nenhum conteúdo precisa. Então, não, eu só preciso refinar isso um pouco. Então o erro interno aqui seria otimista. Operação Son Field. Tudo bem, vamos começar a colocar algumas madeireiras. Então entenda, barra de
reboque o madeireiro em linha completa aqui sobre isso, eu vou ver autor Hope Deeds tentado, hum, e então colocar em i d valor sendo as licenças são I d. e então eu vou apenas colocar no meu interpretação aqui. Tudo bem, então eu fiz alguns registros. Você pode pausar o vídeo e imediatamente fora do registro, se você quiser, você sabe, seguir o registro que eu tenho. Se não fizer isso
, tudo bem. Eu também vou regenerar este resumo porque o verão está apenas fazendo representação para o parâmetro autor. Mas eu também coloquei eu decido esta região ery que. E assim você vê Autor Onda o detalhe. Então o que acontece sabe é que eu acabei de notar que nós definitivamente vamos ter uma era quando tentarmos isso. Isso é porque eu ainda estou usando o detalhe de criação. Então o que acontece com o detalhe da criação é que me deixa voltar atrás. Nós não incluímos um I D. Certo. Então, a fim de criar, nós não precisamos de um I D. Mas em ordem na atualização de reboque, nós precisamos de um I d. Porque e dois trabalhos diferentes ou precisa do i d na entidade. Direito de saber qual entidade deve visar em alterar suas propriedades desativadas. Então, Então, eu disse que poderíamos continuar com a criação de detalhes, mas claramente eu estava errado. Então vamos apenas criar a capacidade de no detalhe óbvio provavelmente vai se
parecer mais com detalhes do autor sobre o detalhe do autor Skopje. Bem, não ouço baseado neles, que é chamado de autor off DT Oh, mas eu não preciso dessa lista fora dos livros. Certo. Assim, os detalhes das atualizações e ter o i d fora da entidade que está sendo alterada. O primeiro e o último nome na biografia. Tudo lá em então eu preciso, mas minhas anotações para indicar o que é absolutamente necessário para as atualizações De também, certo? Não, voltamos para a minha controladora. Vou mudar todos os parâmetros da oferta. Criado o detalhe da atualização do autor Direto. Eu também vou adicionar outro cheque aqui onde eu vou ver enquanto o nosso detetive o
valor i d é menor que 10 r. Se o outro objeto detalhe é não, Mas eu vou colocar em mais uma declaração para dizer, ou se o I d não é igual a autor DT deve I desvalorizar. Portanto, esses dois valores não devem perder muito. Eu não posso estar passando no valor cinco aqui, mas passando em dados para também com i d seis. Isso não faz nenhum sentido. Certo? Portanto, quaisquer idéias aqui devem muito a idéia que está sendo passada no corpo para o autor. Tudo bem, então vamos testar este, então eu vou em frente. Vou dedicar mais. Vamos testar com o carteiro. Tudo bem, então estamos vendo aqui que temos o ponto final sendo representado, então é que ele requer um perímetro que eu d em. Também esperamos o reboque da carga útil. Tenho o primeiro nome, sobrenome e bio como as propriedades. Nós também vemos os diferentes tipos de retorno que estão indo para refinado porque eles não têm muitos retornos. Nós. Você definitivamente não tem sucesso. 200 ou 201. Tudo bem, então o que nos permite validar primeiro antes de entrarmos em mim? Essas mudanças. Então eu vou para um carteiro, ter um top novo. Vou trocá-lo a partir do get toh put. Tudo bem, então eu vou ver o autor com idee um porque eu sei que eu tenho um autor com i d um, mas então eu preciso ter certeza que eu tenho a carga útil. Então deixe-me testar este primeiro, para que eu possa garantir, este só vai me dar isso por 15, eu acredito que sim. Consegui um quatro ou cinco desta vez. Então, vendo método, não uma carga. Tudo bem, então parecia que eu coloquei em algo como, eu recebo um pedido, mas eu estou chamando o posto porque eu colocar espera que há um parâmetro, bem como um corpo. Então, quatro ou cinco. Isso é uma resposta automática dizendo que você sabe o seu pedido no verbo Não muito. Isso é bom. Então eu vou com o corpo, escolher cru ir até J Asan em, então eu estou com o post papa na amostra, então tenho que colocar idee com o valor um em. Então eu quero atualizar que, um, autor para ser Alia sobre o sobrenome seria Stewart para a biografia. Hum, vamos dizer que eu vou colocar no dedo do pé. Ela é incrível em escrever livros. Tudo bem, isso é simples bile. Então, quando eu clicar, envie aqui e eu vou colocar nossos pontos de pausa dentro do Visual Studio para ter certeza de que estamos atingindo o ponto final certo. Então, quando eu clicar em enviar, eu estou recebendo um quatro ou cinco. É ver método, não Telesis dizendo, Oh, eu vejo qual é o problema. Ok. Ah, vamos voltar para o Visual Studio e fazer uma chamada rápida mudar um pouco o modo de depuração
neste tribunal. Mudança é só uma questão de ter o carrinho em um programa de TV, certo? Então o que eu preciso ver é que este posto enquanto eu tenho isso definido que você sabe, nós queremos o perímetro aqui como você vai ter que passar por um apartamento ou seria primeiro. Então o que eu quero é o mesmo tipo fora. Telefona onde disseram que os autores da barra barra cortam o i d. Telefona onde disseram que os autores da barra barra cortam o i d. Então, sem especificar esta parte para ele. Então foi tudo o que fizemos para conseguir. Eu não fiz isso pela venda. Então, sem fazê-lo para as portas seria depois de passar o i d. parâmetro usando um método diferente do que no hum real, você é. Eu gosto disso. Então o que eu vou fazer aqui é semelhante ao que fizemos para o não semelhante. Ele replica o que fizemos para o get Onda permite que o put nem que sua espera em I d parâmetro na URL. Tudo bem, enquanto eu estou aqui, deixe-me apenas mudar o status esportes. Então eu vou dizer que é status para permitir quatro sem conteúdo. Whoa! 24 Anakin, aperte o espaço de controle e ele vai auto. Completa isso para mim. Certo, então vamos tentar isso novamente em validar órbitas. Certo, então vamos tentar de novo com o carteiro. Então eu tenho o mesmo pedido aqui sobre os autores do FBI Um sobre isso é a carga útil. Então, quando eu clico em enviar, ele atinge nossos pontos de quebra. Sabe, sabemos que estamos enviando os pedidos corretamente. Tudo bem, então quando eu passar o mouse sobre a idéia C I d. Um se eu passar o mouse sobre o autor DT sobre I Look, eu vejo os dados chegando e as idéias muito. Então, mais uma vez, temos algumas validações para dizer se as idéias não estão muito certo, então retornamos. Mas pedido No que me diz respeito, eles vão. Muito disso não conseguiria Mets. Nada é não no i d é. Bem, fato e de fato, não menos de um. O estado do modelo é válido, eu acredito, porque eu sinto sobre todos os dados necessários. Então, isso não seria atingido em seguida o mapeamento. Então, se alguma coisa provavelmente receberia uma exceção porque perdemos alguma validação. E acho que vamos abrir a exceção porque não tínhamos o mapeamento. Tudo bem, então eu só vou pressionar F 5 e então nós vamos apenas olhar no carteiro para aqueles 500 . Lá vamos nós. Então não fizemos a limpeza. Eu não preciso verificar o log para ver o que aconteceu, mas eu vou voltar para o arquivo de mapeamento que está em mapas ings e mapas que CS em seus nós
criamos GTOs. Vou apenas duplicar o autor do NC. Oh, é DDO, tudo bem, isso está prestes a fazê-lo mais uma vez e então estamos em casa livres. Tudo bem, então eu acabei de enviar o pedido novamente e nós estamos recebendo a resposta para um quatro. Nenhum conteúdo para mostrar que nossas algumas atualizações. Operação foi realmente bem sucedida, Então eu só vou voltar para um off os pedidos mais antigos onde eu disse obter todos os autores e eu vou enviar novamente em então desta vez porque eu tenho pelo menos dois autores no banco de dados que eu vou ver autor com I d um. Esse é o que acabei de atualizar. Ela também está escrevendo livros, digamos, não
veja apenas livros de coisas, então eu posso controlar isso fora do curso, porque se você quiser o autor, quero dizer, não quero devolver todos os livros direito apenas com o autor. Então modificando os detalhes e assumindo a lista de livros, eu posso datar isso. Tudo bem, onde nós estamos vendo os dois autores se eu voltar para o get com a remoção I D, tenho um quatro ou quatro inicialmente. Então eu estou indo apenas para clicar em enviar e obter de volta autor com eu d um e nós vemos o retorno. Baylor Stewart. Ela também está escrevendo livros. A Andi. Ainda não há livros no sistema e sabemos como enviar. Não, sabemos como atualizar. Então o último seria excluir hotel, então ficar por perto, isso é
21. Autores de DELETE Endpoint: Ei, pessoal, Bem-vindo de volta neste vídeo será configurar a funcionalidade de exclusão para autores. Controlador Onda. Bem, já tomei a liberdade, preenchendo algumas coisas antes para que você possa pausar o vídeo e replicar o que eu tenho lá. Mas continuarei. Então, por baixo da nossa exclusão, o que queremos fazer é aceitar uma licença, er do tipo I em. Em seguida, prossiga para tentar excluir este registro. Então vamos começar com nossos cheques ruins. Primeiro, eles querem ter certeza de que o I desvalorizar faz sentido alguém para ver se o valor I d é menor que um,
em seguida, retornar por solicitação. Tudo bem, então eu vou ir em frente e ver se está bem, o que eu vou fazer saber é tentar encontrar o disco com isso. Eu encontrei alguém para salvar. Nosso autor é igual a isso. Vou usar o meu autor de Torrey Docked positivo. Se eu descobrir isso, eu vou passar no I D de cavalos, qualquer coisa. Alguém que permita isso. Tudo bem, então não. Depois de átomo para recuperar esse autor, Eu preciso verificar aqueles que este autor realmente existe em? A maneira de fazer isso é dizer, se o autor é equivalente o suficiente. Então algo voltou, não será “Não”. Então, se for não, então eu vou voltar, não telefonar. Então você está tentando deletar alguém é algum registro e não foi telefonado no banco de dados, então eu estou apenas retornando que isso não foi telefonado. Tudo bem, então se ele não parou por aí, no entanto, eu continuarei. Verei que quero verificar o sucesso. Alguém para salvar. Nosso suc cess é igual a esperar. Autor, Você puxar dardos as pistas. Então eu quero dar-lhe o dedo do autor deletar então se não o seu sucesso. Certo, é claro que queremos ter certeza de que todas as avenidas estão cobertas, que é que há tantas declarações e garotas. Então eu só estou dizendo, se isso não foi bem sucedido, que eu fui para retornar meu erro interno em então se depois de tudo o resto, eu só vou retornar nenhum conteúdo porque eu não tenho nada para mostrar a vocês no
momento em que Você deletou algo. Então, se tivermos uma resposta sem conteúdo, você sabe que Alicia foi bem sucedida, tudo bem. E então você apenas modificar este tolo se não sucesso do autor do campo necessidades. Tudo bem, então o que eu vou fazer saber é apenas adicionar o login, então nós podemos testar. Tudo bem? Então eu fiz alguns registros, algumas linhas de registro. Você pode pausar e aproveitar o máximo se quiser replicar a minoria e colocar anos dentro. Mas agora nós estamos indo apenas para testar e validar ou operação de exclusão. Certo, então estamos no modo de depuração de um carteiro. Comecei um novo top. O verbo divertido é apagar. Certo. E você vê que eu meio que cor chamou os verbos diferentes. Acho que isso é muito útil. Então eu vou tentar apagar o autor com o I d. Tudo bem. Então deixe-me apenas clicar em enviar, e ele está me dizendo que não há conteúdo. Então isso sugere que algo deu certo. Então nós apenas voltar para a minha resposta get e ele ainda tem alguns dos dados antigos certamente clique em Enviar novamente no DSO Eu só estou recebendo de volta o autor com o i d para on se eu começar autor com idéia Um que é o que acabamos de excluir. Deve me dar um 404 Não telefonou. Lá vamos nós. Bem, ainda
podemos recriar no autor, se quisermos. Porque eu não fechei nenhuma dessas banheiras ou para pedidos anteriores na época. Obviamente, se eu tivesse tentado atualizar sobre o autor. Isso não existe. Vamos ver o que temos aqui. São 500 no servidor de afluência, Earl. Então eu não acho que esse seja muito intuitivo. Então podemos voltar a limpar isso. Porque se eu tentar opiáceos com um autor que não existe, não deveria estar me dizendo uma internet. Várias áreas devem estar me dizendo que não telefonou, certo? Então eu vou sair do livro que Mood fez essa mudança. Então este vídeo é sobre deletar, mas nós apenas examinamos todos eles para fora, vimos lacunas, entendido para corrigi-lo agora. Então, para facilitar isso,
no entanto, eu teria que colocar um carro extra. Então o que eu quero fazer é descobrir. Vou copiar tudo isso aqui. Então é aqui que estou encontrando o autor. Então. Se não for telefonado, vou dar a flecha. Eu não tinha esse cheque aqui. Eu estou na verificação da I d. O valor é válido aan verificação den. Se o estado menor é válido e qualquer
coisa, qualquer coisa curta, isso seria um servidor interno, Earl. Certo, o que não é necessariamente preciso. Então, em vez de dizer ao usuário que uma seta interna do servidor, eu vou fazer isso. Verifique aqui onde estou para tentar recuperar o autor. Depois fui verificar se era não ou não. Direita, em seguida em frente. Não, estou vendo que tenho um pequeno problema aqui. Então, o que eu vou fazer, você vê? Tudo bem. Então, em vez disso, eu usando o achado por eu não vejo nenhum dedo do pé tem função mãe ah. Então o que vou fazer é dentro dos meus repositórios. Então é por isso que o repositório esfria de dentro para fora. Meu autor postula muito fora das formações base inteiramente encontrar. Ou melhor, eu poderia realmente adicionar à base porque poderia vir a calhar com os outros. Eu vou fazer outra função aqui eu vou apenas duplicar a criação, mas eu vou chamar. Ele existe. Então este só vai levar eu estou tão na idéia de passar na idéia, e então ele vai me dizer sim ou não. Esse registro existe? Certo. Então, porque eu defini isso na base, eu vou ter que voltar para a aula de concreto. Atualizado, implementado, faltando função, que é dele existe. E um pouco extra. Eu acho que ele aqui é em então em seu existe o que eu vou fazer você dizer algo como retorno. Um, sublinhado ponto de banco de dados Um algum Existe alguma pia? Deixe-me ver se há alguma pia. Então não há nenhuma pia. Tudo bem. Tenho certeza que há uma pia. Hum oh, desculpe. Bebe Authors, meu bar. Não qualquer que você afunde. Lá vamos nós. Tudo bem. Então o que eu quero fazer é descobrir se há alguma urgência, um trigo, e eu penso na função em. Então eu quero descobrir se há algum autor. Então eu estou dizendo que é basicamente um sem o cheque estável deles. Se houver alguma com as expressões Lambda. Expressões sombrias. bom ver se há algum registro com um ID que eu teria sido passado, certo? Então isso só vai voltar às nossas falhas, isso é tudo o que qualquer um faz. Diz, verdadeiro ou falso. Então, ou há, não está lá. Então saiba que tenho de voltar às nossas cataratas. Estou apenas salvando minhas alterações no controle de volta dentro da atualização. O que eu vou fazer é dizer, hum ele existe até agora é existe em eu vou dizer em vez disso, se eu, um autor, relatório verificar se ele existe. Então, após as causas existirem, então eu vou ver se não, ele vai sair. Lembrem-se, isto é uma força tão segura. Se for falso, então eu quero apenas retornar, não telefonei direito. Então eu poderia realmente apenas reutilizar isso na exclusão em vez de fora, ir em frente e encontrar o arquivo inteiro então eu vou apenas verificar o seu existe primeiro. Andi,
eu posso remover isso, e então eu posso substituir essa linha onde eu encontrar o autor logo acima do real excluir alguém para recuperar o autor aqui e, em seguida, realizar a exclusão,
em seguida, validado que era bem sucedido ou não em Warren em conformidade. Então isso foi um pouco Você está fatorizando, e à medida que você avança, talvez você veja outras lacunas. Talvez veja todas as formas de tornar a sua corte um pouco mais eficiente. Mas é isso que o desenvolvimento é. Você sempre verá coisas que você pode apresentar ao longo do caminho.
22. Analisar e adicionar mudanças no GitHub: Nosso cara. Então chegamos ao final desta seção fora. Ou curso onde acabamos de configurar com sucesso ou um controlador P I para nossas
manipulações de autor . Certo. Então vamos rever o que fizemos. Nós configuramos alguns dados, novos objetos de transferência de dados que configuramos esfregando para eles. Teríamos injetado a dependência para repositório autor para o serviço mais longo em para o mop er fora do curso, você configurar o dedo do repositório, interagir com nossas abelhas de dados em DSO. Nós estaremos entregando todas as operações relacionadas ao banco de dados através do nosso repositório. O dedo do pé mais longo manter logs fora de cada ação acontecendo no no a p a n pontos em nosso alça de dedo do pé
er esfregão . Você sabe, transferindo dados entre o objeto de transferência de dados sobre os objetos de classe de dados reais
teríamos implementado com sucesso funções ou endpoints toe. Chame todos os autores. Teoh, obtenha um Autor por i d toe, crie uma nova atualização do dedo do autor no autor existente e toe delete no autor. Nós também configuramos alguns, você sabe, coisas genéricas
básicas para que não nos repetimos o tempo todo em que fizemos uso off ou registrando cada passo fora da semana, nós também revisamos algumas técnicas de depuração no DSO. O que vamos fazer agora é checar nossas mudanças para ter esperança. Então, precisamos apenas clique com o botão direito ou solução em, em
seguida, ir para cometer. Damos a nossa mensagem de confirmação para que seja dinheiro possa pausar o vídeo e replicá-lo se
desejar . Mas eu vou em frente e cometer tudo sobre a pia. Você vai salvar todas as mudanças ao longo do caminho em que irá empurrar nosso novo tribunal baseado fora para obter ajuda. Isso é tudo para este sexo. Te vejo na próxima vez.
23. Livros: Repositório e serviço: Pessoal, bem-vindos de volta a esta lição, nós vamos estar sentados ou postar Torrey e servir para Cincinnati para a mesa do livro . Então eu abri a base do repositório e nós usamos esta base quando nós caçamos, imaginamos nossos repositórios de autor ou indo basicamente seguir o exemplo e começar a implementar nossos repositórios de
livros. Então, em meus contratos de água, eu vou adicionar um novo poço, classe, mas interfere realmente. Eu quero chamá-lo repositório iBook. Tudo bem. Ninguém de novo. Isto é uma interface. Então eu mudei isso para interface. Andi, vou fazer com que herde a besta do repositório. Então nós apenas ameaçamos a base do repositório e o tipo de classe nesta situação é livro sobre. Então vai dar o dedo do pé. Quer que eu inclua uma biblioteca? E isso está incluído. Assim que espinhas lembrar que esta extensão interage se precisamos escrever
funcionalidade personalizada que não está incluída em nossa base do que declará-lo dentro do
repositório iBook em, em seguida, declarar e, em
seguida, concretizá-lo no e, em seguida, implementado na classe concreta. Agora vamos procurar nossa classe concreta e vamos criá-la em serviços, então eu vou em frente e clique. Adicionar em uma nova classe e este vai ser repositório de livros Nosso Booker Buster vai herdar de I repositório de livros em. Então, uma vez que implementa a interface, vamos estar recebendo todas as paradas de método. Então, a primeira coisa que precisamos fazer é injetar nosso contexto de banco de dados de aplicativos no reboque, nosso repositório de livros. E eu fiz isso rápido. Então, que consiste em aplicativo privado somente leitura ser o objeto em, em
seguida, inicializá-lo em nosso construtor para ou repositório de livros Próximo acima é implementar ou salvar alterações. Então, quando eu descer para a minha função, dizer se eu quiser ter certeza do que é uma pia no lembrar que temos uma função chamada Salvar alterações Andi Well, uma chamada variável muda em que estamos chamando a função salvar muda de forma síncrona. Então estamos voltando. Se houve mudanças, sim ou não? Em seguida, temos as nossas criações. Então, para fazer a nossa criação, eu vou dizer ah longe. Ele sublinhou livros de ponto de banco de dados que Andi eu estou soletrado aguardando clareza. Então, e eu ainda tenho outro porque eu não coloquei uma pia direita. Então você sempre se lembra que o aguarda e uma pia. Então sublinhar os livros do ponto do banco de dados encaixados em. Então dizemos Adah, você afunda. Então eu passei na entidade, e então eu ah, trigo ou desculpe, eu retorno e, em seguida, aguarda os resultados da função salvar. Tudo bem, então eu vou apenas copiar esta parte porque eu sei que isso é realmente feito em todas as funções. Alguns ajustam uma cópia e colam em todas as funções aplicáveis. Bem, realmente. Atualizar e excluir. Então, vamos fazer isso rapidamente. Então deixe-me voltar ao que estou fazendo. Então, na exclusão, queremos dizer sublinhado d b livros ponto não remover em. Então vamos remover a entidade. Tudo bem, vamos, então voltamos. Agora. Nós economizaríamos dentro e fora do curso, você precisa de uma pia na função. Então deixe-me apenas passar e colocar uma canção em todos os lugares. Além disso, só para garantir que eu não esqueça, certo? Tudo bem, agora podemos continuar, então não, queremos encontrar todos os livros. Encontrar todos os livros é bastante simples. Só precisamos dizer esperar. Sublinhado, ponto de
banco de dados Books pontos para listar é afundar e que vai tirar todos os livros e fora do curso eu preciso retornar isso. Preciso voltar agora. Eu poderia escrever assim. Eu poderia escrever em uma linha, claro, mas eu gosto de ser um pouco mais consistente. Então eu acho que no autor realmente escreveu onde eu declarei uma variável. No entanto, basta validar isso. Sim, eu fiz. Eu disse, Vier variável é igual a isso. Então eu vou fazer a mesma coisa aqui, para que isso possa funcionar. Mas eu gosto de ser consistente para que meu tribunal seja consistente em todos os momentos. Então eu vou salvar livros de ferro é igual ao resultado de que eu estou devolvendo livros. Tudo bem. O mesmo para encontrar pelo ideal. Basta copiar isso realmente, porque é muito semelhante acorde alguém para salvar o nosso livro no livro de retorno. Mas então, nesta situação eu estou fazendo, uh, livros ponto encontrar uma pia e então eu estou passando no parâmetro I d o valor I D e então é existe seria algo assim mais uma vez. O que? Eu só começo este manual está ligado. Salvar. A ira existe. É igual dedo do pé um peso na pontuação. DB ancorado livros pontos em. Então eu vou dizer se eu sei que vai ser qualquer alívio, certo? E então minha expressão de madeira para ver. Há algum livro com a propriedade? Issoé o
que eu desvalorizo vindo através desta chamada de função e então eu fui para retornar
suas existências Tudo bem,
em,em
seguida,por último, mas de nenhuma maneira menos nós temos atualizações iam dizer sublinhado BB pontos Books é o
que eu desvalorizo vindo através desta chamada de função e então eu fui para retornar suas existências Tudo bem,
em, em
seguida, , não estava em jejum na entidade agora uma Onda mística comum. Bem, vou dizer que me deparei com ele. Eu não vou fazer parecer que eles são,
você sabe, outras pessoas lá, nós não correr para ele ou que encontrar isso eu não. Mas às vezes é fácil esquecer qual repositório em e uma tal referência a classe errada . Portanto, apenas certifique-se de que o seu está na classe certa ou a propriedade certa do
contexto de banco de dados do aplicativo no repositório certo. Sei que configurei o repositório e o contrato. Eu só vou para a inicialização e garantir que a representação fora do contrato e serviço seja eu. Então eu só vou me certificar de que eu tenho meu repositório de livros, bem como a classe concreta , que é repositório de livros em. Uma vez feito isso, podemos fazer uma construção só para ter certeza de que não introduzimos nada para quebrar nosso cordão em nossos prédios. Sucesso. Então, para não, nós configuramos ou repositório em serviço com sucesso.
24. Livros: controlador de configuração: Bem-vindos de volta, pessoal. E esta lição, nós vamos estar configurando o controlador do FBI para nossos livros, então eu vou apenas para ir direto a ele e clique em controladores Click. Adicionar controlador Goto em. Então eu quero um controlador AP I vazio ligado. Então vamos chamá-lo de livro. Livros. Desculpe. Controla o controlador de livros. Agora, lembre-se, para o nosso dedo controlador tem alguma funcionalidade, ou estes interagem com a nossa lógica? Até agora, precisávamos ter. Portanto, isso significa que precisamos ter certeza de que injetamos nossa dependência é correta. Então precisamos dependência é para o repositório em Baseado no que vimos e controlador de autores , nós realmente precisamos dependência é para o serviço de log e também para mapeamento para que possamos seguir o exemplo. E eu estou realmente só quero copiar tudo isso em vez de tentar digitá-lo velho manualmente. Então vou copiar tudo isso do controlador do autor. É a primeira vez que você está assistindo este vídeo. Você não é tão familiar. Você pode tomar o tempo de vídeo positivo quando eu terminar de cuidar desses erros. Eu só estou replicando o que eu tenho aqui, mas eu preciso ter nossa apresentação fora do meu repositório do iBook, e eu vou estar chamando isso no placar. Repositório de livros não autor. Repositório. Andi, tenho o meu serviço mais longo. Eu preciso do meu eu sou superior um pouco você estar usando outono superior fora do curso. Desligue o nome do controle. O construtor precisa ser o mesmo que os controladores que trocam que Andi mudar Oates as referências ao autor. Então isso é praticamente tudo o que eu preciso fazer pelo menos para começar a funcionar porque praticamente eles são os mesmos no nível mais básico. Tudo bem, então é isso. Então, copiar e colar fez com que um minuto inteiro digitando fosse reduzido para menos de 30 segundos . Então o que fizemos foi configurar uma leitura privada nos objetos do repositório do iBook. Eu serviço mais longo, e eu sou superior em, em seguida, configurar um construtor onde nós vamos ser inicializá-los. Então aceitamos uma licença ou por objeto particular que acabamos de declarar. Então nós os inicializamos dentro daquele construtor. Outras coisas que podemos ir em frente e fazer seria incluir um resumo deste const fora deste controlador. Então eu só veria, um interage com a mesa de livros. Tudo bem, Onda, se você quiser, podemos colocar essas anotações sobre todas as escolas de status que podem ser devolvidas. Mas ainda não sabemos o que são. Alguém para deixar isso em paz para não ligar. Neste momento, fizemos algumas coisas básicas. Sabe, a coisa é que, medida que
avançamos, queremos dizer notar que precisamos de outra dependência é porque talvez vamos implementar
algumas operações de livros para as quais precisamos do repositório do autor, certo? Então, o ponto é que para cada dependência que
temos, nós simplesmente precisamos fazer representação dela da mesma maneira que fizemos para eles. Então teremos acesso a toda essa funcionalidade dentro do controle, mas para não, é
isso. Nós configuramos ou controlador para os livros
25. Livros: configuração: Ei, pessoal, bem-vindos de volta a esta lição. Nós vamos começar a configurar nossos endpoints get para nossos livros, alguém para começar com minha anotação, deixando todos saberem que esta é uma operação http get que eu estou prestes a começar a escrever lá agora declarar que é pública uma pia tarefa, retornando os resultados da minha ação. E vamos ligar para este. Ponha livros. Não requer parâmetros porque tudo o que estamos fazendo é recuperar todos os livros possíveis. Então, é claro, esta operação vai ser relativamente simples. Começamos com mais, experimentamos gatos ou tentamos banheira superior no catch on on on. Bem, até agora, nosso controlador de autores, o que fizemos foi criar uma função que seria chamada sempre que houvesse um erro. Então vamos replicar isso. Então, eu só vou para o controlador do autor, pedir emprestado esse pedaço fora do tribunal, colocá-lo nas últimas partes da página, alguém apoiando isso porque realmente e verdadeiramente, isso é a mesma coisa que nós vamos ser fazendo em todos os controladores. É o nosso padrão, certo? Então eu realmente vou colocá-lo lá, Andi. Então eu vou ter certeza de que eu quero dizer aquela chamada na seção de exceções. Então, quando eu pegar, eu quero chamar erro interno, então eu quero passar em e. Isso é mensagem, certo? Não, há outra coisa que eu queria com a madeira, mas vou deixar isso para durar. Então vamos continuar dentro do bloqueio de tentativa. Eu estou indo para salvar Ire Livros é igual toe underscore db Desculpe. Não o DD, mas o repositório de livros ponto find. Tudo bem, então eu estou encontrando todos os livros. Então eu vou voltar bem com o objeto dos livros, certo? Mas é claro que eu preciso fazer o nosso mapeamento no meio, então eu estou apenas correndo em frente aqui. Então, entre pegar os livros e devolver o que eu deveria fazer, eu estou com os livros bem ali em que eu deveria salvar. Nossa resposta é igual à pontuação meus pontos superiores, caxumba. E então eu estou aumentando meu eu vou mapear dois na minha lista fora do livro B T o direitos. Lembre-se nosso DT sempre realmente o que estamos dando para o usuário ou o chamador Em vez disso, o cliente em então eu Minha fonte é livros, então eu estou esperando uma lista fora livros em. Então vou mapeá-lo em um esfregão para o livro DT. Ou e eu apenas incluir o que precisa ser incluído, então é o que eu estou enviando de volta com meu ok, essa resposta, tudo bem, no final é um síncrono. Eles vêem aquela linha vermelha dizendo que, você sabe, eu não tenho função assíncrona, mas eu não estou fazendo nada de software assíncrono. Então eu preciso dizer, espere aí mesmo. Tudo bem. Eu também modifiquei a seta interna porque o que eu gosto de fazer é ser consistente. Então eu estou indo apenas para o controle de autores de referência e ver um que eu passei na mensagem sobre a exceção interna. Então, eu me certifiquei de passar esse mesmo tipo off message former para que meus logs em todos os endpoints parecessem razoavelmente iguais. Então, mas nisso, alguma outra coisa, não, todos
eles estão indo para um período de aparência. Então, se isso vai estar registrando a mesma coisa toda vez, como em há uma 500 uma garota de obter livros em, há 500 são de Aero de obter autores olhando para o log, eu realmente nunca saberia qual deles campo direito a menos que a mensagem indique explicitamente que, você sabe que isso aconteceu quando este tipo de operação foi tentado. Eu nunca saberia de que ação ou controle da área está sendo amado. Então, o que eu quero apresentar, certo? Não, é outra função onde eu vou obter a ação do controlador sobre o nome do controlador em que. Eu vou usar esses dedos, determinar o que são para adicionar à cadeia de log para que possamos olhar para o log e saber exatamente qual controlador em ação teria acionado esse log. Então, uma função separatista simples. Eu só vou dizer uma corda privada. Vou chamar-lhe nomes “Get on Troller Axon “, certo? Andi não usa parâmetros. Então o que vou fazer é salvar Ire. Controlador é igual ao contexto do controlador. Pontos em. Acho que preciso incluir algo aqui em algum lugar. Eu vou incluir como eu ir junto porque realmente ajuda. Eu falei sobre controle, na verdade. Contexto do controlador. Tudo bem, lá vamos controlador descritor de ação de ponto de contexto não e então você tem realmente muitos de nomes controladores. Vou buscar o controlador. Certo. Então eu tenho o nome do controlador e eu vou apenas duplicar esta terra. Então não aumente o tipo. O que fora disso novamente em eu vou dizer nome da ação na variável é chamado Ação em. Então o que eu vou retornar é, uh, string
formatada. Alguns só querem usar o meu dólar san aspas. Então eu estou passando o valor da variável do controlador em. Então eu vou dizer bois traço, valor
variável. Então o que isso vai fazer é sempre que for chamado, ele vai dizer OK, que ação? Qual controlador em ação está fazendo essa chamada. Podemos usar essa informação, rebocar uma caneta Taurel para que possamos olhar para o registro e saber exatamente qual controlador e ação, o erro ou a entrada para o aviso veio. Então deixe-me fazer isso rapidamente com o livro de obter. Então eu vou dizer, uma vez que obter livros é chamado, eu vou salvar o nosso Ah, que é um local. Então localização significa que é aqui que está. Vou pegar nomes de ação do controlador e armazenar dentro do local. Certo? Então, quando eu voltei com o amor, eu vou pré escreveu qualquer outra mensagem com o texto vindo do local. Certo. E depois vou dizer “fixe “a alguém para dizer a localização. Certo, então a localização está pegando o controle. Andi, falei terrivelmente com o controlador. Deixe-me actualizar tão rapidamente. Con carrinho, certo? Deixa-me certificar-me de que esta carroça atravessa por todo o lado, está bem? Então eu estou recebendo os nomes reais do controlador, armazenando no local. Isso é uma vez que bate para colocar livros em. Então, a qualquer momento que vamos estar registrando daqui para frente, vamos preparar qualquer coisa final. Qualquer mensagem que estamos colocando com o local está vindo para que possamos retroceder em fazer isso no controlador do autor mais tarde. Mas agora estamos nos concentrando em livros. Então deixe-me apenas adicionar algumas informações. Ama o que está acontecendo quando pegamos livros, na verdade. Tudo bem, então eu adicionei linhas nos registros de fluxo bem aqui na linha 38 deitada 41 na DSO O que eu fiz, eu acabei de obter a localização como fizemos para a internet. Ponha a seta. Eu só anexei a algo para dizer tentativas de chamadas. Então, em vez de tentar escrever uma frase como eu fiz para os autores para os Longs para
os autores, onde eu tinha que ver tentativa, obter todos os autores e com sucesso conseguiu todos os autores em vez disso, eu só estou dizendo que você chamar o controlador Livros e ação Obter livros. A Andi. Isso é uma tentativa de ligar. Então, se foi bem sucedido, eu só digo que o mesmo local foi bem sucedido. Então, para mim, isso reduz a quantidade fora de detalhes depois de colocar e não, minha escala de amor mais consistente porque eu estou escrevendo essas frases. Você escreve assim. - Não. Um. Em seguida, escreva-o de forma diferente neste ficheiro de registo. E assim você sabe que não é consistente em toda a linha. Então isso é apenas um pouco mais do que estamos fazendo aqui. Como eu disse mais tarde, vamos recuar e podemos nos formar. A seção de autores confirmou que o controlador de autores está de acordo com este padrão, certo? Então temos todos os livros. Outras coisas que eu gostaria de incluir seriam nossos tipos de resposta, que são 205 100 e fora do curso ou resumo para estado obter todos os livros. Tudo bem, então isso é tudo para obter todos ou para obter livros. O próximo que eu gostaria é o livro de obter de I D. Tudo bem, então eu estou indo para baixo deste. Ainda é um http, então
eu tenho que repetir isso. Exceto que este get é um pouco diferente porque ele leva um parâmetro. Por isso, por favor, não te esqueças desta parte. Então vamos ver que eu vou. Em seguida, você pode qualificar ainda mais os tipos de dados de perímetro. Eu posso realmente dizer algo como eu chamaria int para que a documentação
diz especificamente que ele está esperando uma entrevista em vez de se vestir. Está à espera de uma ideia. Então eu deixo assim e veremos se faz alguma diferença material. Quando olhamos para a documentação, Eu só vou copiar esses tipos de resposta aqui e colar realmente entender para copiar tudo neste telefone mostrado na base porque duas funções são muito semelhantes. Mas é claro que eu vou mudar o nome de alguém para ver obter livro em vez de fora. Obter livros em, então isso é o que vai tomar um parâmetro int idee. Já estamos conseguindo as localizações. Não preciso fazer isso de novo. E então eu sou uma operação treinada onde eu posso ver tentativa de chamada para I D em d. Eu só vou dizer o que eu d estava sendo tentado. Tudo bem? Pode ficar grande,
masjá
sabemos onde está a tentativa de fazer essa ideia. Pode ficar grande, mas masjá
sabemos onde está a tentativa de fazer essa ideia. Então sabemos que é uma tentativa de ligar para o livro com a identificação então é fácil inferir que estamos tentando obter esse livro com que eu dirijo. Ah, o que fazemos aqui, eu só vou mudar o coro. Então livro Vier é igual a livro Repositório encaixado encontrar por D Em nós passamos no parâmetro I d aan den. A resposta será um mapeamento fora do livro GTO, não uma lista. Então, eu só estou fazendo alguns pequenos ajustes aqui em vez de escrever todo o tribunal novamente do zero em diante, em
seguida, obteve sucesso com I d em então. Tudo bem, esses são todos os meus registros para ser claro. Isso está tudo ligado. Então retornamos a resposta. Ninguém que eu vou apresentar. Aqui está a verificação para ver se o resultado do livro é equivalente e nulo em. Então, se for, então eu vou para a direita. Ah, amor sobre isso Alguém para amar o aviso desde set off log informar foi para Lug avisar Onda uh, falhou em recuperar o registro de gravações de I. D. Então eu quero dizer campo, dedo recuperar. Então você vê, é
disso que eu estou falando. Escrevi-o de uma maneira de entrar. Autores escrevem. Eu disse em autores também com isso não foi telefonado aqui, Eu estou escrevendo cirurgia de campo, então é isso que eu estou vendo. Quando você escreve frases, você tende a ficar muito pontuda e, em seguida, você ganha mais pontos porque você cresceu no campo e assim você seus amores vai olhar inconsistente em todo o que seus edifícios eles querem que eles sejam consistentes. Eu vou escrever o formato aqui, e então nós vamos empurrar caminhão para o controlador do autor e mudar tudo até fazermos o registro. Então sinta para recuperar o registro com I d Andi I de Colon. Direita em. Então, fora do curso, nós vamos voltar. Não me telefonaram. Então nós não encontramos esse registro que é um 44 e estávamos registrando aquele campo de recuperação. Muito bem, então temos os nossos livros. Nós temos nosso livro get, então eu estou apenas meditando isso para um pequeno teste runs ou com a validação de que a saudade realmente faz a diferença, bem como não
há livros agora, então nós só queremos ter certeza que obter sobre a escola de resposta certa. Então, eu só vou para a depuração no teste com o Postman, certo? Eu disse que ia testar o carteiro, mas vou usar o Swagger, então vou expandir isso. Então eu vou dizer, tente sacola e, em seguida, executar em. Então estou recebendo minha resposta de 200. Certo, então podemos ver que estamos bem, não
há livros no banco de dados. Eu estou recebendo a resposta 200 e deixe-me apenas tentar não com o parâmetro para rico obter livro com o parâmetro alguém para dizer, Tente sapos em. Então eu coloquei um valor de um em. Em seguida, clique em execuções. Obviamente, nada era telefone. Então, vamos pegar quatro ou quatro. Então isso é esperado. Mas o que eu realmente quero prestar atenção é que os logs no mesmo arquivo de bloco teria ambos o trabalho do autor sobre os trabalhadores do livro. Vou fazer as duas coisas no mesmo dia. Mas o que acontece é que você notou que quando você olha para o influxo de livros, você pode ver que são os livros, obter livros, ação e tentativa de causar sucesso versus isso. Quero dizer que foi tentado para isso e falhou em recuperar. Mas isso é apenas um aviso porque uma falha em recuperar um registro que não acha que isso
não é uma flecha, mas nós apenas colocamos um aviso, apenas para o caso. É motivo de preocupação, certo? Então você pode ver aqui onde ele parece um pouco mais estrutura porque você pode dizer ao controlador que você pode dizer a ação em. Em seguida, podemos ter mensagens padronizadas de acordo com a parte fora da função ou funcionalidade está sendo acessado versus buraco. Nós estávamos fazendo isso inicialmente onde era apenas, você sabe,
livre, livre para todos os textos. Então a última coisa que eu vou fazer para isso é no resumo sobre eu vou dizer recebe um livro de I D. Sobre o nome Haram eu deixo isso sozinho e retorna são registros de livro em. Eu não acredito que eu coloquei os retornos neste aqui pelo menos fora de livros, e isso é praticamente tudo para sentar as ações get para o nosso controlador de livros. Então o que eu vou fazer é fora da câmera. Voltarei ao controlador do autor e depois revisarei. Então nós estamos fazendo o registro e que nós podemos passar por isso juntos e próximo vídeo, mas é isso por enquanto.
26. Livros: configure o ponto de ponta: Vocês são bem-vindos de volta nesta lição, nós vamos estar configurando para criar endpoint para nossos livros. Mas antes de chegar lá, só
quero que revisemos nosso controlador de autores e mostremos algumas modificações. A hora, carne. Então, a última vez que discutimos fazer sobre o registro em log um pouco mais consistente. Então, o que eu fiz foi introduzir a função que irá retornar o nome fora do controlador e o nome fora da ação que está atualmente ativa estão sendo interagidos com no retorno este componente fluxo off controller traço ação precisa diretamente no dso. O que estamos usando isso para fazer é passar para o nosso registro de forma que em vez de trens agitado frases
completas ou ser muito detalhado, podemos ter um pouco mais de consistência em todos com um pouco mais de simplicidade, certo? Então eu estou apenas fingindo a mensagem, cada mensagem, com o local sendo o controlador, ação
traço na mensagem que deve ser passada. Então eu fiz isso no get autores em. Eu fiz isso no autor get, e eu também me certifiquei de fazê-lo em todo o erro interno. Telefonemas mostrando. Não, eu não fiz isso com os outros. Porque à medida que avançarmos com o controlador de livros, estaremos definindo o novo padrão. E como você disse, o novo padrão no controle de livros são apenas retroceder e certifique-se de que o
controlador de autores tipo de seguir o exemplo. Então, de volta ao nosso controlador de livros, eu já tomei a liberdade de escrever as ações. Eles podem pausar o vídeo e escrevê-lo O doador pode tentar para si mesmo. Então, eu tenho uma tarefa de invólucro público fora dos resultados da ação. Chama-se “Criar Onda”. Nós temos o nosso parâmetro que é o nosso corpo uma notação sobre nós estamos tomando, hum no objeto fora do tipo livro cria D para saber que a linha vermelha está lá porque eu não criei o detalhe para que possamos fazer isso juntos. Então eu vou apenas copiar isso. Vá por cima do meu livro bto arquivo. Bem, eu só vou copiar o objeto GTO do livro na base. Está por baixo. O que? Eu vou chamá-lo de livro criar detalhes sobre e o que não precisamos lá seria idéias. Eu não preciso criar o livro com a
identidade. identidade Você seria legal se pudermos criá-lo com o autor. Então eu vou pegar todo o objeto para detalhes do autor. Mas o que eu realmente preciso é do autor que eu me dedique. Eu vou fazer este não ser conhecido, mas é muito necessário porque eu não quero nenhum livro no meu sistema que não esteja
associado a um autor, certo? Então eu fui para mim, o também eu d necessário. Tudo bem, em todas as coisas que serão necessárias incluem o título. Não preciso do ano. É isso. Gelo ser é necessário no resumo para resumo não é necessariamente necessário. Mas o que eu vou dizer é que eu estou disposto a aceitar um máximo de 500 caracteres, alguns colocando em anotação, para ver que o comprimento da corda pode ser de até 500 fora do curso. Se você vai colocar nesta validação, você precisa verificar com a besta de dados porque lembre-se, nós fizemos este banco de dados primeiro. Eles precisam se certificar de que a validação sua aplicação aqui não viola as restrições na batida de dados real. Então, se o banco de dados assim disse Índia marcha são 50, então você quer ter certeza de que o seu
link string está aderindo a isso. Então eu acho que para resumir, eu tinha colocado marcas de pneus Environ, então vamos deixá-lo em 500. Então, mesmo que as marcas de banco de dados, eu estou boxe adultos a 500 no lado do cliente, certo, eu não estou tornando a imagem necessária. E eu não estou fazendo o preço necessário também. Não, o que acontece é que se eu tivesse incluído o DT ou no autor GTO, objeto ou propriedade ou outro no livro criar detalhes, então eu teria dado a pessoa oportunidade de preencher alguns outros detalhes que podem não necessariamente têm feijão preciso. Então, mais uma vez, o detalhe ainda nos ajuda a resolver. Vir controlar o quê? Permitimos que os clientes entrassem no nosso sistema. Certo? Então eu tenho Mike livro criar GTO criado no DSO. Esse ar vai embora, sabe que ele vê que essa classe existe agora que nossa criação fora de um livro vai
sempre começar com a gente conseguindo a localização. Então, conseguimos a localização. Sabemos que sabemos onde estamos. Sabemos por que estamos conseguindo a localização certa? A próxima é a nossa tentativa de captura. Então eu vou tentar, então pegar a exceção. Chame “E”. Eu realmente vou copiar esta linha porque ela já está lá. Tudo bem, então isso é cuidado fora, pelo
menos para o tratamento de ar fora. Qualquer exceção, Não indo dedo do pé adicionar aliado no reboque. O madeireiro com outra linha fora da quadra que vai registrar a operação de criação foi tentado. Então eu digo localização, Colon, criar tentativa de direita em. Então eu vou continuar onde eu vou dizer, se o objeto é não, então eu quero registrar um aviso. Então eu vou adorar aviso para ver que neste local e Inter Quest foi enviado em devolvido a missão de massa com o estado modelo. Meu próximo cheque é se o estado modelo for violência, lembre-se, vamos colocar as anotações da torre, validar os dados que estão chegando. Então eu quero dizer, se o estado do modelo não é válido, então queremos um aviso lager para dizer que os dados estavam incompletos no retorno sobre a solicitação com o estado do modelo. Então, à medida que você constrói AP, eu zero percebo que as operações básicas parecerão da mesma maneira entre as diferentes entidades ou os diferentes controladores em relação a cada entidade. Claro, Se você está fazendo operações especializadas como calcular coisas no meio, então ele pode diferir. Mas, essencialmente, queremos ter certeza de que estamos fazendo os mesmos tipos de verificações ao longo do caminho, porque cada um pode ser atormentado por estes fora do curso, caso a caso. Você pode ter verificações específicas específicas para a operação que está sendo realizada. Se passarmos por estes dois. Se declarações do que a suposição é que o objeto do livro está em um estado válido, então eu quero fazer é inseri-lo para que vamos salvar Nosso livro é igual a on. O que eu preciso fazer é mapear a partir do d t o Objeto. Então ma por mapa ponto no meu dedo mapeamento moppet. Os objetos fora do tipo livro na minha fonte é livro E T. O. Então eu não estou dizendo Dê-me o que livro sobre o livro detalhes tendo em comum em criar um objeto fora tipo livro em então uma vez que eu tenho este objeto sobre o que salvar, nosso é tão sess é igual toe, aguarde uma chamada para o meu repositório de livros onde eu vou chamar minha função de criação no passado neste livro. Então preciso verificar se foi bem sucedido. Então, se não é sucesso, então o que eu quero fazer? Vou ligar para o meu erro interno e dizer que neste local, o campo de criação. Então isso se não foi bem sucedido. Caso contrário, eu vou apenas colocar um retorno final sobre Eu vou retornar criado, bem como uma carga contendo a data em que eu fui criado. Então eu preciso dizer, Você é você um primeiro, que seria o mesmo criar direito sobre. Então o objeto seria novo sobre eles passando em um livro, certo? E isso foi o que acabou de ser criado para que possamos ver aqui que bem, nós preenchemos tudo para o pior caso em nossos zalis que são conhecidos por nós. Tentamos registrar o máximo possível. Não, mudei um pouco o formato dos amores. Então o que eu disse que faria com o controle do autor. Eu vou voltar atrás. Então eu quero pegar esta primeira linha e ter certeza de que a primeira vez fora do controle meus autores parece exatamente o mesmo caminho, certo? Localização criada, tentada. Então, se estiver vazio, vou dizer a localização. Então, o pedido vazio enviado. Isso não é tão ruim. Eu não queria mudar muito. Nós amamos o aviso para dados incompletos, alguns apenas certificando-se de que nos mesmos pontos fora de cada controlador, os logs será o verbo fora dos logs será muito menos. Veja bem que em cima de um ensaio de um lado, Andi no dia dois palavras do outro lado. Assim, a consistência mais uma vez é fundamental. Então, finalmente, eu não coloquei o nosso tempo que está em para registrar para Desculpe, eu estou atacando. Isso é sobre um madeireiro quadrado Dr. Logue em quatro para dizer isso no local. Então, só fazemos essa localização. Ponha cólon. Veja, esse é o Cree Shun foi bem sucedido. E então, se você quiser, você pode até incluir o objeto lá para ver que este autor foi criado naquela época, certo? Então isso é bom para madeireira. Além disso, talvez você queira registrar Ah, uma segunda linha para ver objetos criados para que eu pudesse apenas passar em um livro. Vamos ver se isso funciona. Talvez possamos nos mostrar todos os detalhes fora do livro. Talvez com o seu show e na linha de objeto no amor, mas vamos ver para que eu possa tentar isso mais. E autores também. Apenas certifique-se de que eu normalize esta linha também. Tudo bem, eu sei que aqui seria autor, não assustador. Ou talvez eu devesse adiar esta terra até eu validar com o livro. Certo, agora que terminei com o tribunal por criar cartas validadas, vou para o barco atracado. Na verdade, não entre em depuração ainda. Deixamos de fora algumas coisas. Então um eu não coloquei meu verbo, que é http post e isso acabou. A criação, certo? Também preciso do dedo do pé. Bem, eu não preciso, mas é bom incluir esses códigos de retorno ao mesmo tempo. Então eu vou apenas copiar um existente. Então eu sei que estou voltando. Não um 200 aqui, mas eu começo um banco que é criado, certo? Também estou fazendo uma seta interna do servidor. Eu também estou fazendo pedidos ruins, então deixe-me apenas ter certeza que eu tenho representação desses 400 mas pedidos. Tudo bem, Andi, acho que é isso. Talvez enquanto eu estou aqui, eu posso apenas colocar no meu resumo, mas eu acho que eu estou feito com esta função, então criar Ah, novos são cria. Desculpe. Um novo livro, bem no git retorna. Bem, nada. Então o nosso livro é objeto. Certo, então, não, podemos desmascarar com mais confiança. Então vamos testar isso no Carteiro. Tudo bem, então eu estou no modo de depuração, tenho toda a minha documentação, e eles estão me mostrando uma amostra da carga útil que precisa ser passada com este esporte. Vou copiar esta amostra sobre o carteiro já começou uma banheira nova. Tenho os livros finais do FBI. Tenho-o no correio. É um corpo com ferramentas cruas. Em seguida, mude isso para Jae Sun, em
seguida, em pedaços. Então, não, eu preciso preencher isso. Então este é o meu primeiro completo no ano que vê, o ano era 2000 e 10 gelo sendo Isso geralmente é como um número único de identificação. Só estou colocando um número aleatório. Resumo Vou deixar isso em branco. A imagem deixando em branco tambémnão
era necessária. A imagem deixando em branco também Então a imagem realmente seria um caminho para a imagem. No caso de você está se perguntando sobre você provavelmente está desapontado que eu não estou sendo qualquer homem. É realmente um caminho para a imagem. Então, o que eu não quero fazer é deixar o AP e fazer o trabalho para fazer o upload da imagem e fazer a conversa sobre. Em vez disso, eu preferiria que os clientes consumindo meu bebê eu teria uma carga alguns upload para algum servidor, certo, porque eu não vou estar armazenando esta imagem no meu servidor. Mas você carregou para o seu servidor. Então você me envia o caminho, tudo bem, mas quando estamos fazendo, o cliente provavelmente estará usando um CD, e de qualquer maneira, então nós vamos enviá-lo para um serviço Cdn e, em seguida, armazenar o caminho para a imagem deste campo, certo? Então podemos ir em frente e eu estou colocando o preço em $10. Vamos deixar a ideia do autor em zero. Então eu sei que isso vai falhar, e isso é validar que você vai falhar porque o autor, eu d. Você provavelmente vai me dar em ah, 500 erros. Então vamos tentar. Então, quando eu clicar em enviar tudo bem. Então, como eu pensei que nós temos ah, 500 erro em Se eu der uma olhada no arquivo de amor, eu vou ver que ele está dizendo, Oh, meu mapeamento. Então eu não esfregei. Meu livro cria detalhes. Tudo bem, então deixe-me sair do barco ancorado que apenas ver um pouco de diversão há um tempo e eu parar . Então essa parte sempre me pega. E eu estou feliz que você está vendo que isso me incomoda porque somos todos humanos. Então, se isso te leva a isso, então não sinta. De qualquer forma, se você não pegou você, então ótimo. Então nós só queremos ter certeza de que temos nosso mapeamento, então seja qual for o mapeamento que estava fazendo no aplicativo, precisamos ter certeza de que você tem uma configuração. Então vamos passar por isso de novo. Certo, então vamos tentar de novo. Então eu clico em enviar, dar algum tempo. Tudo bem? Então nós temos mais 500 vamos ver a razão para este 500 em morrer. Basta recarregar o arquivo do amor. Então não, estamos vendo Ah, legal. Longa, longa, longa,
mensagem de
exceção. Então podemos ver aqui que em quatro livros criar,
criar, criar, tentar e então vemos livros da era criar no ar ocorreu enquanto eles diziam isso. Tão longa história, curta distância, dizendo que estou me referindo ao autor que não existe porque eu disse zero. Então, quando eu coloquei isso o autor também, eu acredito e eu ainda tenho meus autores pedido aqui. Então eu sei que eu ganhei autor com o i d para Então eu só vou dizer que este livro foi escrito por um kon. Então eu vou clicar, enviar nós temos um dois um um criado em em Então nós vemos que o objeto do livro voltou desassociado com o autor também. Então, a coisa legal aqui é que... Bem, deixe-me ver se realmente vai funcionar. Acho que preciso fazer algo com o repositório para que isso funcione. Mas essencialmente, quando entramos no autor, eles vêem esta lista fora dos livros. A lista de livros deve seguir. Então deixe-me pegar esse autor específico, que é autor também. Andi tique-taque enviar. Tudo bem. Então eu não preciso modificar meu repositório um pouco dedo incluir a lista fora de livros, porque essencialmente, o que isso está dizendo é que quando você começa o autor, você também deve obter a lista de livros que ele ou ela tem em seu repertório ou eles estão relacionados toe no banco de dados. Então nós acabamos de criar Ah, livro que foi escrito pelo autor com I D to Silas. Este livro deve aparecer sob esse repertório de autores, mas faremos isso mais tarde. Isso não é preocupações para não, estamos apenas felizes em estavam satisfeitos que ou livro está sendo criado agora se eu violar
a validação. Então eu não vou enviar um título e eu fui tentar novamente. Então você vê que estamos recebendo o pedido incorreto 400 com nosso erro de estado do modelo. Então eu acho que isso resume tudo para nossa operação de criação e apenas atualizar o amor. Então vou apresentá-los ao nosso pequeno que basicamente evita o arquivo de amor automaticamente. Portanto, nenhuma parte mais pacote sempre perguntar ou deixá-lo saber que mudou a luz um pouco quando introduzi-lo para outra ferramenta que apenas mostra que você gosta estão correndo trilha fora da gordura log e é muito legal. Uma coisa legal sobre arrogância que eu posso não ter mencionado é que se você olhar para os esquemas onde eles mostram os detalhes, eles te dão o resto. Asterisco vermelho ao lado dos que para você, o desenvolvedor teria marcado como necessário. Então dissemos que o título era obrigatório. Ser gelo é necessário no autor Addie obrigatório. Então isso significa que qualquer pessoa que enviar um livro poderia ter tão omitido em objeto ou um Jason String com apenas título SBM sobre a filha Addy e teria correspondido aqueles e criado o livro com sucesso. Certo? Então isso é todo bom e limpo Soldier faz a documentação sobre que resume para a criação fora.
27. Livros: atualização de atualização de configuração: Bem-vindos de volta, pessoal. Neste vídeo, vamos explorar a configuração de nossas oito funcionalidades para nossos livros. Não, eu já fui em frente e fiz algumas coisas e você pode pausar o vídeo no
momento oportuno e simplesmente copiá-lo. Mas eu vou orientá-los sobre o que eu já fiz na primeira coisa que eu fiz foi
criar um detalhe de atualização. Então a atualização 82 tem que ter o i d. porque precisamos rastrear a idéia fora do registro sendo atualizado no Gueye também para chamar algumas das coisas. Então eu tirei I s bien. Então eu não quero que ninguém volte e mude O está sendo porque esse é um número de
referência único . Você coloca, ele fica certo? Hum, é mais fácil. Eles removeram o livro sobre recriado com um carro de gelo sendo do que sedar eles para mudar o gelo ser, Isso é e isso é apenas eu. Então, mais uma vez, você forma seus detalhes com base nos requisitos de negócios fora do aplicativo que você está criando. Então, não quero que ninguém entre e mude o “está fora dos livros”. Eu não incluí isso no GTO de opiáceos. Andi, também removi a
propriedade do autor também removi a
propriedade do autordaquele detalhe de atualização. Porque não quero que alguém apareça depois e mude o autor do livro assim. Então, mais uma vez, você está no controle total sobre o que qualquer cliente é capaz de fazer com seus dados usando os objetos de transferência de
dados. Depois de criar este objeto de transferência de dados Mais uma vez, você pode pausar o vídeo e escrevê-lo ou copiado. Fomos para o mapeamento. Nós nos certificamos de criar a configuração de mapeamento foram capturados no passado onde
tentamos operar. Acabei de perceber que não nos lembrávamos de colocar no mapeamento, então eu me certifiquei de fazê-lo desta vez em, em seguida, no controlador de livros. Eu já escrevi as ações. Eu só vou te explicar isso, mas realmente e realmente muito disso se parece exatamente com o que fizemos no autor, certo? Temos nossa anotação, http, colocar. Nós pegamos o i d em D, deixando todo mundo saber o que ele produz. Por isso, produz tipos de resposta. Ferramenta 4 405 100 para internals servindo erro em. Então eu vou em frente e definir ou funcionar como uma tarefa de função assíncrona. I resultados de ação. O nome é até um pouco em que leva um parâmetro em, mas ele também está procurando uma carga útil do corpo fora do tipo livro do GTO em nós chamamos livro GTO. Começamos obtendo a localização, e sabemos que fazemos isso para que possamos manter o controle do que está, você sabe, sendo chamado em nosso login. Então tentamos. Então deixe-me pular para as partes de captura onde eu faço o retorno regular. Erro interno. Francamente, esta linha é a mesma linha em todas as outras ações tomadas esta cópia e colar que facilmente barcos para a transação. Estamos basicamente fazendo os mesmos tipos de verificações que fizemos na função de atualização para nosso controlador de
autores, certo? Então eu sou o primeiro a sair do curso. Eu mudei o verbiage para o registro, e nós vamos voltar atrás e fazer a mesma coisa no controlador do autor. Mas vamos trabalhar com isso. Então, temos o mais longo em estavam registrando que a atualização na atualização foi tentada no registro. Eu d i d onda. Sabemos a localização e verificamos se a idéia é menor do que um ou a carga útil é não ou se o I d no perímetro não corresponde ao i d na carga útil então diremos pelo pedido Onda, também
vamos adorar o aviso Essa atualização campo com dados ruins i d cólon idéia certo? Nós também vamos verificar se ele existe. Então chamamos Booker Posture não é existe passando o i d e então dizemos que se ele não existe, então vamos adorar o aviso que sentimos para recuperar registro com o i d. Em nós retornamos, não telefone Mais tarde, vamos verificar o estado do modelo para ver se ele é válido. Então, é claro que temos algumas coisas que são necessárias no opiáceo que você mais passar no título que você em. Bem, não
há mais nada necessário, sério? Então, na atualização, você poderia limpar tudo o resto onde sua pessoa mais pelo menos um título para você continuar em movimento. Deixe-me validar. Então eu penso no Criador. Então precisávamos de título sobre dados sendo que eu não estou permitindo que você faça o ser gelo. Então eu não vou exigir a ESPN então tudo o que eu estou exigindo o título porque isso é tudo
que eles podem mudar. Então você não pode enviar um título vazio para mim ou nenhum título. Tudo bem. Ah, então eu vou continuar e dizer livro Vier. Então, se ele pegar esse fogo, então eu vou limpar os objetos de transferência de dados para a classe de dados, que é livro sobre, em
seguida, coletá-lo e, em seguida, esperar o resultado fora de enviar que o pedido para o banco de dados se não é um sucesso do que retornamos Ah, 500 erro. E eu estou ansiando que neste lugar, fora do campo em deixe-me apenas qualificar esse campo de atualização para registro com idéias. Então deixe-me apenas um pin que para registro com I D i d. que você saiba, é mais específico onde ele falhou em. Depois, iniciamos sessão. Isto é um mandado. Deve ser um login para a direita. Então, é bom verificar o seu trabalho. Então eu estou logando para isso. O registro com idee que foi atualizado com sucesso em Estou retornando um novo conteúdo. Certo,
então, mais uma vez, quando eu passei, você poderia ter pausado um vídeo sobre “O que decolou” ou, você sabe
, recriado em seu próprio projeto o que você precisa. Mas eu vou continuar. Vou em frente e testar essa ação. Alguém vai desmascarar ancorado. Eu sou Indy. Ambos o humor e eu temos um carteiro, alguém para abrir. Uma nova guia para o meu novo teste de função neste vai ser um put sobre os pontos finais, que é um p I cortar livros Onda. Eu estou obviando livro com o eu d para eu acredito que esse é o único livro talvez que eu tenho
no banco de dados. Não, o quê? Eu vou destry aqui é tão flexível. A validação em objetos de transferência de dados torna os dados de transporte. Então eu disse que você precisa do i d. De
um jeito ou de outro, ele vai verificar com a identificação logo depois. A única coisa que é realmente, realmente necessária para uma atualização para ser que eu sou um carted off necessidade de ser bem sucedido é o título, certo? Então, se eu apenas olhar na documentação que eu vejo aqui também, isso é autores. Quero dizer livros na documentação, eu vejo onde esta é toda a carga útil. Então esta é toda a carga útil que importa. No entanto, se eu só quero lá em cima o título que eu posso simplesmente passar em um novo título. Então isso está no título evitado. Tudo bem, em Então inimigo apenas remova essa vírgula rua com base na validação que a idéia acredita está muito sobre. Então eu clico em Enviar em seguida, ele vai bater em nossa ação, passar por todas as validações em, em
seguida, retornar um tour de status para nenhum conteúdo apenas para mostrar que ele tem os dados. Ele fez as validações. Ele viu que o título que é o único bit de dados necessário realmente baseado em sobre validações de objetos de
transferência de dados que está lá em. Em seguida, ele passou com a operação e não, ele é atualizado. Então, se eu voltar para o meu get, eu tenho um get Oh, bem, eu vou apenas fazê-lo com o carteiro, então eu apenas pegar todos os livros, tentar sapos e então executar. Então você vai ver um livro com o I D para e título atualizado direito sobre onde tudo o resto está. Não, porque eu não forneci um valor. Agora, aqui é onde precisamos estar. Cuidado, porque o que aconteceu? Foi aí que não forneceu um valor? Ele assumiu automaticamente não no DSO Se eu não submeti, ele substituiria o valor que está lá. Então, ideias de autor? Não, não, porque eu removi do GTO. Andi, enviei uma carga que não
fez enviei uma carga que não
fezreferência a ela. Certo. Então eu vou para mim esse ajuste. Então eu vou voltar para o meu DT tudo. Eu vou dizer isso. É por isso que é sempre bom fazer um pequeno teste para ver se o que acontece depois de fazer uma operação é desejável, certo? Então eu vou voltar para o meu fora o detalhe em Eu vou definir o autor I d Tudo bem, alguém para defini-lo como necessário. Então vou obrigar os clientes a me dizerem quem é o autor. Claro, do lado do cliente, podemos tipo de controlar como esses dados se cruzam com o tubo ou fazer recomendações com base em nossa documentação, mas para não, eu vou dizer que é necessário porque eu não posso ter e não para o meu autor. Bem, na verdade, eu posso, porque eu indiquei que o autor que eu poderia ser “Não”. Então acho que preciso voltar para meus analistas de negócios e acertar, mas para não, vou deixar em branco. Deixe isso. Pensando em que podemos prosseguir. Então, não, sabemos que nossa operação de atualização está funcionando. Nós meio que padrão eu algumas dessas mensagens de registro. Então eu só vou voltar para os meus autores, hum, atualizar função em mim, essas mudanças e você vê, isso é uma coisa legal. Quando você tem que ser consistente, você pode apenas copiar e paz. Você não precisa digitá-los novamente, então você digita corretamente em um lugar. Então você pode simplesmente copiar e paz em todos os seus outros e pontos em seus amores vai
sair olhando limpo. Onda Muito compreensível para quem está olhando através deles agora. Eu disse que iria apresentá-lo a uma nova ferramenta que ajuda você a visualizar seus logs de uma maneira um pouco mais eficiente. Eu acho que
são resultados mais eficientes sobre isso é realmente,
hum, mas eu vou falar sobre o seu direito depois que eu copiei esta linha no nome dele é cauda nua, então você pode chegar ao site deles indo para cerveja, cauda, cerveja, metal, soft dot com barra arte cauda cerveja. E há uma versão gratuita, então eu só vou não saber a versão gratuita em. É realmente uma versão autônoma para Windows. É apenas em executado um arquivo e clique nele,
você executá-lo e, em seguida, o que ele permite que você faça é selecionar um arquivo. Então eu vou abrir, encontrar meu arquivo de log, e então uma vez que eu
abri-lo, ele vai apenas abrir esse arquivo. Mostre-me tudo o que tem acontecido no arquivo. Tem uma opção que é a cauda dele. Assim como um incêndio é evitado, o movimento vai continuar. Então o que eu vou fazer é voltar para depuração,
amarrado em , indo para cima em um P que eu chamo, e eu só vou mostrar a vocês como o arquivo de amor se move na cauda de cerveja. Tudo bem, então eu tenho cauda de cerveja de um lado na Morre, tenho o carteiro do outro, disse, eu só vou fazer aqui até um pouco menor, então apenas assistir cerveja inteira até se comportar quando eu fizer alguns AP eu porque eu só vou fazer algumas ligações,
hum, hum, uma rachado em todo o quadro, apenas clicando e olhando para como Bertil se move. Então talvez a máquina esteja se movendo um pouco devagar, então você sabe que não é tão limpa quanto deveria parecer. Mas isso é essencialmente o que Bertier traz para a mesa. Então é bom para eras de treinamento, você sabe, em tempo real quando você precisa ver exatamente o que está acontecendo quando está acontecendo, onde está acontecendo. E, em seguida, ele dá-lhe realce para que você possa realmente fazer algo como você pode procurar o erro de cadeia de caracteres. Eu acho que eu poderia ignorar o caso, mas então eu quero destacar, ou pelo menos fazer todo o texto era lido. Então, em
seguida, eu penso,
OK, OK, e então você vê qualquer linha com a palavra erro fica realçada em vermelho, então pelo menos eu posso ver exatamente onde os erros estão. O exército é uma ferramenta de monitoramento muito legal. Como eu disse, saiba que é leve, então você sabe que é fácil para ele. Oh, até obter ajuda com suas atividades de depuração à medida que você desenvolve
28. Livros: configuração de DELETE End: Bem-vindos de volta, pessoal. Indústria. Eles estavam indo para definir o ponto final de exclusão para os livros. Não, o que vou desafiá-lo a fazer é uma pausa. Em seguida, minimize este vídeo nas tentativas de criar este endpoint para você mesmo. Tudo bem, então você já tem alguns endpoints que criamos. Você já tem o controlador autores com um métodos de exclusão desafiando-o para o
vídeo spas minimizar em. Tentou para si mesmo. Eu já fiz isso. Então, eu realmente vou te guiar por isso. Então você sabe, depois que você terminar e você provavelmente retomar, certo? Não. Então, eu só vou dizer que podemos verificar todo o trabalho juntos. Então, se você tem algo diferente do que você pode financiá-lo contra meu problema. Então eu comecei fora do curso com meu repouso sumário. Um livro por i d. O parâmetro retorna. Deixei isso em branco. Coloquei meu verbo apropriado. Você sabia disso? Espero uma licença, er off i d ou chamado Idee. Desculpe, coloquei todos os meus cabos de resposta, mas ainda 104 404 04 e 500 ligados. Então eu fui em frente e criei a minha função síncrona off tarefa I resultados reais chamado elite com o meu perímetro em tailandês de I declarou a minha localização, porque é claro que precisamos disso para fazer logon, em seguida, a minha tentativa e tampas off curso A captura parece da mesma maneira olha em todas as outras ações realmente e verdadeiramente de modo que deve ser a aspiração fácil para começar a seguir em frente. Eu tenho o meu ponto mais longo login para localização para dizer chumbo tentativa no registro com idee que tudo certo em dso Como eu construir essas mensagens mais longas, eu percebo que o verbo ege é tipo fora por causa da padronização da
linguagem em todos os certo em dso Como eu construir essas mensagens mais longas,
eu percebo que o verbo ege é tipo fora por causa da padronização da
linguagem em todos os tipos de operações. Então, a tentativa de liderança no registro com idee que nos opiáceos têm atualização tentada no registro com I D que em. Eu acho que eu tenho algo assim no poço este é um carro tentado, então eu devo dizer, tentado em registro com. Mas a questão é que estou a padronizar o verbo. É algum tipo de montagem como, ah, um modelo de chamada. Então, sempre que você sente que está se repetindo, você provavelmente está no ar. Existe um princípio na programação chamado seco. Não se repita. Então, quando você se sente assim, eu desafio você a criar outra abstração fora o mais longo provavelmente tem, como alguns modelos padronizados e encontrar uma maneira de dinamicamente Paschen as partes específicas dessa mensagem de log que deve ser único. Então este diz, excluir tentativa de exclusão justa falhou. Hum, em então, Bem, este é padrão em excluir falhou. Mas então se você olhar na atualização, é o mesmo Burbage que eu literalmente copiei e colei todas essas mensagens das
atualizações sobre o cara. Coloque-os lá e substitua a palavra, embora com delete on. Então, além disso, eu fiz a mesma coisa no controlador do autor. Onde está o mesmo verbo e ege? Então você vê, eu só estou me repetindo. Não. Então, se eu tiver outro controlador vai ser o mesmo verbo que e eu
mesmo vencê-lo novamente . Então eu desafio vocês a criar outra obstrução no registro em log reduziu a repetição ou a quantidade de dados estáticos que estão sendo repetidos em vários pontos. Qualquer buraco. Vamos continuar olhando através da nossa exclusão. Então tentativa de apagar. Verificamos se o I d é um valor inválido no dia. Se
for, dizemos que falhou e voltamos. Mas solicita se ele verificar se ele existe, e se ele não existe, então nós registramos um aviso para dizer que nós sentimos para recuperar esse registro em. Então seguimos em frente para realmente seguir em frente. Eu copiei e colei do autor hum, apenas actualizar esta rapidamente. Então você vê, eis que suas ações vão encontrar o mundo que eu copiei do autor deletar. Então, se você falou com o pensamento manualmente, ou você copiou e o alterou, então isso é perfeito. Sem problema. Copiar e colar são programadores, melhor amigo. Então o livro que eu telefonei, eu d usar o meu repositório de livros. Então eu verifiquei. Se a operação de exclusão foi um sucesso, se não foi, então eu retornei o 500 com o local e a mensagem de log ativada. Então se você tem esse incêndio, então eu disse, “ Bem, o disco foi bem sucedido, apagado, e eu não devolvi conteúdo. Agora eu acredito que eu só tenho um livro no banco de dados, mas eu ainda vou continuar, e eu estou indo para depurar mais do que apenas testar este endpoint de exclusão. Então eu tenho a cauda nua para a direita e o carteiro para a esquerda, e eu vou criar um novo livro primeiro. Então eu vou apenas criar um com o título. Meu segundo livro, você pode colocar qualquer coisa. Eu também vou mudar o ISBN, então você provavelmente quer terminar para algum único que está se movendo do lado do banco de dados, entanto. Onde trabalhar escoceses têm o mesmo. Eu falo e escrevo assim e quando você clica, enviar criar um novo livro, tudo bem. E podemos olhar para o fracasso do amor que vemos em quatro livros Criar,
Criar Tentativa na Criação de Deus foi bem sucedido e se você olhar para o carimbo de hora, você pode ver que levou ambos sete segundos para fazer isso direito, que é meio estranho Longo. Mas esta é a minha pequena máquina. Seria. Deve ser rápido em um servidor, qualquer buraco. Antes de seguir em frente,
essa marca de hora é muito boa porque trabalhei em um projeto. Antes de seguir em frente, Uma vez nos clientes que ligavam para um serviço Web foi cronometrar Haute. Eles estavam dizendo que todo o serviço foi culpa. Mas quando verificamos os registros. Consegui ver a diferença entre ou o carimbo de data/hora desligado quando a chamada foi ativada versus quando retornamos dados. Disseram que o tempo acabaria depois de cinco segundos, e estávamos girando em milissegundos. Depois provámos mostrar-lhes que o FBI era muito eficiente. Precisavam checar seu sistema. Então este é outro, você sabe, logs no tempo. tocos são muito, muito importantes. Os desenvolvedores. Enfim, acabamos de criar outro livro sobre a
identidade é três. Então eu vou usar este livro recém-criado como cabra de fuga. Eu vou criar uma nova solicitação em centavo indo para apenas copiar o endpoint aqui. Andi, baseado em, vou dizer que o ponto com o valor três é uma operação de exclusão. Então eu cliquei. Mande Andi que eu tenho por erro. Certo, então eu tenho outro incidente destacando que foi uma enfermeira. Então, depois de cinco segundos fora de tentar, tentamos seguir a liderança para gravar com 83 e depois temos algum elenco. Alguns erro de custo são assim vamos ver exatamente o que estaria causando esse erro de custo tipo. Então eu quero voltar para o meu ponto final de exclusão e eu encontrar por eu d em eu disse o livro principal. Ah, a digitação está acontecendo? Talvez eu tenha que colocar um ponto de freio. Vou colocar um ponto de ruptura. Eu fiz peças fora do cordão. Então vamos voltar para o Carteiro. Então vou mandar de novo. É um desgaste ou ponto de ruptura. Eu usaria se 11 para pisar. Então você pisar em frente, nós tentamos encontrar o livro, e eu só quero validar que este é o três. Tudo bem, então ele se move. Onda há a exceção. Então ele está falhando para recuperar porque é em que um é um duplo em um é um decimal. Então eu acho que isso pode ser um problema. Talvez com a minha classe de dados. Deixe-me verificar. Tudo bem. Então eu voltei para o meu banco de dados e eu estou revisando o design e eu vejo aqui onde o preço está fora do tipo de dados dinheiro que, se eu não estou enganado, traduz
diretamente toe decimal em C sharp. Então, ao criar minha classe de dados, eu tinha definido que era o dobro e não decimal. Então eles fizeram essa mudança. Então eu acredito que é aí que a era está chegando. Então minha classe de dados precisa ser se decimal e fora do curso, se as classes de dados decimal do que os detalhes correspondentes também precisa dizer decimal para o preço. Tudo bem, então deixe-me tentar de novo. Tudo bem, alguns de volta com ambos o carteiro Andi minha turnê de madeira. Então eu vou clicar. Mande em frente. Vamos ver o que acontece. Temos sucesso. Tudo bem, então vemos aqui, a elite foi tentada. Foi bem sucedida. Certo, então esse era o problema. Então você tem que se certificar de que seus laços de dados para suas classes de dados são o melhor C afiado. Tipos
beta. Demasiado o tipo de
dados do servidor SQL correspondente . Certo. Queres o dedo do pé? Esteja muito, muito certo de que seja muito. Então, com esta operação, não testamos? Bem, nós criamos, testamos e nenhuma operação validada ou excluída para nossos livros no DSO. É isso.
29. Analisar e adicionar mudanças no GitHub: Bem-vindos de volta, pessoal. Neste vídeo, nós só vamos, você sabe, rever o que fizemos nesta seção fora do curso no dia verificar nossas mudanças para nos levantarmos . Então, o que implementamos onde as operações de multidão são, a multidão funciona em um controlador de par para nossos livros. Tivemos que tomar em alguma dependência é inicializá-los em. Então nós tínhamos certeza de ser muito rigoroso com ou documentação como nós fomos junto. Nós também padronizamos as mensagens de log para que pudéssemos saber o local, ou
seja, o controlador em ação, que o log está sendo acionado a partir de diante. Em seguida, usamos este padrão para aplicar ao nosso controlador de autores criados anteriormente em
que fizemos isso através e através implementado são obter livro ou criar na atualização na exclusão. Nós também tivemos uma pequena falta com a exclusão onde o tipo de dados perdeu muito, mas nós pegamos, cortamos pela raiz, corrigi-lo em Não, temos reclamações completas. Também olhei para uma nova ferramenta chamada conto de cerveja, que eu nos baixa do dedo do pé melhor trilha ou ama. E ele vem com pequenas coisas como realçar e seguido aqui, que permitirá que ele toe automaticamente mostra o que as últimas linhas de arquivo mais recentes em
arquivo de log são agora apenas sai deste capítulo, vamos verificar em nossas alterações para obter em cima. Então eu vou apenas direcionar as soluções que Goto cometer, em
seguida, digite nossa mensagem de commit. Tudo bem, então essa é minha pequena mensagem para mim mesmo dizendo que eu implementei a multidão para isso antes, não de um livro ap I controlador em mensagens de log padronizadas. Então eu vou apenas ir em frente e cometer tudo sobre a pia em empurrar essas mudanças para subir em cima . É isso. Então, da próxima vez, vamos começar a analisar novos tópicos como segurança e autenticação para mais de um P I.
30. Tabelas de identidade de Scaffold para base existente: Ei, pessoal, bem-vindos de volta à missão dele é começar a andaime as tabelas de identidade em nossas
abelhas de dados . Agora, deixe-me explicar. Um pequeno andaime refere-se ao processo pelo qual nós oxigênio. Está tudo bem. Então, quando eu disse tabelas de identidade, o que eu realmente quis dizer, onde as tabelas que ponto redes core ou dotnet, entidade, estrutura ou identidade núcleo lá. Tantas. Então essa coisa. Mas eles vêm com algumas tabelas padrão embutidas que oferecem suporte à autenticação do usuário. E foi quando estávamos criando nosso projeto e eu selecionei o modelo de navalha em, em
seguida, selecionei que eu queria autenticação com cones individuais. Ele incluía automaticamente configurações e os recursos para isso. Então, algumas das configurações realmente seriam encontradas no início do arquivo nazista em desafiar. Parafusado. Não, não. Vou ver aqui, que é que temos o transtorno até usar autenticação e autorização de uso na
seção de serviços . Ele foi em frente e adicionou identidade padrão para alguma classe genérica chamada Identity User. E, em seguida, temos algumas opções aqui onde podemos ver se queremos toe incluir ah exigir confirmado um recurso cone em nosso processo de inscrição. Na verdade, vou remover isto. Então o que isso vai fazer é esse tipo de registro de dois passos. Você sabe, quando alguém se registra e tem que entrar em seu e-mail para um conversador para confirmar que ele . Não precisamos que alguém remova essa opção. Então, o que nos resta é apenas uma identidade padrão com essa classe genérica que representa
a classe de usuário dada a nós pela identidade central, bem como qual banco de dados são o contexto do banco . Ele deve desenhar nas tabelas de identidade armazenadas. Agora tudo isso poderia ter sido adicionado após o fato, porque mais uma vez, as startups que o arquivo CS é praticamente o mesmo independentemente, fora do modelo que você escolher, é tão bem, nós escolhemos um modelo, tem alguns deles realmente fez removido o que não queríamos e estamos no mesmo lugar de qualquer maneira. Então, o que vamos fazer agora é ... As tabelas que são necessárias para o usuário de identidade tem algum propósito. Nós estamos indo dedão eles estão degenerados no reboque. Nosso banco de dados que é telefone no contexto do banco de dados do aplicativo, que é configurado usando a seqüência de conexão padrão, que sabemos está apontando para o banco de dados que temos trabalhado em um plano para saber. Então, eu só vou salvar o começo do sangue. CS sobre isso. Eu quero chamar sua atenção sobre a pasta de dados Migrações pasta e, em seguida, este arquivo com todos esses zeros. Não, isso é o que você chama de um arquivo de migração para a estrutura que aqueles que chamamos migrações onde ele mantém apagou todas as mudanças que são feitas no banco de dados em. Em seguida, ele irá rolar automaticamente essas alterações. Então, tende a manter, tipo, uma história de todas as mudanças. Agora isso é geralmente mais útil quando você tem ah corte primeira abordagem. Nesta situação, não
temos uma primeira abordagem do tribunal. Nós construímos o banco de dados primeiro. Então nosso banco de dados existe no que queremos fazer é modificar o banco de dados. Não, hum, não indo para o sistema de banco de dados e adicionando tabelas para usar para autenticação, mas usando um trabalho diferente para modificar o banco de dados existente. Então o que vamos fazer é procurar um console de gerenciador de pacotes, então se você não sabe onde isso está, você pode ir para o pé. Eu acredito que é em ferramentas no novo gerenciador de pacotes get e você vê seu gerenciador de pacotes? Cônsul, assim que sair do console. Parecendo um prompt de comando aparecerá pedindo alguns comandos. Agora, o que vamos fazer é executar um comando que diz sobre o banco de dados. Então, praticamente fora dos dados significa que vai dizer, qual é a mais recente, hum, migração que não foi realizada em então 10 em Vá em frente e faça isso. Ou melhor, o mais recente desencadeou migrações, mas neste caso terá uma. Então, se você quiser aprender a desenvolver usando a primeira abordagem do tribunal e migrações, então você pode verificar o meu curso completo sp dot net core 3.1 sobre o
desenvolvimento de estrutura de entidade nesse curso atrás de ponta a ponta, construindo um banco de dados tribunal primeiro em um pedido para ir com ele. Cobrir em nosso contexto. Não, já
temos um banco de dados, e queremos que as tabelas de identidade entrem nesse banco de dados. Então já temos o nosso algum, eu concordo, filho. Andi,
eu tenho o meu console de monitor de pacote, então eu vou apenas digitar o comando atualizar banco de dados traço e, em seguida, quando eu pressionei, enter vai construir nossos projetos que podem demorar um pouco. Então ele vai continuar, e então ele vai apenas dizer que não sabe que isso é um aviso. Só está me dizendo que eu não tenho tipo ou muito amargo para o preço da coluna no meu banco de dados. Mas se você ver amarelo, você pode ler o aviso. Pode ser útil. Pode não ser. Qualquer coisa fora significa que você está preocupado. Isto não é nada de grande preocupação. Se você, no entanto, ver vermelhos, então você sabe que temos um erro em. Você pode querer apenas validar sua cadeia de conexão e certificar-se de que nada foi modificado em relação aos arquivos de migração. Nisso, suas mesas estão em cima e fora de curso. Se você tiver dificuldades,
você sempre pode entrar em contato comigo agora quando eu for ao meu estúdio de gestão e verificar meu banco de dados. Se você se lembra, nós realmente só tínhamos duas mesas com autores e livros. Não, temos muito mais algumas tabelas têm papéis .net onde as reivindicações de regras e regras de regras de SP e usuários reivindicações de usuário fazem logon usuários SB em todos os tipos de tabelas que tipo de suporte a funcionalidade de
identidade que vem embutida no reboque Núcleo de ponto líquido. Então, eu só vou tirar algum tempo. Eu olho na ESPN que o usuário estável. Eu só vou trazer o design, e estes são os pontos de dados padrão que vêm com ele. Então temos o de nome
de
usuário normalizar. Use o nome de e-mail e normalize o e-mail. E-mail confirmado. Isso é um pouco para dizer sim ou não sobre a opção onde, dissemos exigir confirmação. Cadastre-se que eu tinha removido. O que isso teria feito era olhar para esta parte. Então, se esta parte estava dizendo não, então uma pessoa não seria capaz de entrar. Mas já que é desde os deficientes que realmente não importa, certo? Então o que teria acontecido é que quando você clica no link para
confirmá-lo, ele teria mudado. Este dedão do pé. E-mail confirmado, é sim, e então você seria capaz de fazer login para que todos esses pequenos recursos são incorporados em tudo bem , você não está bloqueado 02 pode habilitar a autenticação de dois fatores. Maravilhosas, maravilhosas características antigas fora da caixa. Isso, no entanto, conclui a nossa missão de hoje. No próximo vídeo, vamos olhar para a configuração de alguns usuários padrão e regras padrão em nosso aplicativo
31. Usuários de teste de sementes: Ei, pessoal, bem-vindos de volta. Nós apenas coisas dobrado nossas tabelas de identidade em saber o que vamos fazer é semear alguns usuários e regras. Então, quando falamos sobre semeadura é apenas sobre inserir algumas amostras no banco que, você sabe, nós não temos que passar pelo dinheiro ou processar fora de fazê-las. Portanto, queremos apenas alguns usuários, porque quando estamos configurando nossa autenticação de usuário, precisamos saber por que os usuários já estão lá para que possamos prosseguir. Então eu quero começar criando um arquivo chamado Seed Data, e ele vai apenas conter duas funções para nós. Então eu vou colocar isso dentro da minha pasta de dados. Quero dizer, poderíamos colocar ainda o tempo da regra apenas colocando-o na pasta de dados. Então eu só clique com o botão direito do mouse em ir para a aula, então eu estou chamando de semente. Ele está ligado, então isso vai ser uma classe estática pública de estática, significa que eu não tenho que criar uma instância fora dela toda vez. Eu posso apenas cerebral que eu posso apenas chamar as funções que estão lá à vontade. Tudo bem, alguém tem duas funções que eu vou ter estática privada Evite neste vai ser usuários de sementes, e eu vou apenas dar-lhe as conchas vazias primeiro. E então eu fui dedo-duro com a mãe um que vê regras de sementes. Eu só reuso isso. Tudo bem regras de sementes. Nenhum usuário de CD vai usar um parâmetro em. Este parâmetro vai ser gerenciador de usuários. Tudo bem, então usar seu gerente é um construído em classe que nos dá funcionalidade toe literalmente gerenciar. Seus medos são para os usuários. Você sabe, nós podemos acessar certas coisas certas construídas em funções, e nós vamos ver como nós avançamos. Então, gerenciador de
usuários nas classes de identidade padrão Usuário de identidade. Não, a coisa é, você pode ter mais de uma classe de identidade. Isso é que eu não quero ir muito fundo na identidade. E a diferença ainda não é pelo menos. Mas se você quiser pegar seu casaco, meu outro curso completo SB dot net core 3.1. desenvolvimento no DIT explicará tudo isso para você. Então, estamos usando a identidade padrão em ir chamar este gerenciador de usuário parâmetro em, em seguida para as regras, formulários e eu estou usando Roll Manager. Então este é o papel gêmeo. Então, o gerenciador de usuários em, estamos usando a identidade padrão, que é pais de função de identidade. E vou ligar para este gerente de um rolo para abreviar. Não. Como eu estou prestes a começar a me sentar fora das regras, ocorreu-me que eu não vi uma configuração para as regras dentro de fora ou comecei. Deixe-me voltar atrás. Olhe em. Minha suspeita está correta. Então o que acontece é que quando você adiciona a identidade padrão, você também pode adicionar uma rosa. Eu só vou trazer a linha para lá. Então, adicionamos a identidade padrão que eu expiro a linha que eu quero dizer pontos, regras de
anúncio. Tudo bem. E então eu estou dizendo que eu quero os padrões, que é a regra de identidade. Tudo bem, então. Tornozelos abertos. O Breece. Bom. Então aqui estavam dizendo que queremos usar a identidade padrão, e queremos usar papéis em nosso aplicativo, e tudo isso deve ser armazenado no concurso de beleza aplicativo. Tudo bem, então isso foi apenas um pouco de configuração faltando que ter certeza está lá antes de prosseguirmos . Então, agora criamos outra função, e eu vou chamá-la de sementes de alguém para ver de distúrbios públicos em grande
vazio estático público , em
seguida, semear. Então a semente vai levar dois parâmetros que são praticamente idênticos aos que
acabamos de configurar. Então eu tenho uma licença. Er chamado Gerenciador de usuário onda parâmetro Para o gerenciador de regras em tudo isso vai fazer sentido suficiente quando você vê que tiro cheio de chamada de música. Certo. Então isso é bem, essa é a nossa semente do esqueleto Gaeta, pelo
menos. Então, depois que você funciona de um público para privado sobre o que vamos fazer dentro do público , um é chamado apenas de dois privados. Então eu vou começar semeando as regras sobre eu estou passando para aquela. O gerente de funções que deu através com um telefonema ligado. Depois fui semear os usuários. Tudo bem nesta está tomada. O gerenciador de usuários. Tudo bem, então quando chamarmos ver semente de dados, ele chamará de Ciro e usuários de sementes. Então vamos começar com as regras. Então o que queremos fazer é verificar se uma função já existe. Se não acontecer, então vamos em frente e criamos o referido rolo. Não, esta é a declaração vai impedir-nos de criar são bem cada vez que o aplicativo começa, porque você não quer criar mais de um incenso fora de uma regra particular, certo? Então o que eu vou fazer é nesta declaração dizendo se e então aqui é onde nós vemos o polar desses objetos gerenciadores sobre o que dizer. Se o gerente de regras aponta, então posso dizer que o rugido existe uma pia. Certo? Mas então é,
hum, hum, isso é uma pia, certo? Então nós temos duas opções que eu posso ver continuar e verificar em uma pungência administradores a regra que queremos verificar para. Sobre isso eu poderia dizer Dr. Resultados. Certo. Então o que acontece é que, se você está chamando e perseguindo função em, você
não tem a distância de obter sempre disse que os resultados? Não. Desde que eu tenho a opção de fazer isso um acho que eu vou escrevê-lo, e então eu vou tentar voltar e então converter todas essas funções para qualquer coisa que seria um exercício legal, certo? Alguém para escrever de forma não trote primeiro, certo? Então eu estou dizendo que se o gerenciador de regras verifica a existência fora da função de administrador nele não existe, então eu quero declarar de nossa função é igual a nova função de identidade Direita em então, dentro desta regra, eu realmente só quero dizer que o nome é igual ao administrador. Ou então eu estou apenas inicializando ou criando no objeto para que é o nosso papel em. Então eu vou dizer,
hum, hum, resultados da
barra. E então aqui está outra situação. Saiba onde eu sou forçado a usar uma variável porque gerente de rolo não criar um dissipador de modo que assim como fazer criar um dissipador e, em seguida, eu estou com o papel da faculdade. Mas então eu tenho que dizer que os resultados, a fim de escapar com ele e, em seguida, real eventualmente que os resultados não realmente muito certo, porque eu não estou usando isso em qualquer lugar. Não. Antes de eu seguir em frente, eu vou converter esta flexibilização então ele vai toe tomar um pouco mais de fator,
porque, lembre-se, lembre-se, eu não posso estar chamando em uma função de canto de função de atenuação desconhecida. Então, se eu mudar este para você pensa que um monte de mudanças meu duro em aparecer. Mas, ei, é para
isso que estamos aqui, certo? Então vamos fazer isso rápido. Então, para se encontrar, evitar ,
hum ,
função, você acha que tem que transformá-lo em uma tarefa, certo? E depois, claro que sim. Ele acha que é público enfrentando tarefa estática. o Eonome da função, então? Você está vendo aqui que ele diz que você tem uma tarefa, mas tudo o resto não é uma pessoa síncrona para remover os resultados do médico. E então eu vou ver se não vai embora. Tudo bem. Olhando bem. Até agora. Então, se não esperar porque lembre-se, isso é qualquer coisa. Então isso significa que posso fazer a mesma coisa. Não aqui, em vez de ver o resultado, eu posso apenas dizer fora em seguida tirar os pontos. Resultados. Tudo bem, isso parece um pouco mais limpo. Obits mais. Está em núcleos na totalidade. Certo, então. Fora do curso. Fiz o telefone. Sean chamou as regras da Secede. Precisamos de um jeito aqui. Quando? Se estamos esperando aqui em cima, isso significa que eu preciso transformar isso em uma tarefa ou algo assim à distância. Lee está afundando. Tudo bem, então acabamos de converter uma função assíncrona de freira em assíncrona, então eu só trouxe a linha para que ela não saia da tela aqui, certo? Então, não, tudo aqui é assíncrono. Eu só vou fazer isso com isso. Além disso, eu deixo a estática, a estática não vai. Acabei de colocar na palavra-chave uma pia e mudar o vazio para tarefa. Tudo bem. E depois fora do curso. Se é uma tarefa
, espero os resultados do telefone. O carro Sean? Não. de Antesdeseguir em frente com usuários de sementes, vou criar duas regras aqui, então tenho uma função de administrador. Mas então isto é uma livraria. Então é uma livraria online. Temos administradores que devem ser capazes de entrar e fazer I operações atuais sobre os livros e autores em maio ser clientes que podem ser capazes de fazer login e, provavelmente, você sabe, por um livro off argumento. Vê? Então eu quero outro que diga “dono do custo”. Certo, então esse papel existe. Uma pia é. Eles estão dizendo, se este papel nele não existe, são sim este cheque usando. Se esse nome de função não existir
, , , crie uma função de identidade. Andi criará um objeto e, em seguida, criará o registro no detalhe. Abelhas. Tudo bem, então não. Quando recuar rolos, ele tentará criar essas duas funções no em cada vez que ele é executado. Mas, claro, se já estiver lá, não fará nada certo, que é exatamente o que queremos. Então nós fizemos. A semente surgiu. Então vamos nos concentrar no usuário não Noto criar os usuários. Eu vou começar com um similar se declarações quando estamos a dizer se gerente de usuários Então isso é não, vamos olhar para alguns dos poetas do usuário ponto gerente Obter usuários. Bem, eu não preciso dos usuários na fila. Posso encontrar pelo nome, certo? Então o que eu não quero fazer para que eu possa encontrar meu e-mail. Eu confinado por idee eu confinado por login eu posso encontrar pelo nome tudo bem, e todos fora deles fora são algo assíncrono, se não longe ele encontrar pelo nome do usuário dinheiro não encontrar pelo nome uma pia em. Digamos que eu tenho ah, usuário. Um então nome aqui seria o nome de usuário para que possamos ir encontrar o meu nome ou podemos ir encontrar por e-mail Remedios e-mail Então eu quero dizer, se não, usá-lo na fusão que encontrar por e-mail e eu vou ter um padrão adicionar significa em Isso é um Livraria. Esse é o nosso endereço de e-mail padrão, certo? Oh, desculpe, eu me empolhei. Portanto, isto não é verificar se existe. Isto é tentar encontrar alguém tão um objecto. Então, espera devolver alguma coisa. Então o que eu quero fazer é verificar se não são minhas costas. Então não é um não, não é um valentão. E dizer que se não telefonou está vendo aguarda os resultados da função. Andi
, ou encontra um pneu não e se o encontrar,
então não será “não”. Então, se for não, então você deseja criar um usuário no. Então eu fui criar um usuário fora do tipo de identidade usuário. Uma vez que esse é o nosso usuário padrão que estamos usando em, então precisamos dar esse usuário e nome de usuário Andi na refeição. No mínimo, precisamos que os Sanderson chamem o administrador que o usa. Eu vou enviar o e-mail para ser o mesmo e-mail que eu acabei de verificar. Então, se eu encontrei pelo nome que eu poderia ter dito para mim, e se eu descobrisse pela EMI nos elegeu, é assim que há tantas maneiras de fazer isso que não há direito ou eu estou apenas trazendo nossa própria garantia do mundo de que há muitas possibilidades, Certo? Então, estou vendo o usuário Vier criar esse objeto de usuário que está ligado. Então vamos dizer que as docas do gerente de usuários criam aqui cantar e então eu quero
criar esse usuário com a senha, certo? Então, se você olhar para esta função, as definições de função são os soberanos. Você vê que você tem a identidade, usar seus objetos e você também pode passar em uma senha string. Então, a senha é meio rígida Alguém basta ir para a ciência S S S S S S O R D que você quer para que ele possa mudar a política de pastor se você quiser ser mais simples, mas eu vou deixá-lo porque isso parece uma boa política, decente onde você tem que tem um símbolo. Eu tenho que ter um número na letra maiúscula deve ter uma vida mínima. Tudo bem, então isso é um bom seguro dedo do pé. Imponha a segurança em seus usuários. Não, eu vou designar. Então isso vai retornar um valor, na verdade. Certo. Então o que eu vou fazer para salvar nossos resultados é igual. Eu espero, aquele telefonema? Não. Quando eu receber o resultado, vou ver se os resultados encaixaram. Então eu vou pegar uma bandeira para ver que foi bem sucedido são loucos. Então, se foi bem sucedido do que eu quero dizer, gerente de
usuários, isso é estranho rolar. Tudo bem, então eu posso saber ter criado um usuário adicionar o papel do dedo do pé. Então eu quero dizer que eu quero adicionar usuário a função no administrador. Então não, você vê por que vemos as regras antes de ceder usuários? Porque quando você chegar aqui, essa regra existe mais para que esse passo seja bem sucedido, e isso é uma coisa. Então espere, então. Lá vamos nós. Então fizemos isso com o administrador? Não, se eu quisesse uma amostra de cliente, , eu só vou fazer a mesma coisa aqui. Só vou levar esta declaração. Eu vou dizer cliente, que pode ser Gmail Dot com. Tudo bem, vamos. Eu vou fazer um anúncio de cliente algo que você provavelmente poderia ter escrito como um bom
loop antes . E você colocou isso em um capitão toscano. Oito em um número de cada vez. Agora posso avisá-lo que é muito rigoroso. Então, se você vê o cliente duas vezes bem, quero dizer, ele está verificando para ver se os clientes para que ele não pode ter o para clientes com o mesmo e-mail após greve. Então vemos o administrador aqui. Então estou criando um cliente no Gmail Dot com. Use o nome do cliente um no gmail dot com. Mesma senha. Costumava ver impostor. Não tenho nenhum problema com isso. Mas então a regra será cliente porque essa é a outra regra com essa juba e forma de cliente, certo, então temos nosso primeiro cliente, e então eu vou ver outro. E então este cliente vai ser cliente. Faça um tour pela ferramenta do cliente no gmail dot com. O nome de usuário
também é cliente . No e-mail é o dedo do cliente no genia dot com. Em. Mais uma vez, esta regra é os clientes. Toda a gente vai ter o mesmo passador, por isso vai ser fácil para nós registar como qualquer um em qualquer altura. Então, mais uma vez. Estas são as amostras para que quando eu vou desmascarar mais na próxima vez, eles serão criados automaticamente. Tudo bem, então não, nós fizemos o trabalho pesado. Nós só precisamos deixar a inicialização Nazi s saber que ele precisa para executar este aplicativo são Desculpe isso marcou quando o aplicativo é iniciado. Certo? Então, no conficker, meu pensamento certo, eu só vou colocar sob a política do coro. É um bom lugar. Eu ia colocar na formação. Ligue para o dedo. Consulte data dot seed. Direita em. Eu acredito que a semente é uma pia, mas antes de nos perguntarmos se é uma pia ou não Bem, um problema maior. Precisamos incluir gerente de usuário e gerente de estrada. Então, o que acontece que pretendiam passar nesses objetos? Mas eles não vão entrar. Eles não existem no escopo da configuração. Então eu preciso adicioná-los para o escopo conficker é a lista Permata para que eles venham. Então eu só vou quebrar a linha para que eu não vá para o fogo para a direita em frente. Em seguida, eu vou ver o gerenciador de usuários no passado em Identity user on. Estamos ligando para este gerente de usuários. Então vamos fazer a mesma coisa com a regra do gerente. Eu não governei sobre isso aqui ou Aan Den. Este é o monitor de regras. Então não, temos o nosso uso. Um gerenciador e objetos gerenciador de rolagem entrando em então. Então veja, se eu engordar, tudo o que vai estragar tudo porque eu não posso dizer o nosso peso sem uma pia, então isso pode ser um problema, certo? Então essa é uma daquelas coisas quando se trata de programação assíncrona que, você sabe, precisamos ter cuidado. Então, em vez de colocar o peso deles na frente, eu só vou ver o peso de um médico no final. Então isso é que é outro pequeno trabalhador possuído. Então, onde há um testamento, há uma maneira. Então vamos executar e ver se nossos dados são colocados em nosso banco de dados. Tudo bem, então eu executei e estou recebendo esse erro, e eu acho que isso é devido a um erro ortográfico. Se você olhar para todo o administrador está escrito, isso é totalmente errado. Então deixe-me apenas voltar e corrigi-lo, então você provavelmente se você é um soletrador melhor do que eu. Eu, hum você não entendeu essa era, então deixe-me apenas voltar e ter certeza que o Iraque tinha a Rua Maldade ou e não no mínimo, o que quer que fosse. Então, isso é desculpa. Isso é outra vez. Tudo bem, então desta vez eu cheguei até carregar a documentação. Então eu vou voltar para o meu banco de dados, olhar dentro do meu SP em seu estábulo de usuário, selecionar-se 1000 e lá eu tenho meus três usuários. Então é assim que o registro de usuário ah será parecido. E identidade, certo? A idéia não é incriminar outono é como o que estabelecemos seu ah guo i d.
valor. Temos o nome de usuário em que é normalizado o e-mail que é normalizado. Então normalização é como se eles simplesmente capitalizar tudo e fazer uma sujeira muito para que o invólucro é irrelevante no dia. Dê-nos um hash de senha para que todas essas coisas sejam incorporadas. Você não tem que gastar tempo fazendo hash de senha um, dedo colocado no sistema. Ele faz isso para você dá seu sistema de segurança e conferência Onda. Desativamos a necessidade de certos recursos, mas sim, isso é o que isso significa. Nossos usuários foram criados e, se eu passar por regras, as regras teriam que ser criadas para que os usuários fossem criados. E lá temos o Administrador Onda, nossa conquista para pisar nas respectivas identidades. Então nós apenas colocamos em alguns usuários de amostra e subimos em nossa aplicação. Andi, quando
voltarmos, estaremos configurando o controlador de usuário que irá lidar com a assinatura real e sair da autenticação para nós.
32. Configurar os usuários: Ei, pessoal, nesta lição será configurar um controlador de usuário para lidar com algumas
operações de autenticação . Então eu já comecei a adicionar o controlador. Fui aos controladores, botão
direito, clique. Adicionar foi para controlador e eu será andaimes em controladores AP I vazios. Eu só cliquei naquele clique adicionar dar-lhe um nome, alguém para nomear seu controlador de usuários e, em seguida, ir em frente e clique novamente. E agora temos nosso controlador de usuários. Então, como é costume, o que vamos fazer é configurar ou, você sabe, dependência é o primeiro em formal, então eu quero dependências. Eu quero uma dependência para o gerenciador de assinatura em um para o gerenciador de usuários incluiu aqueles , e é assim que eles se parecem. Então você pode simplesmente escrevê-las no Guy. Inclua a biblioteca desaparecida. Então, temos leitura privada no lado e gerente para usuário de identidade no gerenciador de usuários para Identidade Usuário. Também assim o toff eles funcionam muito bem juntos, Aziz, tanto quanto eles podem parecer semelhantes, mas um gerencia as operações do usuário uma alça de pé em lixar estradas e
coisas de autenticação . Tudo bem, então vamos configurar nosso construtor em bem passado em nossa dependência é. Então eu só vou fazer isso em um passado de 1.000.000. Então é claro que fazemos a nossa inicialização. Xas de costume. Muito bem, temos um gestor de autógrafos e um gestor de utilizadores, como eu disse. Então, quais são as coisas que queremos fazer no controle de nossos usuários? Acho que a coisa da mídia seria manipulador de dedos. Faça login. Certo. Então nós temos o que chamamos de dados em notações em DWI teria sido olhando para eles de controladores
anteriores. Então, nesta situação, queremos um identificador autorizações, Significado, que pode acessar um certo ponto. Nós temos amargo e anotações que têm, tipo, um baixo anônimo onde podemos restringir por função ou podemos apenas dizer autorizado, significa que alguém tem que ser autorizado. Então, se dissermos permitir anônimo, isso significa que você não precisa de autorização, mesmo que todo o controle seja não autorizado. Então, se eu disse autorizado para todo o controlador, isso significa que cada endpoint dentro daqui precisaria de autenticação. Ah, Low Anonymous anularia isso agora. Não tenho nenhum propósito para isso. Então, eu só vou para um monte anônimo. Andi,
eu vou fazer em http post no ponto neste ponto final vai ser um público uma
presa pia . Certifique-se de acertar meu derramamento. Tarefa desligada. Eu resultados de ação neste. Este ponto final vai ser login tanto tempo será tomar eu usar os objetos que eu vou colocar no meu do corpo. Então isso significa que precisamos ir e criar um objeto que irá lidar com isso. Então eu vou dizer usuário DT, ou que é o tipo de dados que precisamos criar e seus detalhes de usuário. Então deixe-me apenas ir e criar essa classe um mesmo tanque, e eles apenas completar isso e, em seguida, ir para a minha pasta de detalhes no anúncio rápido Andi, criar uma nova classe e nós estamos chegando usuário E t. Ou cria, em
seguida, usar a necessidade de ou quer mantê-lo simples. Eu realmente para não pelo menos realmente só precisa de uma string nome de usuário Onda Stream senha. Certo. Isso é tudo o que eu realmente preciso. Podemos reanimar um pouco mais tarde,
mas está bem. Podemos reanimar um pouco mais tarde, Sabe, só para obter a autenticação, só
queremos usar o nome e a senha. Provavelmente
podemosfazer várias coisas,
mas vamos manter simples. Provavelmente
podemos fazer várias coisas, O Renno. Desculpe. Então, nós estamos indo para o pé. Basta incluir a biblioteca desaparecida para que tenhamos usado detalhes sobre Nós estamos aceitando isso direito fora do curso. Nós vamos colocar em nossa documentação ou comentários resumidos para dizer, hum, usuários carregando endpoints. É qualquer um, na verdade. Documentação sabe que eles precisam passar em que o usuário muito tempo em endpoints saber o que vamos estar fazendo aqui é que vamos estar vendo que queremos resultar em alguém para salvar eu resultado é igual a on. Então eu vou ver uma maneira que o resultado fora do gerente de assinatura que vai tentar um sinal de
senha em um síncrono, certo? Então, não, eu posso ver. Então, se você olhar para a documentação para essa função, você vê que isso significa o objeto de usuário. E ele também precisa de senha em assim por diante tão baixo que eu tenho dedo Bem, isso é um fora dos soberanos. Outro soberano veria que ele só quer string nome de usuário e a senha e esses outros dois boletins. Eles têm que estar lá para que possamos passar por quedas e quedas. Mas o ponto é que um soberano iria querer e ah, todo o objeto de identidade usuário na senha do outro. Alguém iria querer apenas usá-lo e senha. Então, uma vez que isso é tudo o que definimos neste e eu realmente não quero passar por criar a parte superior de
outono do usuário de identidade para isso e aquilo, eu não vou passar por isso. Tudo o que vou fazer é usar a sobrecarga mais fácil. No dia eu fui dizer,
Bem, Bem, var nome de usuário é igual a Então eu gosto toe tirar meus resultados fora de objetos e eles inter variáveis primeiro, em algum lugar para ver usar o nome é igual ao detalhe. Use o nome em uma senha. Lembra-te que o Control de duplica a linha, caso estejas a pensar como é que
fiz isso tão depressa. Então nome de usuário e senha. E é isso que vou passar para a assinatura. Então eu estou passando o nome de usuário passando no passado. Palavra sobre, então eu vou apenas dizer, cai em quedas satisfeito. Outro para o Julian, certo? Então, ele vai tentar a autenticação. Então este identificador que vai para o banco de dados, vê o nome de usuário, anexa o pastor que faz tanto em DSI é o que ele precisa ver. Não, precisamos dizer se o resultado certo é, vamos ver. Então, Sr. Parando, isso não é igual. Portanto, sem direitos, se o resultado não é igual a nenhum significado. Ele tem algo de volta para não, o que eu vou fazer é ver Ok. Vamos torná-lo um pouco interessante. Desculpe. Voltar. Ok, então vamos torná-lo um pouco mais interessante. Onde eu vou salvar nosso usuário é igual. Nós tendemos que eu vou usar o dedo gerenciador de usuários, recuperar os segundos de
usuário que recuperar os segundos de
usuário queeles encontram pelo nome. Tudo bem. Então, se eu estou pedindo para usá-lo, certo, então eles vêem dizer que está tudo bem pelo nome. Ele quer usar os nomes em que posso encontrar o meu nome, recebe o usuário pelo nome de usuário que está sendo usado. Então eu fui para apenas retornar usuário o objeto de usuário com a resposta okey em. Então, se isso não acontecer ou não entrar nessa declaração, vou devolver o que chamamos vou devolver o que chamamosde “direito não autorizado”. Não autorizado significa que você não é uma carga além deste ponto. Vamos ver se há uma sobrecarga que inclui dados para que eu possa passar nos objetos de qualquer Basta dizer, usar que GTO é não autorizado. Tudo bem, fora do curso. Você sabe que nós configuramos nosso registro enquanto avançamos. Então, sobre voltar atrás e fazer tudo isso mais tarde, certo? Não, só
estou mais preocupado em configurar o registro. Certo, então vamos dar uma volta. Alguém para apenas ir para Oh, onde o modo acima postar dinheiro no entretanto. Tudo bem, então eu estou apenas olhando através da documentação de mordidas que vemos aqui, usuários
do FBI cortar ou usuário log endpoint nele requer um nome de usuário na senha que deve estar em seu corpo de missão. Então vamos construir isso juntos. Então, eu só vou trazer uma nova conta sobre a coisa legal sobre carteiros é que ele mantém uma história. Então, se você está conectado com suaconta pessoal, conta pessoal, ele mantém um histórico fora de cada pedido que você tem desde que eu poderia rolar por dias porque eu fiz um pouco fora de testes do FBI usando esta ferramenta. Então vamos rebocar nossos testes onde eu vou para postar em, então eu só vou pedir emprestado o endereço de um dos meus anteriores porque estamos usando o mesmo endereço de porta de host loca em. Então é um usuário P I. Não há nenhum valor após a barra. Mas então o corpo precisa se parecer com isso. Então eu só vou copiar a amostra. Depois vamos com o dedo do pé cru, escolhemos Jason com base em. Então vamos tentar. Então eu disse administrador. Andi o passador este p que sai s w o r d um. Então vamos ver se este funciona. Então eu clico em enviar. Tudo bem, estamos no negócio. Então, vemos aqui que a informação desta pessoa veio, mas agora obviamente não iria querer necessariamente retornar toda a carga útil porque aqui você está expondo a senha silenciar tanto quanto não é muito decifrável, ainda
é um hashes de senha ainda informações que você não deseja ir. Tudo bem. Então você poderia criar, como outro, hum, bto. Como um detalhe de usuário vista onde você está realmente apenas retornando. Talvez o usuário i d o nome do usuário o e-mail em qualquer outra informação bit off que você sabe seria sensato para exibir em uma resposta sobre um usuário. Certo, então isso funciona, Andi. Se você está pensando que talvez você queira incluir, como primeiro nome, sobrenome e outros bits fora de dados na identidade, então isso é totalmente possível. E mais uma vez, eu passo por isso em leve. Claro, completo é velocidade, não Net 3.1 núcleo Andi entidade, o desenvolvimento de quadro. Então você pode passar por esse curso para obter uma melhor compreensão sobre a identidade e como
podemos ser estendidos. De qualquer forma, podemos validar aqui que o sinal funciona muito bem. Então vamos tentar com o cliente um. Tentamos isso com o administrador. Vamos tentar com o cliente um. E então vemos aqui o mesmo para o cliente um. Então vamos tentar com algum valor aleatório, algo que não é preciso. Então alguns errados usam o nome e então vemos que estamos recebendo Estamos recebendo uma ferramenta para nenhum conteúdo. Eu não esperava conseguir isso. Então vamos depurar um pouco e ver por que temos isso. Então eu só vou colocar o meu ponto de pausa aqui depois que nós teríamos obtido os resultados em, em
seguida, clique em Enviar on. Então ele bate. Os nossos pontos de pausa são bons. Então, os resultados têm campo. Tudo bem, então. Eu só vou passar porque eu quero ver exatamente por que ele vai para uma ferramenta para mas então ah, ok, eu vejo qual é o problema. - Não. Então, tudo bem, eu fico com esta neve. Então o que aconteceu é que eu disse se o resultado não é igual não, que não é preciso, Eu deveria estar verificando se os resultados foram bem sucedidos não são assim Deixe-me parar e então você corrigir isso. Então o que aconteceu é que ele ainda foi para o bem, mas então isso foi não, então o ok voltou em dois ou quatro sem conteúdo em vez de um 200 com conteúdo, certo? Então esse foi o comportamento padrão fora do ok. E essa é a primeira vez que vejo isso. Então vamos fazer isso juntos. Então, em vez de ver resultado, não sei, vamos um resultado bem-sucedido. Então, se o resultado não X foi bem sucedido, então queremos retornar ok em, então ele deve acabar lá se ele não teve sucesso. Então vamos tentar de novo. Tudo bem, então vamos tentar de novo no curso para o homem e eu clique. Mande em frente. Lá vamos nós. Então, para um na autorização, isso é melhor. Por isso, não teve sucesso. Então, foi preso por um autorizado não autorizado Desculpe por ele enviado de volta o usuário, hum, informações da tentativa. Então, vemos aqui que alguma autenticação está funcionando, ou pelo menos podemos autenticar e verificar se os usuários existem em nossos pontos e. Não, o que eu vou fazer é apenas corrigir o registro neste ponto. Eu realmente não gosto de ter o ponto em questão sem ter registro. Você sabe, nós estamos sentando um padrão, então eu só vou tomar um tempo. Andi, pegue um pouco do cabo de um dos controladores anteriores. Tudo bem, então eu montei este país para se parecer mais com os outros que temos até agora onde eu incluí o serviço mais longo inicializá-lo, cara, colocar os locais são colocados em minhas funções para obter um controle e nome da ação, bem como seta
interna ativada. Então envolvi toda a operação em uma tentativa de captura. Então eu apenas colocar tentar, são propriedade. Tudo o que fizemos antes na captura retornaria a chamada de função era da Internet no cara estava colocando registro para dizer que era ah, tentativa de
registro do usuário em. Você poderia até colocar. Bem, nós já temos carimbos de hora no diário, então tudo bem. Então dissemos que se ele foi bem sucedido do que dizemos, use o nome autenticado com sucesso se ele não foi bem sucedido do que nome de usuário, não autenticado. Então essa é a madeira que eu coloquei no reboque. O controlador de usuários. Você pode ter uma idéia diferente. Isso é bom. Eu adoraria ouvir como você acha que eu poderia melhorar isso, mas isso é um abismo,
hum, hum, uma linha de base para o lançamento dos EUA. Então, acabamos de analisar como fazemos a autenticação de usuários em nosso aplicativo. No próximo, estaremos olhando para configurar nossos tokens Jason Webb também estará olhando para a autorização no nível de controlador e ação.
33. Configurar computadores da web JSON (JWT) Autenticação: Ei, pessoal, bem-vindos de volta e isso. Ouça, nós vamos começar a sentar ou Jason Webb Wilkins Agora Jason Webb Tokens tem sido durante essa expressão em torno muito, então deixe-me apenas dar-lhe,
Ah, Ah, instantâneo do que eles são. Eles são basicamente uma string que tem informações codificadas sobre um usuário praticamente
que é isso em um natural em real. Eventualmente, ele é usado ao enviar chamadas do FBI para uma empresa e epoch também que o receptor do servidor que está recebendo o A P I call pode avaliá-lo para ver se este token é válido. Se as informações neste talk e ou esta string tem informações que podem validar isso, isso vai de uma fonte legítima. Então, todo o ponto de Jason Webb tokens como ele relaciona a autenticação do usuário é que quando queremos garantir um A p I baseado no usuário que está chamando isso, podemos usar tokens Jason Webb para dizer que quando você faz uma chamada toe, você sabe, autentique-se, eu vou lhe dar uma lembrança. E toda vez que você faz qualquer outro cartão ou em algum lugar que você precisa ser autenticado, você pode apenas me mostrar este token em. Vou te dar passagem. Podemos definir datas de experiência Shin nesses tokens para que, se eu estive usando um token durante todo o dia no tempo de expiração é dito que talvez um dia são talvez três horas. Isso significa que na terceira hora ou na 4ª 0 R um minuto após a terceira mais parece
me dar esta lembrança. Se eu tentar usar esse token novamente, sou não autorizado, e preciso autenticar novamente para obter novos tokens. Então esse é o ponto todo fora. Tokens de Jason Webb. Então, mais
uma vez, um usuário vai fazer alguma operação que vai disparar sobre o FBI. Estamos à espera de ver que esta chamada para a A.P tem um sinal. Se não acontecer, então vamos dizer a essa pessoa que precisa se autenticar. Eles não estão autorizados. Se eles se autenticarem, vamos dar-lhes um token com uma data de experiência na canela,
então, enquanto eles estiverem usando esse token, eles podem usar nosso ponto a p i n. Então, geralmente o cliente armazenará esse token até que ele o contemos. É expresso, e tentará obter um novo. Então isso é tudo ou relacionamento funciona em lugar nenhum. Construindo o P.A. Esta é a parte de trás. Mais tarde, construiremos o dedo do pé de um cliente muito o que colocamos no FBI. Tudo bem, então já chega de conversa. E em teoria fora, vamos entrar em alguns fora da prática. Então, neste mesmo controlador de usuários que acabamos de construir, eu vou colocar em outra função privada. Então eu vou dizer privado e, em seguida, fazer este ver sobre ele vai ser uma tarefa que vai nos retornar corda sobre. Então eu quero chamar este gera Jason que estamos falando. Então eu vou dizer-lhe que ele deve tomar um parâmetro off tipo identidade usuário. Tudo bem, em, então, O que eu vou fazer é para que ele vai retornar uma corda, mas eu estou indo toe colocar a função causa em algum lugar aparecer então eu apenas ler o formulário algum chamar enquanto eu estou nele. Então, depois que ligamos para o usuário, então temos o objeto do usuário. O que eu vou fazer aqui, você salva a nossa corda. Então essa disfunção está gerando o Jason Webb Token e devolvendo essa corda, certo? Alguém para dizer que string token é igual a aguardar Nesta chamada telefônica estamos transmitindo direitos de objeto de
usuário para que as informações do usuário entrem. Não, deixe-nos criar esta geração. Jason, estamos conversando. Então, há algumas coisas que eu vou ser feito aqui. Em algumas dessas coisas envolvem configurações que não estão aqui,
então eu só quero ver retornar uma string em branco para Não,
eu apenas parei. Em algumas dessas coisas envolvem configurações que não estão aqui, então eu só quero ver retornar uma string em branco para Não, Ele é a ansiedade pela disfunção. Então o que queremos fazer com o nosso Jason. O que se fala é que queremos dar-lhe uma chave, por isso queremos dar-lhe algum valor que sempre vai ser usado. Como o que chamamos de agressões quando você está gerando uma senha. Então, nas configurações do aplicativo, não Jason embaixo sozinho hosts entender para pressionar vírgula. Então eu vou criar uma nova seção de conflito. Vou chamar-lhe G Wt. Tudo bem. E então eu digo dois pontos e, em seguida, abrir um novo par de chaves. Então temos. Então você vê que isso bem, este é um arquivo do Jason, então, se estivemos escrevendo Jason ou procurando e Jason por um tempo, não. Então é o mesmo tipo de formatos. Sochi Colon no valor em. Então temos outro que vamos chamar de Emissor em um cool no valor Andi. Certo? Então vou incluir documentação sobre todos esses requisitos para JWT. Hum, o que Jason Webb tokens para ser configurado em dot net core. Algumas dessas coisas que você tem que ler e entender, e você pode saber, memorizar topo, mas pelo menos você tem alguma orientação. Tudo bem, então para a chave, eu vou usar ah, cordas
estáticas. Eu vou também incluir esta string estática em é apenas ah gerado. Eu desvalorizo? Então, a questão é que você não quer usar uma chave. Isso é para Schardt. Eu acho que quando você usa uma chave que é para Schardt, ele vai lhe dar no ar dizendo que a chave não é segura o suficiente, por assim dizer. Então vá. É um tipo perfeito de valor para usar porque um não é algo que alguém pode simplesmente olhar para o seu tribunal e memorizar a chave. Não é algo que você possa memorizar também, mas é,
você sabe,
é você sabe, único o suficiente, e é longo o suficiente para atender aos requisitos de segurança, então eu teria a cara de que ele está incluído. Ele com o recurso é para este vídeo. Diga que pode reutilizá-lo. Ou eu posso apenas encontrar alguém pode até mesmo provavelmente ir para o banco de dados e copiar um desses ID de
usuário e usar o seu Isso é bom. E então, para emissor, vou apenas escrever teste ponto com. Então, para não, como sobre apenas desenvolvimento que podemos usar para parar a calma quando implantamos provavelmente vai querer mudar isso como um domínio mais sensato, certo? Então é quem está emitindo isso? JWT? Praticamente assim. Toda essa informação é usada ao gerar essa conversa e string. Não. Agora terminamos com as configurações que Jason precisamos para conseguir uma biblioteca. Alguém diretamente ir para conseguir pacotes em, em
seguida, sob Bros estavam indo apenas para procurar por cerveja JWT. Então, quando fazemos isso, devemos ver o Microsoft DOT está sendo uma autenticação principal. Cerveja JWT. Tudo bem, então podemos ir em frente com isso e uma vez que você tem que incluir, bem eu tentei com o incluir pré release que eu realmente não trabalhei para mim. Hum, homens nosso para o seu baseado na versão off dot net core porque eu acho que subiu por alguns incrementos. Então podemos antic incluir pré lançamento e apenas obter a versão estável. Tudo bem, então vamos apenas estabilizar. Então eu estou apenas no tique-taque. Incluir pré-lançamento. E eu estou recebendo essa versão estável em Eu estou incluindo-a no meu projeto, concordando com qualquer coisa. E, em seguida, uma vez terminado o download, precisamos passar para a nossa inicialização, não CS arquivo em. Comece a configurar algumas configurações. Eso começar fora ponto CS em. Vamos para a nossa seção de serviços conficker em, em seguida, logo acima da
configuração de gin slugger Arquivando com começar a escrever serviços ponto Adicionar autenticação. Desculpe. É uma autenticação por vírgula. Andi dentro do pai nesta temporada. O que dizer? JWT Beerer padrões, certo. Autenticação encaixada. Skeel, vá para a próxima linha, então eu vou dizer dot odd JWT beer e então nós vamos tomar fresco fora algumas opções, entendeu? Para ver ou no cordeirinho dinar, a expressão olhando seta e, em seguida, para chaves encaracoladas e um semi-cólon. Então, estou apenas fechando isso. Tudo bem, de
vez em quando eu quero quebrar a linha aqui. E eles iam começar a escrever em algumas opções, alguém para dizer ou não. Os parâmetros de validação de token são e sabem que vamos estar vendo, um, definindo alguns parâmetros pelos quais nós obviamente validaremos o que quer que seja que fala está chegando então falando, vai ser igual a novo dedo do pé novo parâmetros de validação de token. E estamos inicializando novos objetos. E eu acho que isso está dizendo que eu preciso incluir algo. Então eu incluí. Deixe-me colocar um cínico e no final, tire esse aparelho. Tudo bem, Então a primeira opção é validar emissor em que um é verdade. Quer certificar-se de que o emissor foi violado? A seguir é validar público-alvo, e isso também é verdade. Então nós validamos a vida, então quero ter certeza de que é, você sabe, válido para o período em que dissemos que deveria ser votado. Queremos validar o problema estão assinando chave. Então chegamos ao ponto em que dizemos: “
Ok, Ok, quem é o emissor válido?” Então eu vou dizer que um emissor violento é quem eu disse que é de acordo com a minha configuração e perturbação alguma coisa. Obtenha a configuração do JWT com o emissor de valor, nosso escritório de valor em que você está. Lembra que dissemos este ano para testar a calma, certo? Então, quero dizer, neste
momento, é bastante inconsequente. Quando você for a público, porém, terá um papel maior. E, em seguida, o próximo é público válido e isso também será o valor fora do emissor. Nem a última linha é a questão ou chave de assinatura. Tudo bem, e então esse não vai dizer qual era a chave. E quero ir ao tribunal. Então acho que preciso incluir algo estranho aqui. Então ele está dizendo que a chave de assinatura será, hum, chave de segurança
simétrica, muitas vezes na versão ID com fio fora qualquer valor que colocar para fora a chave. Então lembre-se que quanto mais a chave, melhor. Tenho certeza que há um limite de comprimento, mas eu sou para um elogio que você usa um bom valor lá. Tudo bem, então isso resume a figuração do nosso Nós estamos falando pelo menos aqui. Eu sei que se eu perdi alguma coisa, você definitivamente virá mais tarde. Então vamos prosseguir com isso. Andi, você pode, você sabe, tirar algum tempo. Olhe para ele. , Andi, uma vez, a leitura posterior Bem, meio que nos guia para o que cada uma dessas configurações é. As opções são quais você poderia realmente viver sem. Você sabe por que eles são necessários? Não. Seguindo em frente. Vamos voltar para os nossos utilizadores. Controlador Ir para nossa função onde geramos essas cadeias de token em. Então minha primeira linha vai dizer,
Bem, Bem, eu acho que eu preciso incluir alguns conflitos, então eu preciso injetar dependência para o arquivo de configuração. Então, eu só vou ver o privado I con figuração fora do curso. Deve ser lido somente e, em seguida, incluir algo aqui. Certo, Certo, acho que incluí as conferências erradas. Deixe-me desfazer, e então deixe-me tentar de novo. Então não é a configuração superior de outono que queremos. Aquele aqui, a configuração da Extensão Microsoft. Lá vamos nós. Então eu vou apenas conectá-lo como uma dependência e inicializá-lo no DSO Não, nós temos acesso aos feeds Khan. Então, cerca de dois ou função dedo gerar a chave Jason. Então eu vou começar com uma variável chamada chave de segurança em então isso vai ser
igual a uma nova chave de segurança simétrica. Você vê, se eu penso depois do tipo de sapos em, então eu acho que eu tenho que incluir algo. Então, Elton
entra . Eu apenas incluo essa biblioteca em conformidade. Então novo é a nova chave de segurança simétrica em. Então isso realmente vai parecer exatamente como esta terra em starups. Então eu estou realmente apenas indo para copiar isso para eu não ter que digitar tudo sobre eles. Não seria só um pedaço. É aqui. Então essa é a nossa nova chave de segurança. , E,em seguida, fora do curso, isso não seria em vez da configuração da palavra dura. Eu tenho a dependência para configuração. Então isso seria conflito sublinhado. Tudo bem, então eu preciso incluir o desaparecido antes de codificar. Tudo bem, é
isso. Então a chave simétrica de segurança faz com que tenhamos nossas credenciais, e isso é igual a novas assinaturas, credenciais de
assinatura. Tudo bem, vamos, então, isto vai ter a chave de segurança que acabamos de criar. Então eu vou dizer que estamos usando uma segurança Calgary eles ou fora de todos os
algoritmos de segurança que eu estou usando cada simulação. 256 Tudo bem, então estamos vendo que estamos gerando a chave de segurança usando essa chave ligada. Então queremos as credenciais. Beba um pouco de silêncio, certo. Então estamos escondendo isso bem ali. A seguir, vou fazer o que chamamos de cremes. Então você teria visto uma mesa chamada Cleans. E a reivindicação é muito simples. A reivindicação está dizendo que qual é a sua informação? Quem você está dizendo ser? Explicou isso nas primeiras partes sobre o que o JWT tem em seus dados. Então podemos ter a oportunidade de realmente criar os cremes que queremos incluir
neste fluxo. Então eu vou criar uma lista que eu quero dizer Vier afirma é igual a uma nova lista fora do tipo, reivindicação de causa
limpa é ah, um tipo de dados construído natural. Tudo bem, Andi precisa incluir algum sistema que a segurança que reivindica que a biblioteca colocou um cínico e aí, vou dizer para me dar uma bomba nuclear. Tudo bem, então. Eu vou ver J w t registrado
O.C registrar nomes de reivindicação. Então a biblioteca Gentleman T nos dá as possíveis reivindicações que podemos fazer dentro de uma conversa. Certo, então quando pegarmos o registro, reivindicarmos nomes, posso dizer ponto e então você os verá parecendo meio obscuros,
mas alguns deles fazem sentido contra o nome dado à família. Estudos de gênero são todos os bits de informação que você pode incluir no token, modo que quando alguém recebe esse token depois que o usuário autenticou essa conversa e lhes diga todas essas informações. Então, na verdade, é uma maneira agradável, mais segura e silenciosa de fornecer informações de volta às reivindicações, certo? Então o primeiro quando eu quero é submarino Andi. Eu vou dizer que eu quero SoBe ter o valor fora do sermão do usuário, mas eu poderia postar um e-mail de usuário de identidade usuário ponto. Então, ele está indo toe detém o e-mail do usuário. Tudo bem, próximo. Mas isso é só uma nova reivindicação. Em vez de escrever muito o dedo do pé novamente, não vai duplicar essa linha. Então o próximo seria G a T. Tudo bem, então,
para este,
eu vou dar a eles. Tudo bem, então, para este, Ah, tipo de estático, mas bem gerado bons valores. Um novo bom. Então eu vou colocá-lo para string para apaziguar todos os tipos de dados necessários. S um nuclear deve ter o tipo no valor, direito no valor deve ser uma string. Então temos que nos dar bem. Então dê-lhe a história. Em seguida, vou ter uma mãe reclamando. Então este vai ser um novo time. E então a razão digitando isso para não duplicar que este vai ser um tipo de reivindicação. Certo, então esse é o tipo menos limpo. E isto vai chamar-se fogo de identidade. Então acho que preciso incluir algo aqui. Então eu saio e entro em Onda. Isso é tudo nós. São tipos reivindicados, não tipos de cremes, certo? Etiqueta de reivindicação ortográfica é importante, pessoal. Tudo bem, então eu fui ver um usuário. Certo,
então esse é o identificador do usuário. Certo, Então, depois disso, eu construí tudo fora da minha lista fora, limpa, então eu também vou obter as regras, então eu quero as regras que este usuário tem tão vírus. Então a coisa é que eu uso eu não posso múltiplas funções mesmo que nós temos alguns usuários e finalmente, será atribuir cada usuário dedo do pé apenas um rolar as realidades que cada, hum, sistema de autenticação baseado em
usuário Um Olá, Zito ou deve ser projetado para facilitar mais de uma regra. Então eu estou indo para obter todas as regras de qualquer maneira, então eu posso apenas dizer gerente de usuários não obter regras é afundar sobre. Então eu só obtenho as regras associadas ao seu usuário. Certo, então tenho algumas reivindicações. O que eu quero fazer é o fato de que o usuário é uma parte fora desta regra e qualquer coisa, para que possamos ajudar com a nossa autorização. Tudo bem, então eu vou fazer essa linha fora do tribunal, onde e quando dizer pontos de reivindicação. Preciso adicionar as regras na lista. Off limpa com esse tipo de edição, há depois do trabalho. Um pouco de magia, eu quero dizer adicionar alcance. Então eu vou ver as regras de ponto selecionar. Tudo bem. Então, a coisa legal sobre o link é que no flak e selecione a partir dele em, em
seguida, criar. E eu só vou dizer o nosso Lambda O quê? Estou criando um novo objeto genérico fora do tipo creme ou Bem, eu acho que não é genérico. Se está fora dessa reivindicação em, então eu vou dizer que estou criando uma nova reivindicação para cada regra que vai
sair desta. Andi, quero reivindicar pontos de identidade. Regra padrão. Certo, então tipo de reivindicação de regra padrão. Esse é o tipo de creme que eu quero. Então o valor, claro, é
claro,vai ser a nossa onda não. Bem, na verdade não sinto muito. Apenas estão passando o valor do nosso Tudo bem, então eu era na verdade uma rua. Tudo bem, então é na verdade uma lista de ST, então é quando chegarmos, senhor. Sim. Então, uh, isso teria sido obter objetos, mas nós estamos realmente apenas recebendo os nomes das regras aqui, então eu estou recebendo os nomes das regras, que é apenas uma lista fora das cordas em. Então eu só estou dizendo que para cada corda voltar, nós estamos criando isso limpo. Tudo bem, então cólon Semi. Não. Depois de fazer tudo fora que nós finalmente construir o nosso token um pouco para salvar a nossa conversa é igualdade. Nova lata de segurança JWT. Tudo bem, então. Estou ficando com figo. Estamos procurando o emissor, alguém para dizer J W t ligar para o emissor. Tudo bem, Onda. Então, se você olhar para os soberanos para esta função, vai precisar de alguns, hum, parâmetros. Então nós vamos estar preenchendo o reboque com este, o quarto parâmetro, que vai levar alguns valores. Então, a primeira coisa é o emissor. Então precisamos do público, que vamos reutilizar o emissor. Então precisamos incluir a reivindicação, então vamos preenchê-la enquanto formos. Então eu saí do emissor duas vezes. Então, Emissor, eu entendo a linha de freio. Emissor de coma ligado. Reparei no eleitor, não no Vier. Desculpe. Tudo bem, deixe-me quebrar a linha para que tudo fique claro e não confuso. Certo? Alcorão. Então emissor, emissor. E depois a lista das reivindicações. Tudo bem, então, para cada outro valor que eu tenho ido ter bem, a data se não antes, eu vou ter não. Então o próximo parâmetro será o Eu acho que é o tempo de expiração alguém para dizer expira. Onda Colon Andi,
vou definir a expiração do tempo asiático para este token ser, vejamos, duas horas. Então quero dizer, é tão claro que você quer ser prático com a expiração porque se ela expirar a cada duas horas, isso significa que este uso apenas para autenticar a cada duas horas. Algumas pessoas dizem isso a um dia. Tenho certeza que você percebe que alguns sites vão manter sua vez assinada para a eternidade e em algum lugar areia que você gostaria assim que ele fechou Ambrose e você realmente Broza e
tentou voltar para a areia de volta, certo? Então eu acho que talvez eles estejam usando gentilidade e algum tempo muito curto para que possamos dizer adicionar minutos e segundos. Hum, para fins de teste, eu só vou dizer adicionar minutos em uma madeira para dizer cinco, mas é que ele vai expirar cinco minutos depois de ter sido emitido, e eu estou fazendo isso desta maneira para que possamos testá-lo totalizado dentro do Uma vida fora de uma dessas lições, certo? Então, a próxima coisa que tenho é assinar credenciais, lembre-se que acabamos de criar credenciais. Então, vamos apenas passar o valor das credenciais ali como atribuir credenciais em então que conclui nossa conversa e geração antes de um continente. Veja aqui que eu tenho alguns Oh, eu acho que eu posso ter incluído uma biblioteca que eu não tinha que dizer. Se você vir linhas vermelhas como eu tenho aqui, então eu não preciso da Microsoft. Essa identidade é o Jason. Que fichas. Então é disso que eu não preciso, certo? Então, mais uma vez, se você está recebendo as linhas vermelhas como eu estou para o General C E JWT Desculpe, nomes de reivindicações
registrados. Ele pode remover isso usando o anúncio. São os pontos modelo,
Jason, Jason, com fichas, tudo bem em que deve corrigir esse erro em. Então, depois de construirmos nosso token, então podemos retornar um valor mais sensato no formulário off. Novo manipulador de token de segurança JWT em, em
seguida, pontos. E então você vê direito, Então pode continuar. Então passamos a conversa. Tudo bem, então isso só vai retornar o fluxo o token como uma string. Então, uma vez que tenhamos obtido esta string token, eu vou incluí-lo com a resposta. Lembre-se que estavam respondendo com o talvez todos os objetos do usuário, o que eu não vou fazer isso direito? Não. Em vez disso, o quê? Eu vou fazer é apenas devolver as fichas. Só vou ver um retorno. Andi, eu quero fazer isso. Na verdade, alguém capaz de criar um genérico, um, objetos ou token é igualdade. Assim como corda. Tudo bem. Então isso significa que uma vez que uma pessoa se autentique, a resposta será boa, e eles vão receber de volta token. Colon tomou e corda na forma de Jason. Então meus clientes devem consumir isso. Guarde isso. Em seguida, durante o tempo de vida fora do token, ele manterá as informações dos usuários. Então vamos apenas testar e ver como será um desses tokens. Tudo bem, então eu tenho carteiro com fora dos meus pedidos anteriores. Sabemos que isso saiu em caso vai limitar. Tente admin on, em
seguida, enviar e, em seguida, Voila. Então é assim que o nosso instrumento de fala se parece. Tudo bem, então este fluxo de token mais uma vez incorpora todas as coisas que tínhamos colocado. Fizemos algumas reclamações para o e-mail. O usuário i d bom valor genérico foram colocados em. Se eles são parte fora, nossa regra não é ou quais regras eles estão separados. Quem ele está processando? Quem é um, o usuário, todo tipo de coisas. O prazo de validade. Então, em cinco minutos, isso expiraria. Então eu coloquei em cinco minutos. Não vamos testar essa expressão porque você não vai ver, certo? Não. Mas o que vamos fazer no próximo vídeo é que vamos voltar, começar a sentar algumas autorizações, ver o existente em pontos, e ele vai ver como ele funciona.
34. Autorizações de configuração: vocês neste vídeo, nós vamos estar configurando autorizações em nossos diferentes endpoints em nosso
controlador de autores em. Estaremos validando ou conversando funcionalidade ao mesmo tempo. Então o que eu vou fazer é eu vou escolher alguns endpoints que devem ter autorização em, então talvez endurecer querer alguns com base nas regras sobre. Então eu perdi alguns para ser anônimo só para que possamos ver a diferença ou o impacto que ter a conversa de cerveja e a corda em nossos pedidos terá. Então o que eu vou fazer aqui, eu vou dizer que é para obter autores. Vou deixar isso em paz. Alguns o problema de suporte de squint t get. E eu também vou apenas muito anônimo. Tudo bem? Isso significa que qualquer um deve ser capaz de fazer um pedido para obter os autores, entanto, no
entanto,a fim de e eu acredito que este é um baixo anônimo. Além disso, estas lojas são anónimas. No entanto, a fim de criar, eu vou restringir Ah, eu estou indo dedo do pé são melhores. Sim. Deixe-me. Tudo bem. - Sim. Eu sinto muito. Só estou fazendo isso enquanto saio. Então, o que não quer fazer aqui é autorizar alguém a autorizar a criação em. Autor. Estou tentando ser o mais realista possível. Então eu vou dizer que tudo bem, alguém que autorize este aqui. E eu quero especificar as regras. Então eu não posso dizer autor como abrir e fechar chaves sobre as únicas regras que eu quero para que eu possa ver regras é igual para notar que vendo regras. Então você tem uma corda, mas você pode separar todas as regras que estão sozinhas, certo? Então, se você tem talvez, tipo, nós temos dois rolos de administradores personalizados e web. Então aqui estou dizendo que a única regra autorizada a atingir este ponto final é um administrador em então o que eu vou fazer. Então, isso é quatro criar. E então o que eu vou fazer é para a atualização. Vou autorizar os dois. Tudo bem. Então eu estou vendo ou Allchin em seguida para excluir sobre isso. Isso é meio contra a norma. Estou com o amarelo. Os únicos clientes a excluir autores são isso que é meio contra a norma, mas nos permite julgar e ver como funciona para nós. Tudo bem, então eu entrei no modo de depuração e eu tenho um carteiro e então nós vamos testar também esses endpoints. Então eu vou tentar com o recebe o primeiro get onde eu deveria ser capaz de obter todos os autores enviar o pedido. Andi,
eu tenho todos os autores, então eu realmente criei outro no passado, mas sim, então eu tenho todos os autores. Temos dois autores e da mesma forma que eu não especifiquei qualquer autorização em cima do get by i d. Nós obtemos o autor com o I D para Não, eu especifiquei. Isso é e eu vou voltar e ter certeza que criar, deixe-me encontrar criar Então criar requer um administrador. Então vamos ver o que acontece quando eu tentar criar. Então eu tenho um Bunton. Esse é o meu autor que estou tentando criar e você vê aqui eu estou recebendo um 401 autorizado porque eu acabei de dizer que alguém tem que ser autorizado a fim de passar isso é certo? Então eu só vou voltar para minha,
hum, hum, autenticação e em vez de autenticar com o usuário e fui tentar um cliente, então eu não vou ser admitido com o uso do cliente um envio. Depois recuperei o direito de falar. Então, a fim de usar esta conversa e depois tomar o valor eo valor é tudo o que está dentro das aspas, não as aspas. Então eu tenho, tanto quanto as configurações ir, este token é válido por cinco minutos eu vou voltar para o meu pedido. Os autores. Então eu vou incluir isso nos parâmetros para o meu pedido. Então eu vou para autorizações. Certo? Então você tem parte. Eu sinto muito. Não problemas, mas autorizações, mesmo que acrescentá-lo aqui acabe como primeiro-ministro. Adulto. Mas é mais fácil aqui, então eu vou para a autorização. Então eu escolho token portador em então o valor de Putin. Eles podem ver aqui que Adebayor falando lá de uma das minhas atividades anteriores e colocando neste novo token em então eu posso clicar em enviar Então, o que acontece que ele inclui este token no pedido em notado? Isto não é proibido ver quatro ou três. Então, estamos a favor de uma autora, o que significa que você não está autenticado. Você não pode interagir contra quatro ou três, o que realmente significa que, um ,
você sabe, eles são quase usados intercambiavelmente, mas quatro ou três significa que você pode ser autenticado, mas você não é Autorizado. Certo? Então essa é a diferença entre o quarto round para um. Então ele vê o símbolo do portador. Mas, em seguida, as informações limpas no token do portador não diziam que é um administrador, o que é correto porque nós apenas amamos como cliente. Então deixe-me tentar de novo com a admissão, e eu vou conseguir esse valor. Então o que eu vou fazer é escrever esta palestra em valor. Então, a primeira conversa que recebi do cliente, acabei de anotar porque lembre-se, era um período asiático de cinco minutos de expiração, certo? Então eu vou reutilizá-lo em um cliente legítimo, hum, operação. E depois vemos se funciona, tenho certeza que cinco minutos teriam o amor espalhado dessa vez. De qualquer forma, este é um administrador Tokens. Deixe-me falar com esse administrador. Certo, notei que não há informação aqui que diga se é um administrador falando com nosso cliente . É só uma lembrança agora. Quero incluir este com a solicitação em, em
seguida, clique em Enviar. A Andi deixa-nos ver o que acontece ao conseguir um limite de licitação. Volte e veja alguma coisa. Ah, é por isso que as questões de ortografia são deixadas em aberto. Eu tinha muitos straight ou assim deixe-me sair fora do modo de depuração atual que está derramando na
turnê ministério em Vamos tentar isso novamente. Certo, então estamos de volta no modo de depuração e deixe-me tentar de novo. Andi,
eu mando com o token ligado. Vamos recuar quatro ou três. Então eu acho que eu poderia ter que mudar alguma configuração com as reivindicações. Hum, então quando eles saem do barco atracado e, em seguida, apenas para ter certeza que a autorização funciona sem fazer é remover as regras parte em, voltar para depurar mais do que testar o mesmo token apenas com o autor s. Então Isso significa que não importa qual usuário como um token está presente com, hum, que não está expirado, ele deve funcionar. E então isso confirmará se é,
ah, ah, questão relacionada com
reivindicação. Então, se eu tentar de novo para criar este novo autor, lá vamos nós. Então funciona. Portanto, é algo com as reivindicações sobre as regras. Tudo bem, então se eu pegar toda a autorização, está lá. Diga não e tente chamar isso de novo. Então pegamos isso para um não autorizado. Mas no momento em que coloquei a ficha ao portador, é uma conversa válida. Vai funcionar. Então, vamos voltar. Saia de depo Mood na revisão O R. reivindicações seis em ou controlador de usuários. Tudo bem, então o que eu vou fazer aqui é definir pontos de tecido na minha terra 82 depois que eu obter as regras só para ter certeza de que as regras estão voltando corretamente. Então eu fui para ir para desmascarar mais de dois um log em tentativas com Postman para o administrador clique enviar em. Então eu disse os pontos de quebra e quando ele atinge os pontos de quebra, nós olhamos e não vemos Rose voltando. Então esse é o problema, certo? Então, há Norrell voltando pelo usuário administrativo, e acho que sei o porquê. Então, se você se lembra de quando estávamos criando o usuário no vídeo anterior no
administrador com erros ortográficos ou então o que aconteceu foi que ele não tentou criar o usuário novamente
e, como resultado, ele não associou o usuário com o regra, Então eu vou fazer isso manualmente. A Andi. Eu só vou para o banco de dados para que você possa entrar em seu SQL Server. Eu ainda tenho o meu de exemplos anteriores em Há uma tabela aqui que diz
regras de usuário SP Net , certo? Então, se eu for para qualquer top 200 ele me permitirá apenas inserir o usuário i d e a
função associada I d. Então, se eu entrar em regras e eu apenas destruir, clique no topo 200 novamente e então eu vejo essa regra de administrador como um I d. Certo. Então, copie o que eu fiz. Então eu vou colocá-lo como uma regra, i d. E então eu quero a função de usuário para os usuários. Então eu penso em usuários abertos. Em algum lugar lá está o usuário administrador. Eu decido esta cópia que o valor em colocá-lo como o usuário que eu d pressionar a bordo, próprio sobre ele vai comprometido com o banco de dados. Então, não, eu tenho ID de associado meu usuário administrador com as regras. Então é isso que eu estava vendo que você sabe, eu poderia ter a idéia de usuário em outro papel. Ideias que o administrador poderia estar arrependido. Este usuário administrador poderia ser tanto administrador quanto cliente se eu quisesse que ele fosse projetado dessa forma. Qualquer buraco, não, isso é Nós sabemos que nenhuma regra está voltando e isso é uma parte de um problema. Não foi incluído na reivindicação, então vamos tentar de novo. Então eu vou usar o carteiro, fazer outro log em tentativas de obter um novo token. E então eu olhei para trás nas regras e vimos Não, que nosso papel está voltando. Tudo bem, então você provavelmente não tinha isso, er que eu estava tendo porque você soletrou corretamente desde o começo. Então, isso é bom. Cidras empurradas e valida que está funcionando. Então agora estamos voltando. A reivindicação sobre este token parece muito maior. Esta corda parece muito maior do que parecia antes. Então a reivindicação, o falador desculpe, seus papéis não estavam sendo incluídos na cadeia de conversação. Então deixe-me voltar à minha criação em Put in My New Bear, uma corda que é maior. Então eu sempre saberei que em algum lugar a informação está nela. Vou mudar a informação do autor. Deixe-me tentar Hilton Burton. Tudo bem, vamos, então. Deixe-me enviar um pouco de armas. Lá vamos nós. Então vemos que a regra realmente desempenhou um papel importante em saber se este usuário é ou não autor como segurança. Toda a ação, certo? Então, quando a função não estava no token, a reivindicação não pôde verificar. Certo? Então, não, podemos ver que está funcionando. Bem, anos provavelmente já estavam funcionando, então eu só estou alcançando. Se o seu estava funcionando antes da mente, então você está sob atração. Parabéns. Então, não, podemos ir em frente e testar com os outros endpoints e outros tokens. Então esse foi o “Oh, o quê “? Eu realmente não terminei. Então, deixa-me. Acabei de perceber que não o validei. Então deixe-me colocar de volta a parte que diz que as regras são iguais ao administrador matrizes Bill administrador corretamente em. Deixe-me tentar de novo. Então Noah Puente valida que está funcionando. Agora, outro autor. Este vai ser o meu combustível. Uh, Johnson. Tudo bem, vamos. Então eu clico. Mande a Andi. Está a funcionar. Tudo bem. Então, não. Nossa reivindicação de estar em administradores incluídos no token do portador. Então, quando ele atinge o autorizado autorizado apenas o administrador para passar. Então não, vou tentar um. Então vemos que o pior do administrador. Então eu tenho certeza que vai trabalhar com a atualização da mesma maneira que eu vou tentar um com o administrador. Trânsito. Realize essa exclusão quando apenas os clientes forem usuários na função de cliente. Arlo para fazer isso. Então deixe-me validar isso também. Então deixe-me encontrar a roupa. Eu vou modificar e dizer,
Tudo bem, Tudo bem, eu só modifico o dedo do autor, tenho essa informação certamente. Basta modificar este pedido um pouco. Em seguida, colocar no meu autor Azi mostrou Bira conversando com os administradores. Token on, em
seguida, enviá-lo sobre ele me rejeitou dizendo que eu sou proibido. Então deixe-me fazer login como cliente desta vez e apenas recuperar um token de cliente. Tudo bem, então. Deixe-me colocar essa corda. Eu acredito que estávamos em deletes, não é? Acho que não somos uma palavra para liderar, certo? Eu acho que eu fui modificado para colocar, mas na verdade deveria ser deletando. Então deixe-me tentar deletar. Como os clientes são autorizados com o meu Barrett tomou e colocou no token do cliente na exclusão também com o eu d para Tudo bem, Isso é quando eu teria sido qualquer coisa, mas você pode testá-lo se quiser, mas eu tenho certeza que ele está indo para trabalhar com qualquer Use um token, mas são assim deixe-me apenas sob este primeiro, deixe-me tentar novamente com os tokens de administrador. Então esta é a cadeia de caracteres de token de administrador. Deixe-me enviar. Estou proibido para que o administrador não possa excluir. Deixe-me tentar novamente com o token do cliente Onda Nós vemos dois ou quatro nenhum conteúdo porque a exclusão foi bem sucedida então e eu não recebo novamente, eles recebem seu público permitindo anônimo nenhum autor com idee 23456 e sete No entanto estão lá em. Então é assim que você usa JWT talkin agitação, Você sabe, ver se guarda seus pontos em ter certeza de que quem está interagindo com eles tem a autoridade para fazê-lo
35. Analisar e adicionar mudanças no GitHub: Ei, pessoal, bem-vindos de volta a este vídeo, vamos apenas rever o que fizemos nesta seção e verificar ou mudar para nos levantarmos. Então, o que fizemos foi implementar nossa autenticação de tokens Jason Webb, e fizemos usando uma identidade fora do núcleo de combinação e algumas bibliotecas integradas do núcleo de ponto net para autenticação JWT. Então fizemos algumas alterações em alguns arquivos. Criamos um novo controlador chamado Users Controller com uma ação de log in. Adicionado um pouco de madeira, um, dedo do pé você sabe, adoro as ações. O que está acontecendo? Onde quer que fora do curso, cada real, cada ação deve atender a um certo padrão em. Então nos certificamos de que estava bem documentado. Onda logging estava no lugar e manipulação de ar. Também criamos disfunção para gerar o token da Web, que puxou informações de alguns lugares,
ou seja, ou seja, nosso arquivo de conflito, que hospeda AKI Onda. Geramos algumas reivindicações e adicionamos as regras. Então as reivindicações certas e discutiremos que, você sabe, as
reivindicações são basicamente pedaços de informação que descrevem quem você é e o que você tem permissão para fazer. Então, toda essa informação foi incluída em um, eu vou dizer simples string, mas um longo silêncio fora de uma string que continha todas essas informações. Eu também percebi que, adicionando as notações autorizadas a certas ações, poderíamos controlar quem poderia interagir com o endpoint. Então permitimos anónimos em alguns. Mas, em seguida, tendemos a aderência onde dissemos que apenas o administrador pode criar em. Então dissemos que apenas o cliente poderia atualizar. Somente o cliente pode excluir. Então, em sua visão clara, eu estou realmente indo dedão remover todos esses. Na verdade, eu estou indo, eu estou indo. Autorize apenas o administrador. Então o administrador vai ser a única pessoa que pode excluir. Eu estou indo para um administradores solitários toe atualizar alguém para remover o cliente de seu em ir muito sobre os administradores para criar. Mas então eu vou seguir todos apenas clientes autenticados para ser capaz de ver alguém para colocar
a mesma função de autorização, mas bem,
clientes, clientes, onda e administradores, para que tanto clientes quanto administradores pode obter os valores alguém para colocar isso no get com um valor no genérico geral get assim apenas pessoa autenticada deve ser capaz de interagir com qualquer coisa dentro do, hum, enter controller assim, adicionando apenas uma autorização global me é que mesmo se eu não sei , o ponto final e eu negligenciar colocar as regras. Tudo bem. Então, na verdade, uma vez que eu só tenho dois mundos, isso realmente não é necessário ratificar crianças de três anos e seria necessário se eu
quisesse evitar que uma determinada regra o fizesse. Então, só vendo autorizado em todo o controle, eu não tenho que ver autorizado aqui em Eu realmente não tenho que dizer autor está aqui novamente, certo? Porque então quem vai estar interagindo com qualquer coisa em vez do controlador mais ser autenticado em. Em seguida, torna-se mais rigoroso onde dizemos apenas autor, como os administradores podem fazer certas coisas depois. Então, é assim que você pode ir sobre a adição de segurança
, para seus endpoints. Tudo bem, então eu fiz isso para autores, e eu vou apenas fazer isso para livros, a cerveja antes de eu fazer check-in,
alguns autorizariam todos os direitos de controle e, em seguida, incluir o que eu preciso incluir . Então eu estou dispensando uma cópia da linha onde autorizado apenas para administradores para que eu não precise digitar tudo novamente no autor de alguém como apenas um administrador para criar um novo livro. Apenas um administrador pode. Pode me dar um livro sobre Dolan? O administrador pode excluir um livro. Tudo bem. Mas então, no que diz
respeito ao controle, apenas pessoas autorizadas podem acessar qualquer coisa dentro do controle. Antes de tudo isso ser possível, no entanto, fizemos a atividade de andaimes onde executamos nosso comando, que era o banco de dados de atualização, que descartou no entanto,
fizemos a atividade de andaimes onde executamos nosso comando,
que era o banco de dados de atualização,
que descartou
novas tabelas em nosso banco de dados existente em eu vou apenas trazer o sistema de gerenciamento de banco para mostrar que temos regras nossas regras de usuário. Então estes parar seis ou sete tabelas foram todas geradas por registro em 1/4 mecanismo de identidades em Eles são todos desenvolvidos para nos ajudar a autenticar em gerenciar ou usuários e regras. . Nós também adicionamos, ah algumas linhas para o nosso início onde dissemos ao nosso início que vamos estar usando tokens de
cerveja JWT em Este é o tipo de informação que queremos incluídos são validador. Sabe, essas são apenas algumas opções. Está tudo desligado. Este tribunal será. Preciso ficar bem. Não. Na mulher explosão e nenhum leasing musa também foram adicionados uma classe de dados C onde criamos alguns usuários de
amostra a partir do get cool. Então ortografia é importante porque eu tive problemas porque eu soletrar administrador errado em um ponto. Então este passo não foi executado como deveria ter sido. Então eu vou fazer o check-in. Não em. Vou apenas clicar com o botão direito em cometas. Nós escrevemos nossa mensagem, o
que torna, você sabe, claro
possível para quem vai estar olhando para o nosso código. Então eu só cometi tudo na pia. Então, uma vez que isso é feito, você sempre pode ir para casa e validar que você estava dolorido. Escola não é isca e como sempre, Eu iria incluir o código-fonte para esta seção no recurso está abaixo.
36. Crie e entenda a estrutura de projetos de Blazor: Ei, pessoal, nesta nova seção, vamos começar a construir todos vocês brancos,
nossa empresa sobre o FBI em nossa tecnologia. Off choice é a tecnologia baseada em montagem da Web da Microsoft chamada Blazer. Nenhum Blazer é bastante novo, e é construído em cima do núcleo de ponto net. A Andi. Resumos de princípios estão lá, mas é uma grande tecnologia nova que permite que você tipo fora, não precisa ir para reagir ou angular, a fim de obter que leve. JavaScript baseado U Y nele ainda é muito dot net, Então nós ainda chegar ao tribunal C afiado enquanto desfruta dos benefícios de ter uma
interface de usuário muito reativa para ir sobre o fogo para começar este projeto. O que nós vamos fazer é no nosso projeto existente, nós estamos apenas indo para o pé. Hum, bem, eu só vou recolher o projeto da livraria ap I e criar um novo projeto dentro
da solução para que você possa ter vários projetos em uma solução, e eu apenas clique com o botão direito na solução. Clique em Adicionar e clique em Novo projeto em, em seguida, na lista fora de modelos de projeto. Você deveria ver o blazer. Se você não vir blazer, realmente, você pode apenas digitar e procurar por blazer. E se, depois de tudo o que você ainda não vê, então você também pode ir em frente e instalar mais ferramentas e recursos. Ou talvez você precise não carregar os binários, que são na verdade bolsos com o dot net core 3.1 sdk. Então eu temo até aqui dentro do produto. Eu realmente não sei que você não vai vê-lo, então eu vou continuar. Se você não vir três crianças, eu e nós podemos trabalhar nisso juntos. Alguém para selecionar blazer como meus modelos de projetos e, em seguida, eu vou dar-lhe um nome. Vou chamar-lhe Livraria Dashi Y Não, apenas o ponto disso. Às vezes, quando as pessoas estão fazendo projetos que
eles conhecem bem, eles estão fazendo, eles vão estar construindo um aplicativo que eles sabem que teremos vários projetos. Às vezes, o que eles fazem é criar a solução, dar-lhe um nome genérico em seguida, os projetos são mais específicos. Então aqui você pode ver, eu meio que trouxe esse princípio onde eu criei o projeto inicial com um nome. E assim a solução no primeiro projeto recebeu esse nome. Mas então eu estou introduzindo outro projeto no reboque, uma solução chamada livraria Dash FBI Então ele pode Quando? Eu porque eu realmente gosto que eu posso ver onde meramente para confusões. Eu só passei por isso. Só sei. Então você pode apreciar isso. É por isso que a solução em um dos produtos do mesmo nome. Mas obviamente poderia ter sido refinado um pouco mais. Certo, então continue. Eu tenho um novo traço livraria projeto, você I e, em seguida, eu ir em frente e clique cria. Eu sei que eles vão me perguntar qual versão ou quais recursos. Desculpe, eu quero incluir Então eu não quero qualquer criação de autenticação. Vou deixar tudo o resto e vou em frente e clicar. Criar todos os direitos são novos. O projeto está aqui. Você pode ver o verde mais porque, bem, ele é novo, então ainda não está no gueto,
então, quando você apenas olhar para isso para a estrutura, eu tenho certeza que você vai ter outro dedo por um momento. A Andi. Sim, você está certo. Parece que nosso projeto de páginas navalha que começamos com que lentamente
transformamos em um projeto de par em. Não obstante ele tem alguns arquivos comuns que são telefonados em cada
modelo de projeto dot net core que temos estado olhando para até. Não. Tudo bem, então você tem seu padrão inicial, isso é sim. E isso é dar uma olhada em que onde as funções de início são praticamente da mesma maneira de ou iniciar web. Ou teremos ou construtor que temos ou configuração de uma Web ou configurar serviços? Tudo bem, configure os serviços. E nós configuramos tudo bem em. Então você pode ver saber que diferentes produtos intermediários foram adicionados. Então, nesta situação temos serviços que artérias de páginas e em um blazer lado servidor direito, então não. Aqui. Você vê que você tem, Ah, algumas opções diferentes. O que? O ponto é que dotnet core fornece uma base em, em seguida, com base no que você quer, antigo muitas vezes aplicação, você pode ir em frente e adicionar os serviços necessários em obtê-los bootstrapped no início do aplicativo. Então não registros como uma tela em branco. E com base no que você coloca em sua inicialização que diz que você está formando uma identidade fora
do seu aplicativo e seu comportamento geral e capacidades para que você possa tomar algum tempo e olhar para os diferentes e provavelmente compará-lo com o início desse CS de nossa p. I projeta apenas para ver os diferentes, pelo menos, não os que construímos, mas as diferentes funções que estão sendo inicializadas. Então aqui,
dentro, os endpoints de uso têm controladores de mob ligados. Acredito que foi uma mudança que fizemos. Então aqui é realmente blazer esfregão, esperança no poço do pai esfregão. Então você vê, são como diferenças, mas então tudo o resto que está acontecendo é o mesmo problema tps três direções. Nós removemos estática mais rápido, mais um p I. Mas roteamento está lá. E se você olhar, você vê o uso girando no https três direções que colocamos em nós estamos usando estes porque nós temos em nossa autenticação e autorização mais uma vez o mesmo núcleo dot net apenas comportamentos diferentes com base no que você inicializa. Sem seguir em frente, ainda temos o programa que CS que faz praticamente a mesma coisa que ainda temos nossa perturbação é que Jason que fora da caixa parece praticamente a mesma maneira que compartilhamos em estilo de defesa. Pode os arquivos que você notar que eles têm extensões diferentes. Então, se você é usado para NBC, então você tem CS que dot CS html em def. Você tem navalha do que você vai ver ancorado sensacional com um tribunal atrás de arquivo em nenhum lugar . Olhando para o blazer na extensão não é Reser. Então isso pode parecer oh para você porque, você sabe, você tem páginas de navalha. Você pensaria que Tereza Peaches teria essa extensão, mas eles não têm. Então páginas blazer leram baterias como a extensão. Vou apenas tirar algum tempo e passar por cada arquivo só para mostrar quais
são os fatos , portanto, fora da caixa. Então, não tenha razão. Isso tem algumas configurações básicas nos dizendo, você sabe,
o, o, hum, como uma votação bruta por erros lá. Tudo bem, você não tem que mudar nada sobre isso a menos que você realmente queira mudar alguma coisa. Você pode ir para importações, e isso não tem, como uma árvore Duric global para todas as bibliotecas que serão usadas em seus diferentes e isso não tem,
como uma árvore Duric global para todas as bibliotecas que serão usadas em seus diferentespontos de
vista. Então, como vamos junto e começamos a colocar em novos espaços de nome e novas bibliotecas e funções e classes quando você sabe que faria a instrução usando em cada arquivo judicial em um arquivo CS ponto . Se nós apenas colocá-lo dentro da navalha de início de importação, ele será tornado globalmente acessível para todos os outros, um Riza ph no projeto. Então é por isso que as importações lutam. Se eu entrar em compartilhado, você vê que você tem as cargas principais que você tem o menu de navegação em. Você pode ver que a sua edição básica de arquivos com dicas off c afiado. Então você sempre vê C acorde afiado com um sinal no. Certo? Então aqui você vê o fio de sinal ligado. Então isso é literalmente apenas ver placa afiada. Tudo isso é o mesmo c afiado que temos escrito para saber. E isso é o que faz por favor são tão grandes que você não tem que misturar e muito com muito javascript. Não, não que JavaScript seja ruim. Mas pelo menos quando eles gravam em um estoque, é mais fácil identificar onde as coisas podem dar errado. Porque todo o tribunal parece muito parecido em todos os lados. Certo. Então este é o nosso menu suficiente em Bem, você pode ver aqui nós temos três, hum, links
fora da caixa agora. Vou passar muito tempo lá. Nós também temos páginas, então as páginas seriam onde nossas páginas personalizadas irão. Então, como sempre, tem o discurso do índice, que é apenas dizer olá mundo em outra coisa. Você também notará que, além de nossos blocos HTML regulares, você vê algumas tags personalizadas que são, hum, basicamente fala para nos dar componentes navalha no projeto. Certo? Você vai ver em buscar dados, você vai dizer um pouco mais de C afiado acontecendo. Então primeiro definiu a página em, então você dá o endereço. Estou dizendo que esta é uma página sobre os endereços barra buscar dados. Já que eu quero chegar lá, é
nisso que eu deveria digitar. Em seguida, você verá uma instrução usando aqui. Então, como eu disse, você pode incluir a declaração de uso na própria página, ou você poderia colocá-lo em importações e seria globalmente acessível. Hum, e então você vê, injete aqui. Então nós temos feito um pouco fora de injeção de dependência para saber que esta é a
injeção de dependência na visão Blazer. Então, quando projetamos repositórios automáticos e nossos serviços personalizados, só
precisamos dizer injetar, chamar o serviço pelo seu nome. E então podemos começar a usá-lo da mesma forma que estamos para inicializá-lo em nossos
controladores e, em seguida, começar a usá-lo. Tudo bem, sobre o assunto. Milicianos. Não, você vê na placa, vamos lá, seus depoimentos. Onde ele vê se este suportável é não. Então mostre esse texto. Caso contrário, gerar a tabela no estábulo está indo toe tem funções sendo geradas para cada item dentro desta lista. Certo? Portanto, as previsões aparecem uma lista de previsões existe porque no cabo, ele foi declarado em, em seguida, inicializado um coletor. Então eles têm uma função inicializada embutida onde eles dizem, quando as páginas inicializadas. Eu queria continuar, ir preencher previsões com alguma coisa. Então nós somos serviço de previsão que obter previsão de uma pia. Sinto falta de tirar apartamentos fora da hora da data? Não. Muito bem, quando começarmos a construí-lo, isto é o que vai parecer quando quisermos comprar coisas. Nós vamos ter nosso serviço injetado, e nós vamos dizer serviço nosso ponto de relatório qualquer que seja a função em que ele está, então ele vai recuperá-lo, colocá-lo na lista, e então nós carregamos de acordo. Certo? Então, estas são as páginas de exemplo. Assim que executar o aplicativo. Asseguro-lhe quais são as amostras. Um barco. Eu só queria ter ah, olhar e sentir fora dos diferentes elementos de acordes nos dados. Então, obtemos uma pasta chamada Dados e Dados, como sabemos representa. Sabe, os dados que passarão pelos nossos modelos nas tabelas de dados reais. Certo. Então, esses dados
, são usados vagamente. Podemos mudá-lo para modelos Onda como vamos junto com multa em nome apropriado ou as coisas
apropriadas para armazenar sob dados, considerando que este é um blazer up que está lendo de um FBI. Então isso significa que este blazer não vai interagir diretamente com o nosso banco de dados é a única coisa que você vai saber sobre uma fonte de dados é o fato de que nós contamos ou vamos estar contando . Obtenha suas informações do A P I ou por favor informações coletadas no formulário nas mãos do AP e deixe o FBI fazer o pulso. Certo? Então é por isso que estamos construindo essa solução dissociada onde o AP lida com tudo fora da corretagem com o banco de dados ligado, então qualquer outro aplicativo cliente não precisa armazenar sua própria data. Posso usar o FBI para realizar qualquer operação, para que este lugar possa ter sido um ângulo para cima, eu reagir de você, Jase up ou até mesmo um mobile up. Isso realmente não importa. Podes sentar-te por cima e falar com o FBI. Então, seguindo em frente, vou dar uma olhada rápida dentro da água. Então nós temos previsões meteorológicas e você vê, aqui temos as datas, a temperatura C temperatura f no verão em, def. Você volta no arquivo de busca de dados, você verá que isso é o que estava sendo impresso. Foram previstos que datam as temperaturas da cadeia C e F no resumo. Certo? Então isso significa que este é o modelo fora dos dados que estão sendo representados dentro deste direito, em
seguida, o serviço é praticamente o que estamos construindo em nosso repositório onde ele está chamando. Então isso é apenas uma coceira inicializada ou ficando preenchendo uma lista fora de resumos em, então isso não vai dizer gerar uma lista aleatória fora das previsões. Isso é sempre assim. Dê-me uma lista aleatória. Off tipo previsões meteorológicas, que é a classe de dados que ele acabou de olhar em preencher as propriedades com alguns valores aleatórios em . Então é isso que está sendo devolvido. Então, basicamente, isso está sendo devolvido no reboque. Esta chamada nossa esta variável em então. Então ele dizendo inicialmente claramente não terá quaisquer dados, mas uma vez que ele tem dados, por favor preenche a tabela em. há realmente nada mais neste projeto que eu precise olhar. W W W Route foi extasiado. Fogo tão bootstrap e icônico, hum, fundos no número um certo para executar este aplicativo para que possamos ver. Então agora está dizendo Boots, livraria, traço a p a. Isso é projeto armênio. Certo? Então, se eu quiser mudar o projeto médio, eu sempre posso clicar com o botão direito do mouse no projeto que eu quero. Digamos, definir, iniciar o projeto ou sentar-se como início do projeto. Ou eu posso usar este menu suspenso aparecer e apenas mudá-lo para o que eu pretendo ser. É o que uma vez que é o início do projeto, ele sempre estará em parafuso on. Então eu vou executar este aplicativo para que possamos visualizá-lo. Certo, então este é o nosso barco fora da caixa, por favor. Pedido aéreo contra ele nos dá. Ah, bom olhar você. Saí da caixa, Onda. Temos três páginas, por isso temos casa temos contador em foram buscados líderes. Vou começar com dados franceses porque não olhei para o balcão. Então eu vou fazer, buscar data, e então vamos analisar contra juntos. Então, quando eu buscar dados, você vê, ele apenas carrega para cima. Então eu esperava que você demorasse um pouco mais. Digamos, iria começar a ver o carregamento que foi para ver se eu posso atualizar todo o projeto. Então lembre-se que este é ah, uma única aplicação de ph. Então, quer bater? Re fresco é literalmente ir dedo do pé. Atualize o aplicativo inteiro. Não necessariamente apenas o pêssego. Tudo bem, então quando eu clicar, vá buscar mais tarde. Ok. Bem, está carregando muito rápido para você realmente ver a renda do Senhor aumentando. É muito fixe. Então, enquanto ele está recebendo os dados, você pode exibir algo, e ele será automaticamente com muito pouco esforço. Você viu que tudo o que precisava era de um depoimento. Qualquer buraco, vamos ao balcão. Então contador tem um botão que diz Quick Me em quando eu clicar, ele só vai incrementar em quantas vezes eu clicar. Ele vai apenas manter em incremental. Então vamos olhar para a base central para isso. Então, a base do tribunal para este arquivo é simplesmente elegante. Em primeiro lugar, começamos com a página e a cultura de barra de endereço. É aí que você começa a partir da URL base, certo? Então, cada página citação unaspas, é realmente um componente que então eles chamaram eles. É um componente, e esse componente pode ter um endereço ou pode ser um componente parcial. Sabe o que está acontecendo é que você vê uma variável aqui chamada cones atuais, certo? Então, mais uma vez, quer ver o exterior? Você sabe que o c afiado dentro do HTML está na visão da navalha, certo? Ou aumentar a sintaxe deles. Seja como quiser, é então que temos o nosso botão, que é botão
clássico com algumas umbotão
clássico com algumasaulas de compras de
botas. Então você percebe que eles têm um sinal no antes no clique. Então todos nós sabemos que JavaScript nos dá esses eventos pick são esses eventos que podem ir em diferentes elementos. Tudo o que fiz foi tirar daquele lado. E isso parece como seria se fosse JavaScript. Escreve Owen. Clique em. Então você só vê parênteses abertas e fechadas. Desculpe, então. Só saberia isso. Ok, ele deve procurar por alguma função JavaScript chamada incremento. Conte com. Então ele chamaria o JavaScript aqui, embora em Blazer, nós não precisamos javascript Realizar isso. Podemos colocar o lado de fora para dizer, OK, isso vai ser um c afiado. E se você passar o mouse sobre ele, você vai notar que é um evento chamado caixas, um tipo de evento especializado fora que estamos especificando aqui e então Você sabe, o que é isso? Isto não é destacado. Então, ele vai dizer incrementos de conteúdo. Então está esperando que a seção do tribunal vai ter alguma função chamada
contagem de incrementos . Oh, meus padrões. Nós já teríamos inicializado são variáveis. A Corrine. Conte com, então. Você vê aqui que ele tem o revestimento de incremento de função? Não, só pense nisso. Cada vez que você clica nisso tudo o que está fazendo é fazer uma contagem atual mais, mas o que você não está vendo seu núcleo que diz, OK ,
não, que esse valor mudou. Volte para a atualização. O valor aqui, desde que o valor mude em qualquer lugar que ele mude dentro do tribunal com base em qualquer lugar que esteja sendo representado. Isso também mudará. E é isso que faz com que as jogadas sejam tão fáceis de usar e tão fáceis de criar. Um muito responsivo eu não sou responsivo em termos de re dimensionamento, mas responsivo em termos fora da experiência
do usuário completamente, Usuário interfere na aplicação. Então isso é um rápido sob a turnê fora de seu blazer rápido e sujo arrancado fora. O que eu vou fazer saber é modificar nossas muitas opções porque lembre-se que nós vamos estar lidando com livros e autores, e nós também vamos precisar de algumas capacidades. Entrar no dedo do pé. Eu sou a registradora. Alguns querem ir para o nosso menu suficiente sobre eu vou mudar ou resolver esses links. Então este diz, em casa eu deixo de casa sozinho, troquei de balcão para ver autores em nossas lágrimas buscar relacionados a salvar livros. Então, claro, se eu mudar isso, eu também vou precisar mudar a viagem. Então não há as garçonetes apenas contra-atacar. Diz apenas pés buscar dados, então eu só digo a verdade para ver os autores e fora deste para ver os livros. Então isso significa que preciso de componentes, um para autores, um para livros. Mas então eu disse que nós vamos ter alguns registros e recursos de carga. Então o que eu vou fazer é apenas criar mais dois itens de menu no Este vai se
desculpar . Está bem, deixa-me levar o sal. Hum, eu vou explicar o que essa coisa de romance significa que eu vou aceitar como não. Então estamos em casa, digamos que tenho muito tempo em Andi. Também tenho uma caixa registradora, está
bem? E então eu provavelmente iria querer mudar. Aplique esses ícones ao redor, saiba que eles têm os ícones padrão. Esta é uma lista rica, desonesta. Além disso, este é o lar. Não estou tão familiarizado com esta biblioteca. Quatro ícones, mas vou dar um salto de fé aqui. E o que eu fiz foi removido o que veio depois do tracejado. Então eu traço, eu removi, tipo, digamos, a vantagem no espaço de controle de notícias. E então porque os arquivos de script, estúdio visual
deles está me dando a lista de todos os ícones em potencial que eu tenho. Então vamos dizer que eu quero usar por muito tempo em, uh, eu não quero usar o tempo apenas olhando para o ícone. Então eu encontrar alguns bons ícones em. Não faça sugestões fora do curso. Sua ideia pode ser diferente da minha, então vou usar um golpe para fazer login. Deixe-me ver se eles têm um livro. Eles têm um livro para registro. Tudo bem, isso funciona para mim, certo? E então tudo o que eu deixo na lista. Ridge, vamos dar uma olhada nisso rapidamente. Tudo bem? Então, quando esta nova página senhores, você vê, ele aparece. Então eu acho que esses muitos itens estão olhando ou os interesses de registro há ambos os destaques apenas como em casa, porque o link home é suposto ter esse destaque. E, neste momento, estão a apontar para qualquer coisa. Então todos eles se parecem com a casa. Considerando que dei estes endereços. Então é por isso que você vê esses planetas tão mais tarde que parecerão diferentes. Hum, quando eu clicar em um desses que eu criei o você vê Desculpe, Não
há nada no endereço tira porque ele está apontando para algum recurso que eu ainda
não criei . Então faremos isso mais tarde. Mas, por enquanto, é tudo para as nossas apresentações. Um blazer. Quando voltarmos, vamos começar a configurar nosso repositório baseado em clientes para que possamos começar a nos comunicar com nosso FBI.
37. Configurar os Repositories de cliente e serviço HTTP: Bem-vindos de volta, pessoal. Neste vídeo, vamos começar a fazer algumas configurações de linha de base no nome do projeto Blazer. Eles estariam configurando o repositório baseado alguns pontos de extremidade estáticos em apenas fazer algumas configurações gerais do projeto para que não precisássemos revisitar essas coisas. Oh, eu já fui em frente e criei algumas pastas. Tenho uma pasta de contratos. Eu também tenho uma pasta de serviço e nossas pastas estáticas. Então vamos começar a colocar alguns arquivos neles. Vou começar com a pasta de contratos para que a pasta de contratos vai ter no arquivo de interface. Então, o clique em greve adicionar em Anderson para criar uma classe. Mas então vai ser uma interface, e o nome vai ser repositório baseado em I. Eu clico em Adicionar em seguida, como de costume, que é de ser uma classe para uma interface, você provavelmente está se perguntando, OK, mas nós não acabamos de fazer com isso com o AP? Por que vou fazer isso de novo? Então o que vamos fazer é definir alguma funcionalidade padrão para blazer ou você
está pronto para interagir com o A P I? Portanto, já sabemos que há certas coisas que criamos em 10 pontos para fazer sobre essas seriam as operações atuais que criamos. Nós atualizações que excluímos em que lemos, certo, Então temos todos em pontos para fazer essas coisas. Então, basicamente, eu estou apenas configurando algumas funções básicas que irão atuar como proxies para falar com os Ps. Então nós não temos direito esses pedidos todas as vezes, certo? Então, eu vou dedão, tenho uma tarefa que vai dizer para acertar. Então eu tenho uma tarefa fora do tipo T então nós já discutimos. Então eu vou fazer o mesmo tipo de genérico. Aqui
Buster,
onde vou dizer que foi ver chamada na aula. Aqui
Buster, Tudo bem, então vamos ver todo o trabalho Sultan em uma parte posterior. Mas a primeira função é a tarefa t. Estamos subindo. Então eu vou passar na URL, como nos pontos finais que eu pretendo obter dados no I d. Então este é para o único, um objeto ou uma única recuperação de registro. A próxima, temos outra. Suba, então isso. Obter também é uma tarefa, mas esta está retornando. I listar fora tipo chá direito no mesmo nome fica Mas, em seguida, este é apenas uma sobrecarga onde ele está tomando um parâmetro string que é apenas o URL Próximo acima temos o r cria. Então, desta vez, este vai ser o Ah Bullion. Então ter Task Bull e criar em Estamos passando a URL em nosso objeto em, em seguida, basicamente excluir na atualização para olhar da mesma maneira com uma exceção para atualização onde opiáceos vai ter em terceiro lugar. Você tem certas licenças ou desculpe pela
identificação. identificação Bem, na verdade, nem
precisamos disso, para ser honesto. Então eu quero que você apenas vá pegar isso porque eu realmente não preciso daquele terceiro
parâmetro, hum, hum,então crie atualização e exclua. Olhe virtualmente do mesmo jeito, certo? Oh, mas exclui Toma a idéia em vez do objeto tentou criar e fora da passagem do objeto. Mas a pista é só aceitar a ideia. Não. Depois de implementar o repositório, vou implementar o serviço. Vou ligar para este. Bem, eu chamei um serviço completo, mas onde vai usar o mesmo nome, e eu vou chamá-lo de repositório base. Tudo bem, então. Estes serão os custos directos das nossas ideias. Repositório. Então, esta, a definição vai olhar um pouco diferente porque então eu vou para o repositório CVS
fora do Time t desta vez, Colon. Eu pedaço. Então, não, eu estou herdando do fim. Então
, a coisa é ,
sei que estamos fazendo isso, um, um, repositório obits dinâmicos onde eu não difícil recriar a função no deck e os pontos
no nesta funcionalidade base será feita novamente. Uma espécie de classe que passando. Então nós não fizemos essa etapa extra em nosso repositório anterior, então nós fizemos dessa maneira, e então eu estou apenas mostrando ou obstrução genérica que pode estar fazendo para que eu possa ver onde t cheio na classe. Tudo bem, então. Eu tenho dedo como de costume implementa o repositório ou o interfere. Desculpe. Então, não, pegamos nossa pista criativa, pegamos opiáceos do brilho. Não, para abrir isto, preciso de o ter feito. Minhas partes privadas só lêem propriedade e vai ser fora do tipo I H T p fábrica cliente. Muito bem, então este vai ser o nosso factor de clã. É quando lidamos com todas as nossas conexões com o FBI e os EUA solicitam e eu vou ligar para o cliente objeto. Andi, você sabe, você pode ir em frente e incluir qualquer biblioteca que vai dizer que você precisa ter em, então, como seu cliente, nós temos nossa construção. Então este construtor apenas tomando isso é um parâmetro, e nós estamos apenas fazendo nossa injeção de acordo com os direitos. Então eu vou inicializá-lo também. O objeto cliente de entrada. Então vamos escrever o nosso tribunal juntos. Então alguns fora da quadra e nós vamos escrever vai se repetir através do outro . Então, depois de eu escrever uma vez, realmente apenas indo para copiar e colar e motor alguns itens essenciais sobre nós podemos passar por isso relativamente rápido, então eu vou começar dizendo busca viral. Tudo bem, então eu peço é basicamente quando ou você ou ou o usuário clica em algo em R u y em que algo seria o discurso do autor. Então vamos enviar um pedido ao FBI, certo? Então estou construindo o pedido. Eu estou dizendo Vira quest é igual a nova mensagem de solicitação http direita, em
seguida, para formar esta mensagem. E se eu apenas olhar para os soberanos para esta função, eu vejo que eles têm o método http vírgula o pedido, Earl. Certo. Então eu vou dizer que é pontos de método TTP. E então eu acessei todos os métodos que teriam construído em nosso A p. Eu assinei Love Post escreve Lembre-se, criar usa o método post sobre isso. É aqui que a documentação entra em jogo. Porque então a documentação teria dito ao desenvolvedor fora da U Y para informá-lo, o desenvolvedor do edifício UA em cima de um FBI existente. Que método usar ao criar sul, ver, criar criação em pontos usando get já Onda. Já os vimos com postagem. Então você pode muito baseado no design em, então o próximo parâmetro seria o u R l, que é a menina entrando através da chamada de função. , Depois disso, veremos se o objeto que estava em jejum é não. Tudo bem, então não queremos fazer nada sob aviso prévio. Esta é a
tarefa de devolver os nossos touros, então eu só devolvo as quedas. O que significa que esta foi uma tentativa falhada são átomos inválidos. Tudo bem, Próximo. Se isso passar no teste, vou em frente e ver conteúdo de pontos de solicitação. Tanto. Construir o conteúdo para a solicitação e eu fui ver é igualdade novo conteúdo string no interior do conteúdo de fluxo. Precisamos nos converter ao Jason. Então, vou dizer que Jason se converte. Tudo bem em. Acredito que preciso incluir uma biblioteca para isso. Apenas incluído rapidamente em que é nova vez suave. Então eu preciso de uma biblioteca chamada Newton Soft Jason, que eu não acho que seja parte do pacote por padrão, então eu poderia ter ido para novo get, mas aqui, eles estão dizendo, bem, você pode apenas encontrar e instale a versão mais recente. Então, isso irá automaticamente para novo get let new começando para mim em. Lá vai você. Está gastando a versão mais recente para que você possa dar algum tempo, e então, uma vez feito, você vê que a cor muda, certo? Então, Jason, converta ponto em seguida eu quero serializar o objeto em. Então eu vou passar em assentos pedindo o valor do objeto ou B J. Então BJ representa os dados que vieram ou a carga útil que precisa ser postada logo a seguir. Nós vamos salvar nosso cliente é igual ao meu objeto cliente http, que é sublinhado clientes que cria clientes. Então estou criando nossos clãs. Então eu vou dizer resposta de mensagem de resposta http é igual a aguardar em. Depois fui ver os clientes o objeto cliente que acabamos de criar. Quero dizer que quero que mande a mensagem. Um sincronicamente eu enviei esta solicitação é síncrona. Então o que vai fazer vai continuar. Em
seguida, envie o pedido e devolva-o aqui. Não adianta um fortemente digitado, um, você sabe, usar fogo aqui porque isso significa o resultado disso lá. Tem que desistir. Muito. Então você quer ficar muito, muito bem aqui. Ao contrário de apenas ver vier para construtores, certo? Alguns vendo eu quero na resposta TP problema. Perdê-lo e não podemos ver quando eu receber a resposta, eu posso verificar. Desculpe. Alguém para dizer se a resposta pontos status para e se eu apenas olhar para isso a resposta eu posso ver tudo o que volta com uma resposta. Eu entendo o status dele. Pontuação é o sucesso que são marcados. Hum, você começa sobre o início da escola que já foram revisados. Set. As escolas podem ser 224 etcetera, etc. Então, baseado no status da escola, que está na documentação, a que está sendo devolvida. Quer checar? É aquele que você pegou de volta? Então, neste caso, você sabe que com criar baseado em nosso conhecimento do A P I que acabamos de construir nosso
foram construindo construindo. Desculpe. Deveríamos voltar às duas ou quatro. Então, se a resposta começar que o status marcado é equivalente a Andi,
eu acho que eu posso dizer sistema que a rede que começou marcou isso sobre isso. Eu só vou procurar criar Ted. Tudo bem, então se você quiser temperar, coloque isso em usar o espaço, então se for igual a criado, então você pode retornar verdadeiro, ou deixe-me ver. Apenas volte. Verdadeiro. Tudo bem, vamos, então. Caso contrário, podemos apenas retornar as quedas. Então, se tudo falhar, nós apenas retornamos as quedas. Agora. Algumas linhas vermelhas aqui em que é porque eu não implementá-los como uma pia ou implementar a função como uma pia. Lá vamos nós. Então lembre-se de colocar a pia A, porque não é assim o padrão, certo? Não, basicamente, pelo
menos para não, isto é o que todos os nossos pedidos vão encontrar. Um olhar como o pedido em, em seguida, a resposta. Hum, você sabe se foi uma boa resposta, nossa resposta corporal. Essencialmente, essa vai ser a base principal. Então, o que realmente está acontecendo aqui é que quando dos clientes que a pessoa clica cria, eu preciso ter certeza de que a pessoa está criando um registro e eles clicam em Enviar. Eu preciso escrever código de meus clientes para ver que quando a pessoa clicar, enviar neste formulário para autores para argumento. Veja, eu quero ter certeza de passar os autores e apontar as informações que estão sendo enviadas antes ser usado aqui, então é muito genérico, então a mesma base de código vai para você usar como autor para livros sobre. Se você introduzir outras mesas na linha, é apenas chá. Então isso é genérico e obstruto. Oferecemos apresentação de qualquer tipo de classe. Então ele vai dizer que eu sou inverno criar um pedido. E eu sei que isto é uma criação, por isso é posto em cima. Então eu queria tentar criar contra essa garota. Então, você sabe, nós apenas o seu cursor verificado. Então eu quero que o conteúdo fora da solicitação seja o conteúdo do objeto que entra em seguida Não, nós vamos passá-lo,
esperar pela resposta e, em seguida, analisar A resposta para ver é que a resposta que significa isso foi bem-sucedido, se não foi retornado segue significando que a operação não foi bem-sucedida. Tudo bem, nenhuma atualização de energia vai ser bastante semelhante a isso. Ou deixe-me descer a linha. Então vamos olhar para a exclusão. Então, as pistas. Como eu disse, um monte do tribunal será reutilizado, mas depois eliminado começar diferente. Então deletar é só entrar em I d e na garota. Então eu vou primeiro verificar se o eu faria sentido. Então, se a idéia é menos de um direito, então retorno cai. Significa que a operação que tentou no campo de operação. Deixe-me colocar o invólucro de ninguém. Então você não tem nenhum erro chegando ao longo do caminho. Tudo bem, então a idéia é igual em reboque. Sinto muito. Menos de um, então isso é falso. Isso é um filisteus. Então eu posso apenas copiar esta linha onde eu crio os pedidos. Só quero copiar isso. Então eu vou salvar o pedido. Mas desta vez é um deletar. Então o método FCT é as necessidades, e então nós estamos passando o u R l mais o i d. Tudo bem, então lembre-se que é você? Earl precisa estar no método http off delete,
mas, em seguida, ele leva o u r l cortar o i d.
número. Então é só isso que estamos fazendo aqui. Estamos apenas vendo enviar a resposta ou serviço no pedido com o método, Os leva para o conde passando as idéias para cima como parte da string. Certo. Então fazemos a mesma coisa onde construímos nossos clientes. Então esperamos a resposta. Eu só vou copiar essas duas linhas em vez de tomá-las com base nisso. Então verificamos se os iniciantes marcaram. Então, basicamente, tudo isso é quase o mesmo. Exceto oh, são escola assustadora que estamos verificando após exclusão não é criado. Mas é uma ferramenta para eu acreditar. Waas, o que não é conteúdo, certo? Então, estamos verificando se obtemos uma resposta sem conteúdo, então sabemos que foi bem sucedido, Andi. Caso contrário, voltamos por nós porque foi um fracasso. Mas você vê tudo depois da declaração if, praticamente o mesmo. Exceto afinar esses dois tão positivos que você aqui e tentar preencher o resto. Então, quando você repetir, vamos passar por isso juntos. Tudo bem, então vamos passar pela reunião. Assim, o pedido parece bastante o mesmo. Exceto que o método é começar. Estamos passando na URL fechar o i d. Nós construímos nossos clientes, nós recebemos nosso pedido SINDOOR. Pegue a resposta, então vou checar. Se o código de status estiver bem, então o conteúdo. Então eu quero conteúdo lembrar que ele recebe significa que eu quero obter de volta algumas informações , então eu sei que precisa do conteúdo, certo? Até agora, o conteúdo é igual a on. Então eu só vou dizer resposta que o conteúdo ler uma string Fácil. Alguns, sabe? Ok, se você não chegou tão longe e não foi, você sabe, descobrir o que vai dentro do depoimento. Considerando que não é um valentão e que está sendo devolvido, então tudo bem. Quero dizer, desde que você tenha as 3 primeiras linhas corretamente aqui no caminho certo. Então, depois de realmente poeira re um pensamento, então nós retornamos o convertido. O objeto serializado no básico. Alicia vai esfregá-lo contra qualquer que seja o chá da classe de dados na hora. Onda. Nós temos conteúdo direito sobre. Então, caso contrário, estavam apenas retornando notas. Então isso significa que nada voltou para o outro leva quem ficar com a lista, , a primeira confiança para mim e a mesma coisa, exceto nenhuma idéia nas partes da URL. Desta vez em diante, então é praticamente a mesma coisa. Eu só vou verificar e ter certeza que eu entrei em OK, responder o conteúdo. Nós lemos como string e então retornamos um PC convertido Jason, depende menos do tipo T. Tudo bem, então esses dois, hum, você pode descartar o vídeo em tirar essas poucas linhas que você pode não ter não teve nenhum problema em
passar para a atualização. A atualização. Parece um dedo do pé bastante semelhante que eles criam. Aceite o pedido de que piratas conteúdo vai ser um pouco diferente no campo de golfe. Quero mudar, inclusive aqui. Sistema esse texto direito, embora essa inclusão. Então é assim que espero que os dados se pareçam. Nós apenas quebramos a linha porque isso está vestindo fora da tela, em
seguida, o método que estamos usando sua colocação. Então, há uma diferença de entrada da cidade no patch que desenvolvemos usando put. Mas também há um método chamado Patch em ambos estes 100 dias. A diferença, no entanto, é que o put will é como um híbrido. O barco dirá, , seja qual for a informação que enviou, vou usá-la para substituir o registro que está lá tão parecido com um que estamos testando ou atualizando e eu tinha um registro preenchido. Mas então eu só devolvo algumas informações, certo? Literalmente. Colocou de volta algumas informações e qualquer coisa que eu não coloquei. Assim, inadimplentes os valores. Então o put substituirá as informações que estão lá com as novas informações, enquanto o patch irá realmente mapear o que precisa ser substituído, então apenas substituirá isso. Mas tudo o resto permanece intacto, modo que é a diferença entre um colocar no patch. O put também criará o registro se ele não estiver lá. Então, se eu disse que eu queria atualizar autor com I d 100 não há também com idéia 100, então ele vai colocar um novo também com a informação em conformidade. Então, seguir em frente é a nossa configuração base para o nosso repositório bem baseado ou apenas o ponto disso. Esta é apenas mais uma sobrecarga do conteúdo da string onde você pode ser um pouco mais explícito com a inclusão no ataque de mídia sendo enviado. Mas é a mesma função que está sendo usada em nossa criação. Tudo bem, então em nossas
criações, eu simplesmente não usei essa sobrecarga, então você pode tentar com e sem e me dizer como funciona. Mas esse é o tribunal. Então é isso para configurar o repositório base. A próxima coisa que vou fazer é configurar alguns valores estáticos que vamos usar através do nosso desenvolvimento. Então eu vou apenas clicar com o botão direito estático sobre com a classe de anúncio em Number vai chamá-lo em pontos assim e pontos tudo certo sobre isso é apenas uma técnica fora de definir esses endpoints
estáticos. Algumas pessoas eles na configuração. Mas a realidade é que muitas vezes quando você assistia suas turnês em espera para ligar e FBI você vê o tipo de menina cada vez e, em seguida, colocar no pulso fora da URL. Não. O que acontece é que se essa base você está doente ou
não, não significa suas mudanças. Então, se você tivesse 50 vezes no seu canto, subiu para mudá-lo 50 vezes, o que estamos prestes a fazer é configurá-lo uma vez para que, se tivermos que mudar, ele irá mudá-lo em um lugar, e está bem, Acabou de mudar. Eu estou criando uma classe estática pública classe estática em pontos em Então eu vou criar parâmetro
estético são propriedade desculpe tão estático em, então isso vai ser uma string, e eu vou chamar essa base de propriedade. U R l está bem. E então eu vou inicializá-lo. Então esta base Ural será a U R L para a nossa p. I. Não, essa garota, obviamente, já que tudo
é local, vai ser a garota que temos usado dentro do Postman. E sempre que entrarmos em um barco ancorado que seu café está chegando no navegador para a livraria do FBI, isso é o que vamos usar. A questão é que se eu publicar o FBI amanhã, base
que você é, não vai mudar porque eu não quero trabalhar em locais aqueles
que eu quero trabalhar na Internet estão em qualquer endereço hospedado de suas transmissões. Então eu posso apenas encontrar a mudança uma vez aqui em então cada vez que eu passar e você está realmente já
vai estar doente. Então, para recuperar isso rapidamente, eu só vou voltar para o meu projeto AP I Andi. Eu posso olhar muito facilmente dentro das propriedades, essas propriedades, você pode simplesmente deixá-lo cair. Não traga configurações de gramado que j filho em. Então o que acontece é que você vê dois endereços. Você vê o aplicativo seu e porta SSL. Então eu quero o aplicativo Seu com o sinal de porta SSL. Ally, você sabe, http? Bem, deve ser um problema central. T p s cólon barra Além disso, outra maneira fácil provavelmente seria apenas ir para carteiro e recuperar de lá. Então eu poderia realmente fazer isso em seu http s host local, Colon 44382 direita, Então isso vai ser nossos animais. Pontos finais, RBs, euro. Então eu coloquei isso lá, outro esporte em uma barra, um porque então eu vou apenas mudar as coisas para ele. Então o próximo vai ser outra propriedade, e ele vai ser estático em uma string em então. Desta vez eu tenho autores em pontos. Tudo bem, então praticamente todos os endpoints que então foram toe tem eu posso apenas colocar aqui e eu apenas construir a string uma vez em It vai ser ah, on inter polonês string interpolado que caracteriza a URL base direita em. Depois disso, a palavra-chave FBI lembra-se que eles têm a besta uma pré-edição, barra oral ap A Então, a barra. Eu não nos tenho ano passado antes de um par porque já coloquei a barra dentro fora da base. Você está bem. Então é base seu doente, que tem sua barra e p a barra em então autores e, em seguida, entender para duplicar essa linha e fazer a mesma coisa para livros sobre. Vou fingir que a barra também está no final. Tudo bem, então isso vai ser livros e pontos. Tudo bem? Então,
quando construirmos outros pontos finais , será a mesma dinâmica. Nós apenas chegando a este arquivo e Aditya um recurso estático, eu apenas usá-lo em qualquer lugar que quisermos. Agora estamos quase terminando. Só vou guiar dois cheques. Vou fazer uma construção rápida, certificar-me de que não quebrei nada. E não, quando fizermos construções, vocês verão dois bem-sucedidos porque temos que projetar. Portanto, é sempre bom quando você vê que todos os projetos foram construídos com sucesso, conhecidos, falharam. Então, a próxima coisa que quero fazer é ter certeza que não haverá um dinheiro neural. Então eu tive uma experiência uma vez em que quando eu fui para o depósito, mais trincheira em torno dos dois projetos ao mesmo tempo, ambos
estavam lutando para a importação do mar, e assim não funcionaria tão e fácil de verificar. Esta é apenas as configurações do gramado de goto para ambos. Então já temos um cenário loiro para o nosso AP. Vemos, é o aeroporto. Esse número está ligado? Então eu posso fazer a mesma coisa no projeto Blazer. Vá para propriedades, verifique as configurações do gramado. E veja
, são números diferentes. Só estou espalhando seu dedo do pé. Certifique-se de que são números diferentes. Se, por qualquer razão eles acabam sendo o mesmo número, Você sempre pode apenas mudar um dígito sake e apenas decolar sob detenções no seis ou qualquer que seja o caso. Certo, então a próxima coisa é permitir a dupla execução. Então, o que tem que acontecer? Não. Quando você está executando os clientes sendo o aplicativo blazer, o aplicativo você I, você obviamente tem que ter o a p i correndo em segundo plano, a fim de realmente
realizar suas operações. Certo. Então eu vou precisar muito que quando eu pressionar o começo, então você tem que desperdiçar. É que você pode colocar um como o início do projeto, E então, enquanto ele está sendo executado em seu barco indie, Moody pode sempre clicar com o botão direito no próximo projeto e você vê depuração em NBC Você vai para iniciar uma nova instância que realmente permitiria que você tenha dois projetos em Bebel ancorados simultaneamente. Certo? Mas vou eliminar esse manual. Pise em cima. O que eu vou fazer é ir para a solução Barcos de propriedades em, em
seguida, sob iniciar um projeto, você vê, Single start off projeto, que é o que nós temos. Não, mas você vê início múltiplo do projeto em então. A coisa legal sobre isso é que você pode alterar a ordem em que uma inicialização mais em Então o no topo começará primeiro. E era isso que queríamos do FBI. Aprendizagem aberta, e então o você eu posso entrar por causa do a P I o sábio inútil. Certo? Então o que eu posso fazer aqui é ver ação e, em seguida, clique nela e, em seguida, dizer start on, então para
este , eles podem começar sem depuração, mas as vantagens estar no modo de depuração com ambos fora deles é que se eu tentar algo no e ele não funcionar, eu posso ser ambos através do outro projeto dentro do tempo de vida fora dessa sessão de depuração. Certo? Então essa é uma das características legais. Então, quando eu fizer isso e clicar em OK, tudo bem. E eu só vou mostrar que você sabe que é múltiplo. Inicie um projeto e eu apenas clique. Comece, então o que você vê é um projeto de carro de instância chegando. Tudo bem. Por isso, reparem que tenho dois navegadores e vocês verão as duas portas em execução. Então você diz livraria Você eu venho em Dwell. O FBI está demorando um pouco mais para inventar. A questão é que estou executando ambos os projetos simultaneamente. Tudo bem, então a visão gloriosa do futebol você, eu quero dizer que nosso projeto APIS está funcionando. Então aqui está o projeto do FBI. Estão aqui evidências do projeto A P I, , em modo de depuração,aqui está a evidência da seção “Você I” no modo de depuração. Então, mais uma vez, você precisa ter os dois funcionando porque você pode testar a
U.Y. U.Y. Se o FBI não está concorrendo na hora, você pode. Além disso, se eu as configurações onde diz lançamento mano er para que você possa ver no FBI. Não lançar os profissionais são porque, bem, você provavelmente não precisa dos irmãos ou nesse ponto, porque eles estão apenas testando o você I.
Então você não precisa de futebol em segundo plano toda vez, então você pode realmente ir para o configurações de gramado para o AP. Eu na mudança que o dedo do pé cai, então isso só iria lançar o irmão ou para o que tem. Isso é verdade. Tudo bem, então é isso para este exercício de configuração. A próxima parada implementará algumas configurações de linha de base de autenticação do usuário. Teremos que fazer algumas mudanças no FBI. Então, isso será em sua atividade. Isso nos faria saltar entre os dois projetos. Certifique-se de que tudo está aberto em execução. Andi, isso deve ser divertido.
38. Configurar o registro de usuários (API): Pessoal, Pessoal, neste vídeo, vamos fazer um trabalho de preparação para o nosso cliente e a nossa funcionalidade de registo. Então eu estou trazendo acima, apenas como um lembrete de onde estamos e o que queremos fazer é certificar-se de que ou registrar função funciona. Lembra-te da última vez que saímos de casa, o registo debaixo do pulso era parecido. Então, o que? Que foi ir em frente e adicionar links para eles. O mesmo que tínhamos usado por ofertas e livros. Tinha um registo desportivo para o caminho para o registo. Pisque no registro. Conseqüentemente, notei que eles parecem mais normais. Não, e um todo. O que queremos fazer é que quando clicamos em registrar, ele navega em alguma página que permite ao usuário se registrar com apenas um e-mail em uma senha em. Então isso será central com o A P I ligado. Então este novo usuário estaria pronto agitado em nosso sistema. Então vamos fazer algumas mudanças no A P. Eu vou evoluir um pouco. Temos boa quantidade fora do trabalho, ainda
não, mas precisamos de um endpoint de registro e eu vou adicionar alguma validação toe nosso
objeto de transferência de dados aguardando informações do usuário sobre. Nós vamos apenas estar fazendo algumas outras coisas no meio para ter certeza de que nossos clientes gen lidar
falar com o registro no ponto e realmente ter um usuário registrado através de aplicação
frente frente . Então, sobre a minha livraria aplicativo livraria, projeto
do FBI Onde pode o usuário DT Oh, e eu vou apenas adicionar algumas validações aqui, então eu vou fazer todo mundo saber que isso é necessário, significa Não enviar um sem o nome de usuário. Tudo bem, eu também vou mudar isso de usar o endereço de e-mail dele. Eu sei que isso vai causar alguns efeitos ondulantes, mas a realidade é que vamos usar o endereço de e-mail como nome de usuário de qualquer maneira, então isso realmente não importa. Você pode não querer alterar este o endereço de e-mail, mas eu vou fazer isso, no entanto, também
pode adicionar um dado,
uma notação aqui que é o seu endereço de e-mail e forçar que você está recebendo um e-mail. Idris, nesse campo eu também fui colocar são necessários aqui para a nossa senha em. Também podemos fazer algo como especificar o comprimento da corda para que eu possa ver o comprimento da corda de notação da
guitarra. Então eu posso qualificar ainda mais isso dando um Lynn máximo. Então, digamos que a motivação de Mamma Lynn que queremos para a senha seria talvez 50 caracteres. Eu posso dar a mensagem de seta mensagem de erro atrevido é igual a e, em seguida, eu vejo o seu ônibus. A palavra é limitada. Então, digamos 15 anos cinquenta uma dieta rigorosa. Então, 15 nós não temos ninguém tocando em mais de 15 caracteres do passador. Quer dizer, isso depende de você fora do curso, mas eu estou fazendo isso, por exemplo, doente. Então eu posso dizer que deve ser Vamos ver 15 caracteres é a marca dos muitos comprimento bumbling é igual dedo seis certo? Então posso dizer que sua senha está limitada a, então eu posso impor espaços reservados para ver que deve ser assim. Podemos usar espaços reservados, senhor, mas acredito que o 1º 1 é para o nome de exibição. Então este zero fez o nome de exibição um seria a lama slings no segundo dia seria a lente
mínima. Então, se você queria que ele fosse dinâmico em vez de você digitando o número aqui e, em seguida,
ter que mudá-lo. Você pode fazer algo como um é limitado dedo do pé bem, também, para um personagem para dizer o pastor, New Putin é limitado a dois sendo comprimento mínimo direita 6 para 15 caracteres. Então, se você alterar os números aqui para o comprimento mínimo do comprimento Marx, então você iria automaticamente apenas formatar a string em conformidade. Então isso é apenas uma validação que estamos adicionando, hum, foram necessários com o link de string que eu posso. Eu acho que eu posso adicionar um tipo de dados aqui para ver o tipo de dados em. Então eu tenho que qualificá-lo com o tipo de dados do genoma. Há uma para senha, então há uma para endereço de e-mail também, que você
possa fazer humildade. Ligeiramente círculo fazer pontos tipo de dados, endereço
de e-mail. Qualquer um funciona. Não ter meus objetos de transferência de dados do usuário meio modificado. Eu vou voltar para o meu controlador de usuários em Este é o controle que estamos usando para,
ah, ah, coisas relacionadas à
autenticação. Então agora, então há esse erro porque eles mudaram de nome de usuário para endereço de e-mail. Então, não há problema. Vou mudar esse pensamento. Tenho certeza que se for em outro lugar, vai aparecer. Mas o que eu quero fazer aqui é criar outro endpoint para registros, certo? Não há maneira de registrar. Mas quero outro ponto para as inscrições. Compreender? Toe, faça isso acima do log in e eu vou dizer que a tarefa pública de peças dos
resultados da opção de fogo . Então fazemos isso e chamamos de registro. Não, você pode se lembrar sobre eu quero isso do corpo também. Por isso esperam-me que os mesmos detalhes de utilizador venham através do registo. Como eu disse, não vou agitar o processo. Então, se é que você tem mais pontos de dados, que você gostaria que o usuário registre comigo o primeiro nome, sobrenome e outras coisas que eles teriam outro detalhe apenas para o processo de registro que você está esperando mais do corpo do que os poucos parâmetros aqui. Ou você pode apenas estender os detalhes do usuário. Mas mais uma vez, o tipo de detalhes pode ser muito específico ou contexto. Neste contexto, estou apenas perguntando interesses com o nome de usuário e senha. Na mesma coisa será o registro. Então essa é apenas a razão baseada para eu usar o usuário GTO, os dois lugares outra coisa é que eu estou prestes a encontrar este oposto. Então eu realmente quero que este seja http post. Não. O que acontece é que como temos visto o nome fora, a função quase não tem cerveja. Como os controladores vão escrever o pedido, o controle é simplesmente não pode solicitar e ver se ele é colocado que eu estou procurando o post, certo? O que acontece é que porque ambos fora estes são post. Mesmo que os nomes das funções sejam diferentes, isso vai levar a alguma forma de conflito. Então, há ah, recurso aqui que eu posso usar onde eu posso especificar as estradas para que eu possa apenas para ver onde nós especificar estrada acima aqui. Então esta é a estrada, e está vendo um p. Eu cortei o controle dele. Eu posso, por extensão, logo acima do controlador, ver estradas em, em
seguida, especificar que eu quero que este seja chamado de log e, em seguida, especificar escrito aparecer novamente no DSA. Diga que quero que este seja chamado de registro. Tudo bem, então isso significa que a documentação não vai ter que distinguir, hum rotas para o nosso longo controle de ambos fora do posto tão apontado. Não, fizemos uma função por tipo. Não, eu estou tendo que funções são para pontos finais do mesmo tanque. Então a melhor maneira de distingui-los é realmente dar-lhes nomes diferentes. Então sabemos que este é o log em um. Assim, a pessoa se eles querem fazer login na chamada ap barra usuários barra login no mesmo para registrar em seus dados apropriados passados em conformidade. Então, mesmo que os dados sejam diferentes, não
importa desde que eles coloquem a rota da coragem. Tudo bem, então eu só coloquei alguns Cody pode passar aqui e Kopytoff, mas é o núcleo normal que
estamos colocando. Todos os controladores, você sabe, ações. Nós temos a sair do local e que eu estou desprezando ou o nome de usuário e senha dos dados objetos
de transferência de dados dados chegando em dez centavos. Também verificando os erros, certo? Eu posso realmente ir em frente e usar alguns fora dos dados. São 30 anos do país. Bem, na verdade, eu quero verificar algumas coisas para, então se ele pegar este fogo, podemos assumir que é válido porque nossas validações de entrada dentro de nossos detalhes de usuário e nada deve estar vindo Vazio. Uhm, eu estou recebendo esse fogo. Não. Outra coisa que eu gostaria de fazer é usar a chamada O gerenciador de usuários. Então eu vou primeiro para criar um novo usuário. Portanto, o novo usuário é igual a uma nova identidade. Usar o seu serviço identidade usuário é a nossa base. Use uma classe dada a nós por identidade. Então acho que vou ter que esperar um pouco. Eu não Teoh minha ortografia. Lá vamos nós. Identidade do usuário. Então vamos construir um novo objeto fora do tipo de usuário de identidade, que nos permite definir o e-mail como eu disse, um ,
bem, eu chamo de usado o nome aqui, então não importa realmente. Nome de usuário. Tudo bem, então eu estou definindo que o e-mail está usando ele. Também vou definir o nome de usuário como o nome de usuário à medida que eles enviam e-mails. Desculpe, que estou começando com minha variável usando ele. Eu disse que posso ficar com bundas confusas. Tenho certeza que você pode apreciar isso. O fato é que o endereço de e-mail é o mesmo que usá-lo. Então estamos apenas agitando o endereço de e-mail em ambos os e-mails no nome de usuário Space aan den. Realmente entrada. São todos os dados que estamos coletando. Então você vê, ter outros pontos de dados sobre você pode realmente estender o dedo do pé, ter mais se você precisar toe, então tudo bem. Você sempre pode verificar o meu curso em velocidade completa em uma árvore, mas um desenvolvimento e você verá como podemos estender isso para o usuário. Mas podemos seguir em frente, então. Nosso salvar nossos resultados é igual a Andi. Deixe-me ver o que Pero é isso primeiro. Desculpe por isso. Eu tinha a palavra novo em vez de fogo meu Mas até agora resultados é igual a um peso em. Então eu vou chamar o gerenciador de usuários e lembre-se, vamos adicionar gerenciador de usuários já injetado. Tudo bem, então no gerente de usuários, alguém para ligar para o gerente de usuários. Em seguida, ele vai expor um Fortunati chamado Criar um Sink, que nos permite passar em um usuário identidade alguns com o pároco pode recém-criado em objeto de
usuário. Andi, também
posso passar a palavra passada. Então, quando eu fizer
isso, ele vai realmente lidar com a análise para mim. Então o pastor teria aparecido como o texto simples que a pessoa tocou na caixa de texto . Mas, em seguida, esta função está indo dedo manipulado a inserção na pirataria em tudo. Para mim, fizemos algo assim e pior, comer os usuários mais cedo? Não. Depois disso, fui ver se não os resultados ancorados Êxito eso estou verificando. Esta operação falhou? Eu vou ver Em primeiro lugar, eu fui amar uma seta para dizer que a tentativa de registro de usuário se sentir certo. Mas eu também quero amar As razões são as possíveis razões para os fracassos. Agora, em vez do resultado, hum ,
objetos ,
há, ah, menos fora eros alguém para dizer algo como para cada Andi,
eu posso salvar erro de teste ire em resultados encaixados e você vê os erros de lista ou eu sabia que eu inumerável. É uma coleção de Eros. Então, se houver mais de um erro, todos
eles estarão lá. Então eu vou registrar uma linha por erro, alguém para dizer mais tempo, não amá-la em seguida no local. E então eu estou apenas cortando comendo Não, o campo de pontos de erro e a descrição do ar. Então dentro do erro, os inumeráveis erros off dentro de cada objeto de ar para obter um tribunal sobre a descrição de por que há um erro. Tudo bem, então eu só estou registrando todos eles. Então posso fazer o nosso erro interno de retorno, mas neste momento, acho que não preciso amar mais nada. Ou talvez o que eu possa fazer é, em vez de açoitar este par aqui, eu posso amar tudo fora da era relativa ao fracasso em. Em seguida, basta retornar em erro de participação com a mensagem de log ligada. Então chame-o por um dia. Sutherland acaba repetindo o tribunal e estou fazendo o melhor uso. O que temos no lugar, certo? Então, mais uma vez, se não foi bem sucedido, estamos recebendo todos os erros e estamos registrando cada um em sua própria linha. Só tenho cócegas em espaços vazios. Então eu estou apenas retornando um interno ou com uma declaração em aberto para dizer que este campo de tentativa de
registro de nome de usuário direito também provavelmente deve incluir um monte de terra para ver o
registro de usuário tentado. Então deixe-me colocar isso rapidamente. Tem tudo certo para nome de usuário. Tudo bem. Bom. Então é isso para o registro. Então eu não terminei. Só estou checando se foi ruim. Então isto ainda está aqui, porque preciso de um retorno final. Então o retorno final será feito. Ok. Para que eu possa voltar. Está bem, então. Andi, vou colocar um novo objeto genérico. Eu posso ver novo Andi Este novo objeto simplesmente não tem um resultado que conseguiu, o que naquele momento deveria ser verdade. Porque se fosse tão longe como teria sido pego nesta Onda que podemos querer então outra coisa que você quer dizer querer fazer é para a aerodinâmica interna. Para este controle, Lee pode provavelmente expandido um pouco que quando você está retornando os 500 você provavelmente incluir alguns erros são razões para a seta para que quem está chamando o A p eu possa, você sabe, obter algum feedback naufragar o campo de tentativa. Então entrei no modo de depuração e tenho aqui a janela para o FBI. Então, se você ainda tem o projeto motivo começar. Você pode se concentrar na janela do FBI onde você pode mudá-lo para não e mudar de volta mais tarde . Mas eu estou apenas focando em endpoints dia inteiro olhar, então sei que porque eu fiz a rota que você vê que sob o sexo usuário e você tem ambos os posts e você tem um ps barra usuário registro barra em gps barra usuário login barra. Se o seu documento sente o Senhor, isso significa que você provavelmente não colocou na rota e você tem ah, conflitos. Slager não está carregando. Então isso é um dizer que você tem um conflito. Porque Swagger em si está tendo, ah, dificuldade em decifrar o que escreveu é qual, porque você não especificou, certo? Então vamos apenas testar este endpoint rapidamente em você Veja aqui onde ele se sente automaticamente no que é esperado. O endereço de e-mail dele é esperado na carga. E esse é um exemplo na cadeia de caracteres de senha. Tudo bem, então eu só vou usar o recurso de troca dito aqui, então sim, nós sabemos carteiro sobre. Vou mostrar-lhe como testar com lentos. Eles podem ver você experimentá-lo. Então você pode colocar no usuário como exemplo ponto com. Vou usar isso. Eu vou colocar em. Quero deixar córregos. Então lembre-se que colocamos em alguma validação onde a senha mais precisa de certo comprimento, então vamos tentar executar. Muito bem, então recuperamos o nosso erro ao vermos aqui onde? Está bem, está a dar-nos os 500 por causa disto. Só nos dando uma remissão genérica. Então, como eu disse, você provavelmente quer dar um pouco mais de detalhes nisso. No entanto, se a sua documentação é sólida, quem está desenvolvendo em cima do 80 eu deveria ser capaz de olhar e ver exatamente o que é esperado. Então aqui estamos vendo, precisamos que eu use um objeto DT o tão guardado totalmente que ele está esperando o objeto detalhes do usuário em então. O detalhe adicional é que o objeto detalhe do usuário tem no fanático mais barba string e-mail na senha, com a validação de colocar onde possivelmente entre 15 e seis caracteres de comprimento, certo? Assim, o desenvolvedor consumindo o seu a p I tem uma responsabilidade igual para passar pela documentação e tribunal em conformidade. Então vamos experimentá-lo novamente apenas para finalizar este uso um pouco deixar para P em SWR o um em tentar que novamente em. Então, quando
olhamos, vemos que estamos voltando ou 200 e são mensagens bem-sucedidas. Tudo bem, se eu der uma olhada no arquivo de registro, então vamos ver se temos o primeiro infill audível, a tentativa, e então temos todos os erros fora. A senha requer isso o pastor em que em tudo o que estava errado com a senha e, em seguida, a coisa final que diz que campo. Tudo bem, então o registro funciona e parece o quê? Como o que esperamos? Não vamos voltar ao nosso projeto. Vou fazer algumas modificações no que temos no nosso Blazer até agora. Então eu estou indo para o pé um, criar uma nova pasta, e eu vou chamá-la de modelos a partir do basta clicar em adicionar nova pasta em Eu estou chamando modelos. Tudo bem, vamos, então. A primeira coisa que eu estou colocando nesta pasta é uma nova classe que eu vou chamar modelo de
resposta. Não. Se é uma coisa que vimos é que cada resposta basicamente tem algo a dizer. Se foi bem sucedido, este pode ser o cordão ou pode ser uma bandeira. Então o que eu vou fazer é dizer algo como, eu quero uma propriedade que vai ser fora do tipo touro em. Este vai ser um sucesso. Então isso vai armazenar onde o carro foi bem sucedido ou não ligado. Então eu vou ter outra propriedade do tipo string. Este vai ser talvez por erro. Tudo bem, então, eu tenho mais uma propriedade. Andi, este vai ser para o conteúdo, certo? Então você sempre estará recebendo respostas com uma mensagem de erro são conteúdo ou algo assim , mas sempre seremos capazes de determinar o sucesso. Então este vai ser um tipo de classe mais genérico que estamos indo para retrofit são respostas de
repositório baseadas . Então, certo, não são repositório baseado. Toda vez que chamamos um ponto final, é realmente apenas virar uma verdadeira ou falsa direita. Mas nesse caso, falando quando vou usar essa base, digo que é isso que vamos usar, que é criar,
embora possa parecer falando quando vou usar essa base, digo que é isso que vamos usar,
que é criar,
embora possa parecer
estranho. Mas não vamos cruzar nossos fios quando estamos chamando um post que vamos usar cria. Então, temos a opção de ter uma função post genérica que apenas chamará. Mas então nós já vamos basicamente estar apenas repetindo este cordão dentro desse
post genérico . Eu não quero ter que funcionar com isso. Então o que eu vou fazer é usar o modelo de resposta, mudando estes velhos de barras no reboque. Tipos de pedidos, certo? Tipos de retorno do modelo de resposta desculpe ativados. Então, quando avaliamos o que recebemos de volta, então podemos formular uma resposta mais detalhada do que apenas verdade ou quedas. Então vamos fazer isso quando voltarmos e começarmos a configurar a funcionalidade de registro para o nosso aplicativo Blaze. Mas então estaremos reajustando relatórios baseados, respostas de
histórias com ou modelo de resposta conhecido.
39. Configurar o formulário de registro de usuários: Ei, pessoal, bem-vindos de volta. E estamos, em parte, a compensar a funcionalidade de registro para a nossa
aplicação de livraria . Não, nós apenas configuramos o A P I pé tem o nosso registro e ponto, e não vai estar detonando o lado do blazer das coisas do dedo do pé. Ter um formulário de registro em ser capaz de se comunicar com o A P I. Então esta aventura começa no meu arquivo de endpoints estáticos. Onde estão adicionando um novo endpoint apenas para registro, Então ele vai ser registrar no ponto em. Então ele vai ser baseado euro barra monsieur a p i slash use air slash register. Então lembre-se que essa foi a maneira que formatamos nosso uhm en pointe para registro em ou usuários controlador em apenas como uma escola mais fresco volta. Nós dissemos que a rota vai ser sempre um controlador PS slash ligado. Em seguida, podemos especificar outra rota no topo fora do realmente para um. Então é um p I cortar usuários barra registradora. Tudo bem, então isso é sobre o ponto final estático para uma destruição. A próxima coisa que eu vou fazer é configurar Ah, modelos pasta em nosso você sábio. Então, você sabe, no A P eu disse onde, mas nós vamos chamar objetos de transferência de dados estavam na interface do usuário idéia o que você chama de
modelos de visualização porque suas visões em então você tem modelos fora dos dados que deve ser representado nas vistas são vista. Modelo encontra esse crédito à sua direita. Desculpe. Eu me pergunto se eu clicar classe eu deveria ter dito nova pasta e, em seguida, na pasta. Então nós estamos indo diretamente criar qualquer modelo de chamada de foto e, em seguida, nesta pasta nós vamos para o anúncio e , em seguida, classe e, em seguida, eu vou chamar este modelo de usuário. Tudo bem, mas dentro do modelo de usuário, eu vou ter dois modelos, então sim, eu conheço esse modelo de usuário sem nome. Vou deixar isso em branco. O nome do arquivo será usado um modelo, mas realmente eu quero ter modelo saudade em. Eu também vou ter modelos de registro. Eu só coloquei longa e modelo a partir de nenhum barco. Eu vou ter registro para ele. Só há limites do modelo de registro. Tudo bem. Nenhum modelo de registro vai ser um doente Ali tem os campos que precisamos para registro que você sabe que estão usando senha humana em todas as validações que a
interface de usuário precisará aderir. Então, na verdade, vou usar a necessidade deles para você, porque nós fizemos. Todo esse usuário precisa de você. Temos o endereço de e-mail. Temos a senha, alguma disciplina para copiar tudo isso. E então eu fui para vir para o nosso modelo de usuário em entender colar tudo isso lá e, em seguida, incluir quaisquer bibliotecas ausentes. Tudo bem, então, para a senha, eu estou realmente indo para fazer ah, comparação. Validar também para a senha. Então eu adicionei o campo adicional, que eu estou chamando para confirmar senha. Eu só vou colocar um nome de exibição aqui para o endereço de e-mail. Então o nome de exibição basicamente diz o que Hadi quer ser exibido na tela. Qual é o nome fora do campo quando ele é exibido para o usuário? Portanto, são endereços de e-mail nem espaço. Tudo bem, então estas que as anotações desempenham um bom papel em espera, uma interface de usuário é estruturada. Qualquer buraco. Deixa-me guiar-te. Então sabemos sobre necessário o tipo de dados aqui é senha. E colocamos em nossa validação para o passado onde leva que entra e então não. Aqui eu tenho outra senha de tipo de dados. Esta está confirmada. A senha neste está vendo comparado o valor deste campo com essa exibição. Então, é apenas uma boa comparação que vai colocar em porque quando a pessoa está se registrando, quer endereço de e-mail e, em seguida, comparar os dois transeuntes, certificando-se de que eles são muito. Agora, depois de configurarmos nosso modelo, precisamos da página real que vai aplicar o dedo do pé. Então, para criar uma nova página ou novo componente, precisamos ir para a nossa pasta de páginas. A Andi. Então, podemos colocar tudo na raiz, porque, tanto quanto se trata, uma vez que o nome da página está lá e é registrado dedo do pé tem o nome e vimos algo letra com índice, onde com o sinal de barra barra que isso significa casa. Ou se você olhar para a previsão do tempo, aqueles que estavam lá, os dados de busca sob contador, você sabe, vendo barra Fitch Gate e Slash contador para que pudéssemos colocá-lo na raiz. Mas eu não gosto de todas as páginas, você sabe, apenas sentado lá e regras. Eu sou realmente o que vai criar outra pasta dentro de páginas. Desta vez, eu vou chamá-lo de usuários porque eu quero apenas páginas relacionadas ao usuário dentro desta pasta, não um telefone celular, e é uma parte realmente jogador. Desde que o papel seja, deixa-me mostrar-te o que quero dizer. Então vamos adicionar um novo blazer componentes diretamente. A pasta Ir para adicionar. Você pode escolher novo item novamente para sua classe, mas queremos ir para a web, e queremos um componente de navalha. Então este vai ser o registo certo. Por favor, use o capital são porque se usar um comum são ele vai lhe dar um problema. Costumava entrar e ter um problema. Não sei se fui eu ou o futuro universal, mas essa é apenas a minha recomendação. Use letras maiúsculas ao criar seus componentes de reserva. Tudo bem, então este é o registro. Nós clicamos. Adicione Onda. Depois de adicionar este discurso, eu vou apenas colocar a anotação sem no topo para que ele saiba suas raízes, então é raiz está no registro de barra, certo. Então, mesmo que esteja em uma sub-pasta, uma vez que você colocar um em cada ref para ir para registrar como fizemos na barra Nuff no menu suficiente. Ele vai procurar esse componente e descobrir que é eu só quero projetar rapidamente ou o formulário de
inscrição. Ele não terá nenhuma sanidade de forma, porque você precisa criar no serviço de autorização antes que possamos marcá-lo. Mas vamos lidar com os desenhos. Só estou removendo isso. Eu deixo o tribunal aqui, e então eu vou usar alguns para amarrar quatro, hum, aulas. O estilo. Então botas para cima quatro vem construído em blazer de reboque. Hum, se você quiser incluir outros. Você sempre pode clicar com o botão direito do mouse Gautam Believe Gerenciar ou nenhuma outra biblioteca do lado do cliente. E então isso vai trazer uma caixa de diálogo que eu perco a busca por outros, um, clientes que eu biblioteca, como talvez querer material ou algo assim em. Então você pode apenas instalá-lo, e ele iria colocá-lo dentro do local retardado de água que você tem lá, certo? Então, se você quer usar algo que não é loja de touros estavam na cabeça. Estou usando bootstrap. Se você não está tão familiarizado com bootstrap, você sempre pode ir para obter bootstrap dot com no mais recente é 4.4 no dia tem excelente documentação. Então, tudo o que estou prestes a fazer, você pode encontrar em algum lugar aqui ao lado. Então o componente que eu estou prestes a usar ajuda do dedo do pé estilo minhas páginas, o cartão. Então eu estou procurando por um cartão, e isso é basicamente simplesmente que estamos usando, certo? Então, quando tivermos um cartão, ele lhe dará uma fronteira nacional, certo? E então você pode ver como as diferentes cartas podem parecer. Então deixe-me começar com este, e eu posso apenas copiar, porque quando você estava digitando HTML de qualquer maneira, eu vou apenas acelerar isso. Então é por isso que eu estou começando de um diff com o cartão de classe em, em seguida, dentro fora do cartão, eu quero um título de carro e muito ajuste para C H. Talvez
três, três, não 13 em dar-lhe uma classe off cartão traço título direito em . Depois fui vê-la. Apenas, uh, não. Tudo bem. Não, dentro do corpo estavam indo para a fazenda. Então o blazer nos dá alguns componentes. Algumas etiquetas
especiais. Então, somos sempre aberracionais. Mas então eles têm às vezes que podemos usar assim quando se trata das formas. Se você apenas abrir a cidade e começar a escrever o formulário de palavra, você começou a ver alguns componentes diferentes que eles lhe dão antigos fora da caixa para ajudar com formulários. Então, um deles é editar formar suas notações amargas enquanto os tipos de entrada de dados sobre estes podem fornecer alguma ligação especial toe o modelo que está em uso. Certo? Ainda não cheguei à parte modelo,
mas trabalhe comigo. Então eu vou começar após editar formulário em você abrir e fechar que em, em seguida, dentro da lista de atributos de
formulários de edição . Você tem modelo. Então modelo significa que classes de dados este formulário de ligação para em. Sabemos que criamos o modelo de registro para este propósito escreve eu só vou dizer modelo de
registro. Isso é o quê? Seu dedo do pé direito. Então você tem alguma ação. Em segundo lugar, digamos sobre em um novo inválido, Enviar versus on. Submeter versus em enviar válido para que você possa escolher fazer algo Se alguém dados
inválidos Ah, você pode optar por fazer algo quando a pessoa algo está tudo junto sem, você sabe, impor validações, ou você pode apenas dizer quando um envio válido é feito. Então eu vou fazer isso na validação de cursos relativos às validações que foram todas alinhadas dentro do modelo que está sendo usado. O que seria no nosso caso, o endereço de e-mail do pai é exigido nisso. Senhas? A maior parte. Tudo bem, então em um envio válido. O que eu quero fazer? Posso chamar uma função aqui. Segundos Um registro identificador. Tudo bem, então tem sido o dedo do pé. Saiba que você vai ver Red Lines porque é seu criador. Representação de duas coisas que ainda não existem. Mas vamos chegar a isso. Sem problema. Então, no farm, o que eu quero incluir serão anotações de dados, validador na validação. Resumo. Tudo bem, então esses dois componentes vão sentar e assistir e garantir que todas as validações sendo delineadas estão sendo atendidas. - Não. Vou começar a construir na fazenda. Então, se eu quero dizer, eu sei que você deve saber como funciona farm, mas se você quiser saber como formulários bootstrap podem olhar, você sempre pode voltar para a documentação, olhar para formulários e então você vê ho para invocar formulários bootstrap para fazê-los ficar bem e dormir em interativo como este. Certo? Então você tem o seu formulário de conversa, mesmo que seja a forma que não precisamos disso. Mas, em seguida, cada controle iria dentro para fora. Formar um grupo com um rótulo na entrada. A Andi. Bem, se você quiser ter alguma coisa lá, certo. Então o sentido é que precisamos de um grupo de formulários em cada entrada. Deve ter o controle do formulário de classe. Tudo o resto está dentro ou sob controle. Hum, então vamos voltar. Vamos criar a nossa primeira entrada para o nosso e-mail. Então eu formei um grupo. Eu tenho a etiqueta para e-mail sobre Di Di. Então, aqueles muito nas etiquetas é o endereço de e-mail em. Então você vê que eu tenho meu controle de formulário de classe. Mas então eu tenho algo aqui que vai ficar de pé goto do que fora liga valor traço igual. Então está dizendo aqui no aviso prévio que este é o texto de entrada, certo? Então, se você quiser entrada de texto, idiotice, entrada, texto. , O que isto quer dizer é,se bem, quando o formulário está sendo enviado, ou dados sempre que tem interpretar dados, a
que parte do modelo devo ligar? Certo Então, nós estaríamos vinculando toe registro modelo dot e-mail, porque isso é uma sensação de que temos que muito é o endereço de e-mail. Tudo bem, então eu vou apenas replicar isso para todos, e então eu vou criar um modelo, e então você vê o controle de valores mentais. Então agora nós temos um monte de erros, e nós temos a mensagem de validação para significado Seja qual for a sensação que colocou aqui, ele vai imprimir esta mensagem, aquela mensagem de erro que surgiria no caso de validação não ser companheiros . Tudo bem, então, não, eu tenho meus três fusíveis para endereço de e-mail para senha e tenho senhas confirmadas. Você pode pausar um vídeo. Tire isso. O que realmente entrada pode simplesmente copiar e colar o e-mail. Entende-se os respectivos I ds. Tudo bem, Hum, fora do curso. Nunca vai ter que sentir a mesma ideia na mesma página. É entender. Para alterar um para confirmar a senha diretamente no. Certifique-se de especificar o tipo igual de patrocinadores. Então você pode especificar tipo é igual ao endereço de e-mail aqui, mas já temos a validação em execução para impor que ele deve ser anemia. Lecherous. Tudo bem, então isso seria gentil, você sabe, trabalho
duplo, mas para ter certeza que você colocar tipo igual a pontos palavra porque, hum, você não quer que ele esteja digitando em texto simples agora. A coisa mais importante que acontece em qualquer formulário é nossos botões de envio. Eu só tenho um tipo de botão igual. Enviar classe em, em
seguida, dentro de fora que maçã bt nbt e traço primário cada e bloco traço. Então, mais uma vez, você sempre pode revisar a documentação do bootstrap para ver os diferentes botões que eles têm sobre o que eles iriam olhar para ela. Então este é um botão primário bt e traço direito primário que chamado dá-lhe este
botão azul . Então, seja qual for a cor que você quiser, você pode incluí-la. Você pode rolar para baixo e ver as outras propriedades. Então saiba que fizemos a parte de design fora do formulário que precisamos do dedo do pé. Comece a escrever um pouco do tribunal. Então vemos todos esses leões vermelhos aqui. Temos alguns erros. Então agora o que precisamos fazer é especificar qual modelo de registro está em. Modelo de registro é uma classe que temos na livraria espaço próximo. Você, eu não sou modelo. Então a coisa é que nós podemos realmente colocar usando declarações dentro de nossos componentes bem aqui. Porque preciso te dizer que estou usando essa biblioteca para algumas coisas. Direita em. Então, dentro do meu cordão. Meu bloco central. Posso começar a escrever no tribunal. Então a primeira coisa que eu preciso fazer é criar eu estou em um objeto fora. Bem, tipo de registro moderno em porque eu chamei de modelo. Preciso encontrar o nome aqui. Então deixe-me explicar isso rapidamente. Então eu vou ver registros privados na água. Então eu tenho que chamar o mesmo nome ou seja lá o que for perto das minhas faculdades. Seja qual for o nome que eu tenho que colocar aqui e depois de inicializar, é igual a uma nova instância fora prefalecido no modelo. Então, para tornar as coisas mais simples, poderia ter chamado isso de modelo, certo? Ou o que eu quisesse. E então eu só teria que ter certeza que eu digo modelo é igual ao nome fora do objeto. Tudo bem. Quero dizer, veja, essa linha vermelha se foi porque não, o componente sabe que isso também existe para nossas ligações. Eu preciso saber, digamos que o modelo encaixe, em
seguida, colocar no campo apropriado. Alguns encadernação protege o modelo. As senhas do endereço de e-mail, uma mãe, essa senha. Andi, confirme a postura para monitorar isso. Confirme a senha. Está bem, está bem para a nossa mensagem de validação. Temos que fazer algo um pouco mais chique. Quando eu fui ver no Scent para envolver resumos de acordo em, em
seguida, colocá-lo em uma cinta em que dentro fora. Estas raças estão dentro dos parênteses têm outro par de doença pai que é como indicador, como uma pseudofunção ou uma função de linha. Mas então eu fui para referência triste meu lambda olhando flecha. E então eu digo o endereço de e-mail do dardo modelo. Tudo bem, no DSO eu vou fazer isso por todos os outros. Então, a mensagem de validação para senha estaremos prontos. Teoh modelo não senha nos mesmos quatro. Confirme a senha relativa para confirmar a senha. A seguir, precisamos do dedo do pé. Hum, ele vai criar esta função direito 100 registro. Então, não. Dentro da quadra da mesma maneira que precisávamos para criar nosso modelo. Eu preciso ver um soldado Você cantar o cabo americano Aan Den e então uma vez que eu criar aquele olhar em espera, linha vermelha vai embora. Tudo bem. Voar perfeito continuando. Aqui precisamos saber o que vamos fazer quando alguém se registrar. E o que nós vamos fazer é,
você sabe, você sabe, na verdade chamado de P I e fazer todos os tipos ofensivos. Então nós precisamos realmente construir a função, e eu não vou fazer isso aqui. Em vez disso, vou criar um serviço que vai lidar com todas as nossas
operações de autenticação de animais . Então, como isso de costume, nós vamos para contratos, clicar em adições, criar uma nova classe ou interferir em qualquer um e nós estamos chamando este. I repositório de autenticação que em, em seguida, dentro fora deste, Eu só iria certificar-se de que ele está vendo interfere e a classe dentro off. Isso precisamos ter, ah, função que vai ser com registro. Então esta vai ser uma tarefa fora de amarrar Bull. Ele vai ser chamado de registro quando tomar o modelo de registro ons usuário como os parâmetros. Certo. Então esse é o nosso contrato. Então eu vou implementá-lo, alguém para ir para baixo para serviço clique direito, criar uma nova classe chamada este um repositório de autenticação clique. Acrescente, depois fazemos alguma herança. Eu não vou usar a postura baster para as operações relacionadas ao usuário. Porque, como você pode Bem, vamos apenas recuar um pouco. Mas os repositórios de base foram projetados para lidar com classes específicas Right on Then. Eu tenho modelo de usuário e e eu tenho modelo de registro, então eu teria que criar classes díspares são um monte de doença divertida. Talvez usar a parte superior do outono aqui e assim por diante. Então eu estou apenas tentando manter isso simples sobre Eu estou apenas criando um outro positivo, muito chamado autor. Depositário. Apenas para seres de autenticação coisas onde ele não tem que chegar ao palco fora de corvos, operações e espera. Deixe-me ir em frente e implementar minha interface. Então, inclua quaisquer bibliotecas ausentes em implementar, interfere. E então vamos escrever nosso núcleo que vai falar sobre o FBI, alguém para começar injetando meu cliente http no reboque. Este braço, esta classe. Desculpe. Então, para o serviço. Então eu sou GDP tipo fábrica em. Caso você não se lembre de nada disso, fizemos isso quando estávamos fazendo o repositório baseado. Quando você apenas volta, você veria que nós realmente viciados que parecem objeto, certo? Ou isso parece, um maldito cocô. Tudo bem, então chega disso. Então vamos seguir em frente. Então agora precisamos inicializar. É um ajuste muito. Rapidamente. Embarque isto. Tudo bem. Disse uma coisa. Eu fui até lá, lembra? Eu fiz. Está ali em cima. Então nós só precisamos do construtor para a nossa história passada disse trocar a cópia nome e colar uma mudança nele. Estou injetando o cliente em nosso repositório. O tribunal aqui vai realmente olhar muito semelhante toe dizer o núcleo de postagem que tínhamos acabado de remover que onde algum tribunal de postagem em nosso repositório baseado. Tudo bem. Ou criar. Então não estamos em lugar nenhum fazendo oposição. Com base nas instruções do DSO. Muitas das coisas parecerão parecidas, mas vamos começar todas juntas. Então, a primeira coisa que queremos é a nossa busca off tipo post na URL que será passando é
em pontos ponto para registrar em pontos. E lembre-se, acabamos de criar isso quando começamos com a besta Ural para registro deixou de fora aquela barra atrás Sanders colocou melhor prevenir do que remediar. Tudo bem, então vai pedir. Certo, criamos nossos pedidos. Então nós vamos preenchê-lo com o conteúdo, que vai ser a nossa versão serializada fora do modelo de usuário que está chegando fora curso. Vamos em frente e incluímos qualquer coisa que esteja faltando. Tudo bem, então, até agora, maioria parece copiar e colar da criação para o repositório Beiring . Os parâmetros reais a entrar, certo? É o mesmo tribunal. Então, serializamos para Jason. Então eu uso meu dedo da biblioteca cliente, criar no próprio cliente http em, então eu vou enviar para cima Ah, pedido. Alguns só querem ver http. Resposta mensagem Response é igual pé lá esperando fora fora isso e este é o nosso peso. Então, depois de mim ,
isso é pensar . Então, no criador no fator que criamos o repositório baseado, o que fizemos foi verificar por uma resposta específica chamada em cada ponto. Certo? Então a coisa é, eu posso dizer algo como retorno porque estou devolvendo um ouro. Eu posso ver o ponto de resposta de retorno é a escola de status de sucesso porque você sabe que suas placas de
status significam sucesso para que possamos apenas retornar isso Então ou é verdade que nossos pais com sucesso são loucos porque nosso P I para registro não é retornando quaisquer outros dados valiosos. Isso é que precisamos completar o registro ou qualquer coisa. Só precisamos saber o que é bem sucedido ou não. Então saiba que eu configuro meu serviço para autenticação ou meus repositórios para autenticação tem que passar para assustar dot CS e fazer representação desses direitos. Então, dentro de serviços de configuração, eu preciso dizer pensamentos de serviços e clientes H D T B têm que ter certeza de que eu faço isso tudo bem, porque ,
você sabe, estamos usando o problema dp clientes nisso. Eu também vou adicionar transient meu repositório de autenticação ocular e autenticação ou cartazes para que possamos injetar este serviço onde precisamos dele. Então saiba que fizemos isso e você pode apenas ter certeza que tem essas linhas antes de continuar. Agora que temos injetado em, criado são off repositório injetado em nossa inicialização agora de volta ou é um componente, podemos injetá-lo no próprio componente. Então, bem, eu vou fazer referência ao contrato, então eu tenho que usar os contratos da biblioteca para que eu possa injetar. Eu repositório de autenticação sobre isso. Eu só vou chamar o objeto fora re piscina. Então aí está nossa injeção de dependência diretamente em nosso componente blazer, certo? Não, podemos começar a escrever um tribunal que tratou dos registos. Eu vou dizer para a resposta vire. Tudo bem é igual a on. Eu só espero o resultado fora do nosso off re puxar ancorado em. Então temos registro. E então, onde estávamos registrando Bem, estamos apenas durante um novo usuário na forma de modelo de registro que está vindo através do nosso objeto chamado model on. Então eu faço um semi cólon. Tudo bem, então eu posso tomar uma ação se a resposta é boa, não
são para que eu possa dizer se resposta causa, em seguida, série de resposta retornando um ouro. Nós dissemos que precisamos de um ouro no segundo, ver se resposta então eu quero navegar para longe, então para navegar para longe, precisamos de outra injeção e isso é na forma do gerenciador de navegação. Então eu só vou voltar para o topo e então eu vou dizer injetar agora o
gerente de engrenagem filho que eu conheço acabou de chamar. É o meu amor. Tudo bem, então não venha aqui. Se a resposta for bem sucedida que eu vou dizer que eu amo pontos de objeto gerente navega para em então. Bem, se a pessoa acabou de se registrar, provavelmente
podemos navegar para a página de login. Tudo bem, mas não há página de saudade. É Soto prevenir em áreas que eu simplesmente navego para nada. Tudo bem, Não são a casa em vez de outra coisa então significaria se a resposta voltou tão longe quanto falhou. Hum, o que eu vou fazer é criar uma seção onde eu vou exibir uma mensagem de erro para que eu
possa voltar. Apareça para o cartão. Pode estar na registradora. Não, em. Então. Faça algo como um alerta dar. Então botas têm nos dá alertas tão elegante, quase alerta sobre. Então eu posso ver alerta Dash Jer. Então isso me dá, como um vermelho, hum, dar ou área. E então dentro disso, eu posso ter um puxador p, que é algo como algo que deu errado com a tentativa do filho do registro. Certo, mas não quero que isso seja exibido o tempo todo. Todos os direitos estão realmente fazendo isso O que eu vou fazer é criar outra variável no DSI bullion é campo. Ele só cai, em
seguida, um pouco de configuração. Isso, entanto, cai primeiro porque uma vez que uma página carrega qualquer valor que está lá, ele vai dedos partes que valor. Então eu queria ser falso primeiro. Mas então, se a resposta se não resposta responsiva se for verdade, então nós nunca escapamos. Senão, quero dizer que o campo dele é igual a verdade. Tudo bem, e em cima. Posso colocar o seu depoimento aqui no HTML. Posso dizer esse sinal. Se desculpe, deixe-me tentar de novo. Eu posso ver esse sinal se é campo, então exibir as dívidas. Tudo bem, então o que isso vai fazer é avaliar o valor fora da variável e, em seguida, exibir a diva em conformidade. Certo? Então? Bem, isto é, dá-me uma era. Deixe-me ver o que essas áreas estão dizendo que não existe no meu corpo. Ah, desculpe. Portanto, isso precisa ser declarado fora dos registros no identificador. Estou declarando global para toda a visão, certo? Então mudamos seu estado assim que tentarmos lidar com o registro. Então, se este lago sente, então nós mostramos que algo está errado. Com o registro, filho. Certo, então vamos testar o sal. Eu vou voltar para o controle de meus usuários e colocar um ponto de interrupção no registro apenas para
ter certeza de que estamos acertando o lugar correto em. Então eu vou apenas entrar no modo de depuração. Certo, então estamos na nossa candidatura. Eu vou para registrar se eu tentar enviar ao mesmo tempo, vai me dizer que a senha e pastores confirmados não muito, e isso é porque é uma espécie de auto sensação. Alguns testes, um, data também, você vê, é que está funcionando o trabalho de validação. Não posso seguir em frente até que tudo seja feito, certo? Então o que eu vou fazer saber está realmente pronto para alguém em. Estou usando um passador padrão que é estar em Sina sensatamente digno de um. Vamos tentar enviar isso. Estou recebendo um erro. Então deixe-me ver o que isso erros todos os nossos barcos. Então, para ver a era, podemos ir para os consoles. Vou apenas clicar com o botão direito, inspecionar elemento. Vá até a banheira do console, deixe-me ver alguma conexão pode ser feita. Oh, eu sinto muito. Eu sei o que está errado. Então eu realmente só tenho isso em um começo fora projeto mais então deixe-me apenas começar isso. Então eu preciso voltar para a minha solução. Certo? Clique vai de propriedades e certifique-se de que estamos no início múltiplo do projeto com o FBI começando no modo de depuração antes do u I Onda clicamos OK e que tentou novamente. Tudo bem, vamos tentar de novo. Então registre-se e eu já tenho um usuário de teste com isso. Então eu vou dizer diariamente um ponto de livraria wanat com Andi mesma senha e, em seguida, envia em seguida, é o nosso ponto de ruptura. Então isso significa que nós apenas conectamos com sucesso do nosso você i sobre o nosso direito de um p I. Então você viu isso quando o projeto AP I não estava executando o “você”. Eu não pude fazer nada porque precisava se conectar ao próximo site. Então, mesmo que estejamos na mesma máquina, mesmo que estejamos usando o mesmo servidor Web, você pode ver que eles estão transmitindo de endereços diferentes com o princípio de ver. É a mesma coisa que você faria se você quisesse falar com outro FBI hospedado em um site do
outro lado do mundo uma vez que eles têm um u r L você pode usar as mesmas técnicas Http, cliente o post para obter qualquer método que é e conectar-se através. Agora. Dito isto, eu só vou verificar se os dados estão sendo enviados e você vê aqui os detalhes do usuário
,
mesmo que , nós enviamos sobre o registro ou modelo de registro, você está com senha de e-mail e confirme senha. Só estamos recebendo o endereço de e-mail e a senha. Isso é tudo o que realmente importa, certo? Então eu posso expressar às cinco. Tenho certeza que vai passar por isso. Vamos ver o que eu faço. Tudo bem. Andy navegou de volta para casa, que foi o que pedimos para fazer os direitos. Nós dissemos: Se for bem sucedido, então volte para casa. Então foi isso que ele fez? Não, é
claro que eu quero modificar isso um pouco para que quando a pessoa é registrada, eles provavelmente vão para o registro. Então, não, vamos trabalhar na funcionalidade de registro para garantir que quando a luz do dia voltar e ela quiser, muitos
de nós podem clicar contra você. Caesar forma coloca em nossos dados, e então nós mudamos o estado de autenticação fora de nosso up enquanto obtemos o conversador e analisamos tudo ao longo do caminho. Tudo bem, então fique ligado. Temos outra atividade de impacto chegando quando falamos do registro.
40. Configurar o usuário de login - provedor de autenticação do blazor: Ei, pessoal, bem-vindos de volta. Nós vamos estar abordando sobre o login do usuário funcional-lo. Agora, eu tenho um pouco para fazer alguém para seguir adiante, e a qualquer momento, você sempre pode pausar o vídeo, tentar acompanhar o que estou fazendo. Mas eu vou tentar ser o mais claro possível em explicar o que está acontecendo. Então eu estou começando com nossos pontos de entrada, e a primeira coisa que eu precisava é ter certeza de que nós não estamos no ponto para registros. Para inserções longas. Eu vou chamar este ponto de login, e ele vai ter a base, sua barra antiga. Estava ocupado. Usuários orais do FBI cortam o registro com a barra de direita. Em seguida, eu vou passar para modelos, e eu vou criar dentro dos detalhes do arquivo de modelo de usuário em ou classe modelo de registro. Então tínhamos o modelo de registro. Vai parecer da mesma maneira, praticamente. Nós simplesmente não temos que confirmar senhas, entender toe copy, endereço de
e-mail e senha em put inside off loving, porque isso é tudo o que realmente precisamos para alguém ser capaz de entrar no aplicativo direito se você quer, você provavelmente pode tirar o parâmetro comprimento da string porque você não quer dar-lhes nenhuma pista que você sabe que seria mais feliz. Você não quer ter nenhuma indicação. Desculpe, talvez a senha precise ser menor do que isso. Outro modelo que criei é a resposta token. Então você pode até mesmo colocar isso dentro do modelo do usuário. Mas eu coloquei em seu próprio lugar porque tudo o que é é uma classe. Essa ficha de crânio responde com um campo chamado falar porque lembre-se que quando chamamos o FBI estavam recebendo de volta uma corda para pelo menos resposta é falar. A chave é falar sobre o valor. Então nós queremos ter fi muito a chave para que possamos armazenar o valor quando d serializá-lo no in. O FBI ligou, mas veremos isso mais tarde. Então, basta ir em frente e criar essa resposta de token dentro de modelos Agora avançando, vamos passar para o nosso contrato para o repositório de autenticação I. E aqui vou apresentar duas novas funções, uma chamada de login em uma chamada Model
One chamada Logotipo. Então ambos estão levando um é um touro e o outro é uma tarefa. Então, quando é que devolver um touro em um é só nós? Então nós fora do curso tem modelo de registro como o perímetro para a nossa função de log in. E se o colocarmos no contrato, então devemos colocá-lo no repositório. Então você pode ver que o estúdio visual nos avisando que temos erros. E eu só escondo isso porque às vezes isso nos faz entrar em pânico de antemão. Tudo bem, então. Entenda para ir em frente em implementos. Tudo bem, então eu só removo um núcleo extra que eu tinha lá, então eu não tenho que me preocupar com isso porque nós vamos estar redigitando. Digitei-o só para ter a certeza de que o tinha direito antes de vir dar uma lição que para filme da
manteiga. Então, está tudo bem. Eu removi-o. Você não tem que prestar muita atenção nisso. Não, mas agora nós apenas nos certificamos de que você implementou o registro em lei cabra e nenhum foco nos nossos esforços em nossa função de login. É assim, deixe-me apenas remover esta exceção lançada em praticamente. Vamos copiar o que temos aqui no pedido no registo. Um, pedido. Certo. Então, onde só foi copiar? Estamos todos fora desta quadra, na verdade, Andi. - Sim. Então nós copiamos isso para colocá-lo em, log-in, e eles estavam indo para fazer algumas mudanças porque,
bem, bem, nós estamos fazendo o lado de log em qualquer um dos registros no ponto. Preciso dos pontos de entrada. Certo. Então, em pontos que o login pontos, já
temos o modelo de carrinho para o usuário. Então estamos serializando o objeto cartão. Criamos o cliente em, em seguida, http responsável. Então precisamos que este seja um canto que sou eu que é visto rapidamente em então todos esses erros com distância tão bonito. Estamos a fazer a mesma coisa que estamos a ver. Tente entrar, , passe de novo. O que quer que esteja chegando e nós estaremos criando os formulários fora do curso, então o formulário irá alimentar os dados. Aqui. Nós o passamos no mesmo método post. Mas estamos chamando este ponto final de onda. Verificamos se voltamos. Eu resposta marcado não são um tribunal de sucesso ou não. Mas então há um pouco mais do que apenas furar. Se for bem sucedido. Responsável? Porque lembre-se que quando é um longo tempo, nós estamos recebendo sobre o token em. Precisamos do token, e precisamos armazenar o token para que possamos realizar operações, lançar o aplicativo direito. Alguém tem que adicionar mais algumas linhas fora do cordão. Onde, em vez dos que retornam, o sucesso está entediado? Vou verificar se a resposta não é sucesso. Bom. Tudo bem, então eu quero retornar Falls. Tudo bem, então acabei de acabar com a operação aqui mesmo. Se não foi um sucesso marcou como sabemos que deveria ser. Então acabamos com a operação. Mas então podemos avançar em Onda tentativas toe, obter os dados da resposta porque, lembre-se, a resposta vai ter a placa de resposta, bem como um fluxo de token. Então, se você quiser alguma atualização no buraco estará recebendo sobre os dados como eu não deveria ser d serializando os dados para ir para o repositório base em, olhar para um ou esquecer operações. Certo? Você vê aqui onde temos a resposta para uma generosa. Claro, mas então nós pegamos o conteúdo, lemos a string,
e então nós d c percebemos isso dedo no objeto fora do tipo T t aqui sendo o objeto abstrato que o abstrato. Por que os repositórios genéricos projetaram o dedo do pé. No nosso caso, você sabe, estamos recebendo de volta uma conversa e uma resposta, certo? Então eu posso pegar emprestado essas coisas essas duas linhas fora do núcleo, e eu vou apenas refratar para eles em vez de datilografá-las do zero. Certo? Então aqui eu estou vendo obter o conteúdo em que vai estar aguardando o conteúdo voltando no objeto de resposta. E então ele partiu de volta. Quero ver o Vier. Talkin é igual a Jason. Dot GC depende do objeto no reboque. Nossa classe que criamos conversa e resposta, certo? Surma suportou recebendo Buck a chave token no conteúdo. Estou vendo o que quer que seja a chave, muito de volta para os campos aqui. Então isso é realmente o que estamos fazendo no repositório baseado, no caso de isso não ter sido realmente explicado anteriormente ou você realmente entender a área. Então é por isso que temos que ser falsos. Estamos passando o modelo atual ou o carro. É classe. Tudo bem, então quando avançarmos para obter os autores e assim por diante e livros, você vai entender que é um pouco mais, mas para não, deixe este pré como um pouco de orientação sobre o que está acontecendo dentro disso, Operação. Certo? Então nós estamos serializando, qualquer objeto para gastar através do Jason no reboque, uma classe com campos correspondentes. Tudo bem? E depois que conseguimos isso, eles deixaram mais algumas coisas que precisamos fazer. Precisamos armazenar o token em algum lugar. Em seguida, precisamos alterar os estados de autenticação fora do aplicativo em. Então, depois que nós não todos fora que eu estava satisfeito, então nós podemos apenas retornar True, porque é um ouro tão verdadeiro significaria que tudo foi bem sucedido. Então eu só devolvi o dedo do pé verdadeiro. Então, com base nos comentários que acabei de fazer, temos algumas coisas que precisamos conseguir. Precisamos de um dedo, uma biblioteca que nos permita armazenar o talkin. Certo, então usaremos o depósito loca para isso. Então vamos ter que ir para o novo get e conseguir uma biblioteca. É muito do armazém local do Steve. Em outra coisa que precisamos usar o nosso para fazer é substituir o
provedor de autenticação padrão para blazer. Para que possamos deixá-lo fazer exatamente o que queremos. Tudo bem, então vamos começar com a biblioteca. Então, entrando em novo entrar em nossa livraria, você eu aplicação ou projeto. Em vez disso, eu vou procurar por esta biblioteca, uma biblioteca muito legal e rapper um chamado armazenamento Blizzard. Então eu só vou ao local do Breaux afirma um depósito local de Blazer Dot. E então você pode ir em frente e não saber disso. Assim, isso permitirá que você use o armazenamento local em um navegador para iniciar a autenticação. Falando. Não, isso é um equilíbrio entre usabilidade e segurança porque há preocupações de segurança sobre isso. Mas então, para este projeto, pelo
menos está nos dando um gostinho do que algumas pessoas fazem, do que está sendo feito. Mais avançado, ele precisa pode ser empregado. Mas não quero agitar o processo. Certo. Então, estamos colocando a nevasca da biblioteca no armazenamento, então precisamos inicializá-lo no nosso início daquele CS. E para fazer isso, nós vamos para baixo para configurar serviços no blazer do lado do serviço de Ernie's Dawned. Só vou pôr os serviços ancorados. Adicionar armazenamento loca Blezard. Portanto, isso não nos dá acesso ao armazenamento da biblioteca de blizzard por meio do contêiner de dependência ou de outros
contêineres do COI. Então, de volta ao repositório, eu não posso ir em frente e injetar um novo serviço para que eu possa dizer apenas leitura privada. E então eu fui ligar para o serviço de armazenamento local e ligar para ele. Estou ligando para o armazenamento local de objetos. Então, se você precisa incluir uma biblioteca, vá em frente e fazê-lo em que traria o armazenamento local usando ponto blazer em seguida fora do curso. Precisamos injetar. Andi inicializou e então saiba que nós temos. Podemos usá-lo. Então, o que vamos usá-lo para fazer quando recebermos o token? Tudo bem, então acabamos de chegar a Tóquio e não há dentro desta corda. Ligue para Vier Token. Eu sei que preciso de arrumação. Então eu vou dizer um peso no placar. Armazenamento local ligado. Então o que o armazenamento local me permite fazer é claro são o armazenamento local Um ver se um determinado valores lá. Mas o que eu estou interessado em fazer é sentar em itens que eu vou ver se definir item de frente e, em seguida, isso vai pedir antes de nossa chave Onda um valor. Tudo bem, então a chave que eu vou colocar como falando agradável e simples ou não, deixe-me. Eles têm sido mais oficiais, obviamente fora conversando. Então estou com o passado para o Ken. Então, qual é o meu objecto? Mas o campo é que fala certo? Então, a sensação de que quando ele tem d c depende ele tem aliados dieser no token de campo. É aí que está o valor. Então eu estou configurando um novo item na pesquisa local chamado off token em Eu estou dizendo
falando que falar. Tudo bem, então quando entrarmos em tudo for bem sucedido que obtemos o token, ele irá armazenar isso no armazenamento local, que está em um navegador. E quando estamos testando, você verá na primeira vez exatamente o que isso significa. Tudo bem, então a próxima coisa que queremos fazer é mudar o estado fora do up para o
estado de autenticação off the up, que eu mencionei que vai precisar ainda é escrever algum tribunal personalizado e mais sobre o provedor que é já construído. Então eu estou indo para ir em frente e criar uma nova pasta em Eu vou chamá-lo de provedores Todos os provedores certos, e então dentro de fora provedores. Vamos criar um novo arquivo. Então, em uma nova turma. E eu estou com o chamado provedor de estado de autenticação P I que é um bocado,
mas um provedor de estado de autenticação P I e, em seguida, clicamos. Acrescente e, em
seguida, esta autenticação. Bem, esta autenticação do FBI disse provedor vai realmente herdar alguns apenas vai colocar em um dois-pontos de herança em sua herança do provedor de estado de autenticação. Então você pode copiar e colar isso e tirar o A P I em. Então isso vai exigir que eu inclua uma biblioteca. E uma vez que isso é feito, ele vai saber exigir me fornecer implementa a classe abstrata, que significa que eu tenho que fornecer uma substituição autenticações forward eles fornecem uma classe ou funções são obter autenticação Estado ele afundar são tão praticamente o que essas autenticações que eles forneceram faz fora da caixa é a pessoa autorizada ou não? São autenticados, são loucos. E então, com base na diferença de autoridades que criamos em torno do aplicativo, ele estará dizendo sim ou não. Eles podem fazer isso? Eles podem fazer isso bem, ou eles devem ver isso, eles verão que é tudo para construir. Então vamos lidar com tudo o que quisermos. Não, a razão pela qual estamos substituindo
isso, isso, é que queremos mudar o comportamento baseado no fato de que estamos usando token. Então, quero ver se há um token apresentando armazenamento local e que algo é que esta pessoa está autorizada já estão autenticados, certo. Então, se eu vou ter que estar procurando no depósito local, isso significa que eu preciso do no dedo do pé da dependência. Verifique as histórias locais. Vou ter que injetar em uma loja local da mesma forma que fizemos
na autorização que se sabe. Tudo bem. Ou Repositório de autenticação ativado. Então eu vou ter que sentar meus construtores de SETI ou nossa banheira superior. Certo, provedor
de estado de autenticação ligado. Em seguida, eu coloquei no meu parâmetro para eu armazenamento local em. Então inicializo dentro do construtor. Tudo bem, então agora dentro desta função eu posso fazer algumas coisas, mas então deixe-me apenas dizer isso. Eu vou ter que colocar a captura de tentativa, certo? Então, o que aconteceu? Foi a primeira vez que fiz isso? Passei um tempo imaginando por que não funcionaria. Eu estava recebendo algo sobre renderização e alguns confrontos com o início local. Baseado no fato de todos os senhores Blazer, precisa de tudo para Lord. Primeiro, eu acho que houve alguma falta muito são alguns,
hum, hum, lidar mal com os tempos mais baixos entre as verificações de armazenamento local no cabo do servidor real . Então eu estava recebendo um erro, certo? Então a tentativa de pegar é apenas para garantir que não bata sua vitória quando tudo não é Senhor ao mesmo tempo. Certo? Então a primeira coisa que vou fazer é tentar obter o token que está nas lojas locais. Então, para obter o token, eu vou ter um muito chamado token de salvamento em andamento aguardar armazenamento loca que obter itim uma pia . E ele vai dizer que eu estou nos pegando corda direito em. Então o nome fora do valor são a chave para o que eu quero é off tokens. Lembra-se? Só colocamos quando a pessoa o ama. Uma chave chamada token deve ser criada. Então isso significa que qualquer momento que queremos recuperá-lo estará usando esta função. Obter item. E isso está me dando uma posição árabe precisa ser uma pia. Tudo bem, então. Sempre que conseguirmos, ele será salvo. São armazenados no token salvo. Tudo bem, não, quando eu receber este token, eu quero verificar algumas coisas dentro do token. E eu vou trazer algumas fichas antigas e mostrar a vocês o que eu quero dizer com verificar algumas coisas . Então aqui estão alguns exemplos de fichas, certo? fichas de ar que eu tirei Pete pareciam de testes anteriores. Isso não faz sentido para mim olhar para ele. Não faz sentido para você neste ano um computador que é capaz de decodificar. Tudo bem. Mas então o ponto é que todos fora deles, eles foram incríveis para três usuários diferentes são pelo menos alguns quatro o mesmo usuário, mas em diferentes situações. Mas a informação do cabeçalho é a mesma. Tudo bem? - Não. Entre as paradas completas, você tem a 1ª 4 parada. Eu sou a última parada completa, certo? uso deles é meio que lidar com isso. Tudo bem, temos o que chamamos de carga útil. Se eu apenas clicar duas vezes na seção entre as paradas de comida, nós temos isso como carga útil. Essa carga contém todas as informações que teriam sido configuradas na prisão. O emissor, essa data de validade. Quem? Todas essas reivindicações? Nosso número um reconstruiu nossas fichas. Colocamos um monte de reivindicações. Todas essas informações de bits são armazenadas e acessíveis dentro da carga útil. Agora usando Não, mas mais mais, eu posso simplesmente ir para plugins, ir para a mãe. Ferramentas na base 64 d Acorde em, então. Isso parece um pouco melhor onde você vê sub com o valor U c j t I. Você vê identificador de nome. Você vê o papel, certo? de A datadevalidade do perito ou, pelo menos, algum tipo de valor. Isso representa uma data de expiração no ISS. Seu que era o anfitrião local Loca mangueira. Certo? Andi pode olhar. Você vê isso? Todos eles vendidos Be um 64. Decodificação é meio matemático. Então este seria sentir porque há Ahmad para o mês que precisa acontecer, em seguida, recebeu este vai trabalhar básico antes. Tudo bem, então sempre que você pegar essa flecha, você quer dizer Neto e um são dois iguais sentidos. Acho que este requer sinais iguais. , Andi, não
sei se foi tentativa e erro, certo? Então, os meses para os quais o mod deve ser dois ou três. Então, se não for nenhum dos dois, acho que não vai funcionar. Se ainda é, ele precisa de um lado igual, é fazer ele precisa igualar científica Street precisa de um, algo assim. Mas a questão é que este era um tipo certo de reivindicações admitidas, e toda essa informação está vindo dentro das fichas. Então precisamos ser capazes de Paris esses tokens para tomar decisões quando estamos recebendo o estado de
autenticação. Tudo bem? Não, A primeira decisão que eu quero tomar depois de tentar recuperar este token é se há mesmo um token. Então, se eu vou apenas usar minha biblioteca de strings e ver é nenhum ou espaço em branco. Então, se não é espaço ou espaço em branco salvar dedo do pé pode salvar token, certo? Então não há nada lá dentro. Eu não recuperei nada. Procurei e não consegui nada de volta, então preciso retornar um novo
estado de autenticação , acertar minha rotação, seu estado de autenticação. Em seguida, a autenticação permaneceu lança em princípios. Então isso significa que quando um princípio está presente, isso significa que eu uso lá está presente. Então, se eu apenas passar em um novo princípio de reivindicações, tudo bem limpa princípio em então e o princípio de reivindicações pode ter em branco. Ou você pode inicializá-lo com uma identidade limpa, certo? Então eu vou passar em uma identidade em branco porque eu queria ser extremamente claro que não
há ninguém aqui. Tudo aqui está vazio, ninguém é presença ou o estado de autenticação é que não há ninguém. Isso é basicamente o que isso está dizendo. Então isso ainda está na aplicação da aplicação Blaze que ninguém é presidente. Não está ninguém em casa. Então você não precisa fazer nada. Finja que ninguém ama estar certo. Então, avançando, entanto, podemos ir em frente para obter o conteúdo. Então eu não mostro todo o conteúdo fora do que eles falam em que é necessário para a direita em. Uma coisa que queremos fazer é também verificar o prazo de validade,
Então, se o token expirou, então queremos dizer que ninguém é amado e eu também quero removê-lo. Então, se ele estiver lá, mas expirou, quiser removê-lo de lá em diante, queremos alterar a autenticação. Estados não autenticá-lo. Então, a fim de Paris o token eu tinha financiador agindo em algum tribunal de escrita para fazer toda a análise. E isso é que eu sei sobre o sinal de igualdade e o básico antes e assim por diante. Mas há uma biblioteca que este presidente pode nos ajudar a superar isso. Então, em vez de colocar você através de todo aquele cordão, nós vamos apenas para o novo get de novo. Será que eu fiz você ficar eu fiz Então deixe-me apenas lançá-lo você ficar rápido e eu vou estar procurando por deixe-me ver se eu posso apenas procurar o ponto jwt de Tolkien. Espero ver a biblioteca. Lá vamos nós. Então sistema essa identidade, não modelo. Isso é tokens que Jo Beleza. Então, basta ir em frente
e instalar a biblioteca, e então
podemos voltar para Bem, precisamos começar esse CS em. Vamos começar que a Sears sabe que queremos ter acesso à biblioteca dentro dos contentores de dependência, certo? Então eu vou adicionar uma instância com escopo para que eu possa apenas fazer isso abaixo do cliente GDP em com outras escolas. Instância fora do J Liberty falando centenas. Então isso vai exigir que eu coloque na minha declaração de uso. Tudo bem, então isso vai me permitir usar isso em qualquer lugar quando eu injetar em alguém para ter o dedo
injetado no provedor do estado também, mas eu não vou ter que repetir muito o tribunal. Então, são continuamente criar objetos. Deixa-me despachar-me e fazer uma leitura privada. Somente Andi incluem o manipulador de segurança JWT. Nós estamos chamando isso no token placar, manipulador. Então você vê, há momentos em que você terá que fazer o contrato no serviço para obtê-lo no contêiner de
dependência, e então há tende qualquer tipo de uma única instância, e ele funcionará da mesma forma, Certo? Então, é claro, depois de colocar o objeto, você precisa inicializá-lo. Então eu coloquei lá. Em seguida, inicializamos manipulador de token, Então falando 100. Tudo bem, agora que temos esse objeto manipulador de token, sempre que quisermos fazer algo relacionado dentro disso, eu posso ligar. Então o que eu quero saber é ler o conteúdo sobre o quê? Para ter o nosso dedo do pé pode conteúdo igual a ir para ver sublinhado Token Handler docas em seguida a partir daqui, é Oh, digamos, você
pode lê-lo? Queremos criar Você quer criar uma habilidade de jade? Você tem um monte de opções. Então, aquele que eu quero que seu jwt leia falando, então tem a passagem da mesma unidade token. Então esse telefone, filho. Então isso nos dá um objeto chamado token de segurança JWT. Então, a partir deste objeto, eu posso dizer, Qual é o valor de expiração? Tudo bem, até agora expirar. Ele vai saber analisar ou me dar. Deixe-me apenas ter certeza que você recebe o meu Sim, apenas verificando a ortografia para que ele vai analisar esse valor no reboque. O tipo de dados que eu quero. Então, se eu disser que não é válido para fazer que este fora das reivindicações que foi enviado sobre nós vemos que ele tem uma data hora. Vai me dar uma data. tempo recebe o grande valor de tempo. Então, se eu disser dedo válido é igual a expirar, então eu posso verificar se a data hora não ou expirar é menor do que o grande momento. - Não. Então lembre-se que o tempo de validade era algo que tínhamos cidade, é
isso. Se adicionamos cinco minutos são adicionados cinco dias, qualquer que seja o tempo de expiração é, eu vou obtê-lo no valor diurno e eu estou com completo sem on. Se nenhum tem um valor maior do que o tempo de expiração era então. Gostaria também de dizer que ninguém é autenticado, porque seja lá o que for falar,
já não há valor. Mas, além disso, também
vou querer removê-lo do armazenamento. Então eu posso ver um peso na pontuação, ponto de armazenamento
local e então você pode ver remove Eu sou uma pia. Tudo bem em. Então ele vai me pedir a chave e a chave está fora de falar. Portanto, se o token expirou, remova-o. É o que estamos fazendo, certo? Então, antes de eu não fazer isso e o símbolo estava lá, a pessoa estava amando porque enquanto conversava estava presente, então estávamos transformando estado não autenticado para a pessoa. Mas não eram tudo em que clicavam. Havia, eles não foram capazes de entrar. Tudo estava congelando. E quando entramos e investigamos vimos que estamos recebendo sobre o 401 porque o token estava experimentando um P. Eu estava rejeitando o token, mas nós não tínhamos a instalação no dedo do pé do aplicativo, você sabe, amo a pessoa fora se o token é inválido. Certo? Então o que aconteceu é que uma vez senhores de aplicação, causa disfunção, e então faz essas verificações que estamos fazendo. Então, se o token estava lá, mas expirou, nós o removemos. E então amamos quem foi registrado em memorandos longos. Ninguém está logado nesse ponto. Tudo bem, então somos forçados. Os usuários têm toe re autenticar. Se o token expira na mesma maneira, se não houver nenhum token, enquanto eles só precisam se conectar se quiserem cuidar das operações necessárias Agora, a próxima coisa que eu quero fazer é obter as reivindicações do token. Porque eu não vou apenas colocar para obter limpas de tão ken em diante, em
seguida, construir objeto de usuário autenticado em, em
seguida, retornar, Autenticado, autenticado. Primeiro são objetos, certo? Para que essas sejam as coisas que queremos fazer. Mas então a coisa é que para fazer com que as reivindicações falem, e isso é algo que eu vou querer fazer em várias ocasiões. Então eu vou apenas criar em função para isso separado. Oh, a
propósito, deixe-me antes que eu siga em frente para a captura. Eu não quero jogar porque então isso iria quebrar o programa. Então, se alguma coisa no programa falhar, digamos que devolvemos os estados de autenticação sendo nada, certo? Então, não estrague o programa como todo mundo, certo? Então deixe-me seguir em frente. Então eu estava dizendo que eu preciso de uma função ou eu quero uma função que vai apenas obter todas
as reivindicações do token, certo? Porque isso é algo que vou usar mais vezes. E também servirá a um duplo propósito, compensando uma reivindicação pop articular que não tínhamos antes. Então nos permite criar essas funções que eu vou economizar em particular. Vou usar uma lista,
uma lista fora da reivindicação. Tudo bem, então o tipo está limpo, então eu quero uma lista limpa, e eu quero chamá-lo para que a Empire grite sobre o que eu estou passando. É esse objeto, que é nossa conversa e conteúdo. Tudo bem, então o tipo de dados é J W T segurança dedo do pé. Esse é o tipo de dados que o objeto estava passando e, em seguida, para obter as reivindicações. É muito simples. Então eu vou explicar por que eu estou passando pelo incômodo de ter ah inteiro, hum, função para ele quando é realmente simples. Alguém para salvar reivindicações de ferro é igual ao conteúdo do token. Lembre-se, conteúdo do
token, as mangueiras de objetos, tudo o que precisamos saber sobre o nosso token, tudo bem, mas então eu posso vê-lo encaixado lá. Nós temos um campo chamado reivindicações, que está nos dando a lista off tokens todos na reivindicação do tipo beta em seu em inumeráveis Bem, ele está nos dando uma inumerável off reivindicações, certo? Mas eu quero um mínimo porque eu vou modificá-lo um pouco do que eu não posso modificar o inumerável o mesmo onde pode modificar liberado direito? Então, vou colocar na lista. Mas então eu vou dizer reivindicações que o anúncio em que estou adicionando uma nova reivindicação. Muito bem, Onda, esta afirmação vai acabar. Tenha o nome do ponto do tipo reivindicações em Dover. Quando entrarmos, eu explicarei que você verá exatamente como tudo isso entra. Então, tipos limpos. Desculpe. Não limpar Stipe ou tipos limpos que o nome no valor que este nome é quando tohave está falando conteúdo. Tenho assunto. Tudo bem. Então, o assunto seria o que vimos. Um submarino no decodificado. Então sub que é e-mail. Então eu estou dizendo que o usuário principal é a reivindicação. Uma das alegações que este usuário, quando ele é construído, deve ter é o nome sendo igual a qualquer coisa com a Páscoa como o assunto. Tudo bem, que é a carta de e-mail iniciada, nome de
saudade ou o que quer que seja, então não podemos devolver. Portanto, não há análise. A lista para é que eu precisava fazer esta linha, e eu não posso fazer isso em inumeráveis. Então saiba que temos,
ah, ah, função do dedo do pé, obter as reivindicações. Ou seja, sempre que conseguirmos limpar e chamarmos essa função, teremos todas as reivindicações. Eu entrei, bem como a adição fora do nome sendo enquanto a água estava no assunto. Tudo bem, então, não, eu posso construir o usuário, então eu vou realmente fundir esses dois em um, certo? Então nós só os fundimos bem. Alguém para construir o objeto de usuário ou eu vou salvar nosso usuário é igual. Então você reivindica princípios. Então, praticamente tudo o que tínhamos apareceu, certo? Então, na verdade, só vou copiar esse incidente, redigitando um pouco. A visão do nosso uso é igual a um novo princípio de reivindicações. No entanto, nós realmente vamos ter, ah reivindica identidade com um valor. Então as identidades das reivindicações que têm essas alegações Desculpe vai ter reivindicações de Paris. Tudo bem, quer saber? Deixe-me fazer isso um pouco mais limpo. Então, deixe-me dizer que as reivindicações de incêndio são iguais. Dedo do pé da função. Chamar fogo do dedo do pé grita nossa passagem no conteúdo token. Tudo bem. E depois que você receber as reivindicações nesta variável, então vamos dizer que a identidade das reivindicações tem essas reivindicações em qualquer lutador. Fazer. Vamos, olhe para o construtor. Você vê isso? Estamos perguntando se está pedindo a cobrança das reivindicações, então eu posso dizer a chave. Que os associados são o tempo de autenticação, que neste caso era JWT. Certo, então temos esse usuário ligado, então o próximo Lyon diz que devolvemos os usuários autenticados. Então vamos devolver tudo o que temos aqui. Toda essa declaração de retorno é aplicável, mas em vez disso fora um I em branco em branco reivindicações princípio e identidade. Eu vou retornar usuário porque é o mesmo princípio de reivindicações com uma identidade com reivindicações desta vez em. Então eu estou apenas retornando esse objeto dentro dos estados de autenticação. Então isso tudo está dizendo que pegue a ficha. Se não há tempo para falar, ninguém está amando. Se houver um token ainda data de validade, se ele tiver expirado, remova o token. Ninguém é amado. Se nenhum desses for atingido, significa
que você quer receber as reivindicações. Obter o usuário, construir um usuário. Andi, diga que alguém é adorável. Isso é praticamente tudo isso. Tudo o que você vê. Você nunca fez um pouco fora, colocado para saber. Mas temos um pouco mais, e então podemos fazer uma pausa e seguir em frente para as outras atividades, certo? Então, em seguida, eu vou dizer, faça login. Então, eu vou criar minha própria função dentro deste provedor de estado de autenticação quando vemos a tarefa pública enfrentando, amo o sim, tudo bem. Então, quando ligarmos para entrar. Tudo bem, o que eu quero fazer é pegar o mesmo símbolo, certo? Então lembre-se que temos a função de login no repositório. Certo? Então eu disse que eu queria mudar o estado fora do up para fazer isso, eu preciso chamar algo dentro de um p. Eu fiquei provedor, mas eu não posso simplesmente chamar o get autenticado. Veja, isso está ficando eu preciso definir o estado de autenticação manualmente. Então eu estou criando ah, chamada de
função logada ou longa no que quer que você queira chamá-la. Mas esta função vai ser o que chamamos no final de tudo isto como um p eu chamo e Paris ing e assim por diante. Então eu estava mudando o estado. Então vamos construí-la juntos. Então, quando eu digo logado, a primeira coisa que eu quero é o mesmo token. Então vamos recuperar isso do depósito local, certo? Tudo bem, porque nós acabamos de definir,
tudo bem. Acabamos de colocá-lo no depósito local. Então, o que? Estou alterado no estado de autenticação em. Digo, sem dúvida, eu poderia ter passado a ficha, mas tudo bem. Quero dizer, só para ter certeza de que somos consistentes se o colocarmos aqui, vou buscá-lo no armazém local. Eu também vou querer analisar a reivindicação, então eu preciso colocar o conteúdo em. Então eu fui fazer praticamente a mesma coisa que eu fiz lá em cima, onde eu vou analisar as reivindicações direito sobre. Então, uma vez que eu tenha as reivindicações, eu vou construir meu usuário. Então isso é lembrado. Isto é “get”. Então, se eu fechar o navegador, então eu voltar para o aplicativo. O que isso está fazendo é que quando o aplicativo sabe que causa para obter que vai
verificar para o mesmo token e, em seguida, lembrar o aplicativo fora quem é amado em, isso é o que está acontecendo. Aqui é onde eu estou saudando a pessoa em usuários de habilidades do Sul. Então, quando você fizer login, isso é o que vai ser chamado e construir seu usuário pela primeira vez. Tudo bem, então, depois de eu ter construído o usuário tão praticamente todas essas linhas fora da quadra tipo de olhar como um pop de barcos com menos verificações no meio. Depois disso, vou salvar nosso estado fora. Então eu fui para dizer tarefa a partir de resultados. Novos estados de autenticação tão praticamente que é a mesma chamada de função. Mas eu estou apenas verificando o que off autenticações que é depois que eu empacotar essa informação em seguida, com base no que eu recebo de volta desta chamada de função, eu vou saber, notificar o aplicativo fora da mudança de estado. Então, você sabe, se você colocar as declarações se a pessoa é amada e então mostrar isso de outra forma para que todas essas ações sejam tomadas uma vez que você notifique a mudança de estado, tudo bem? Não, nosso próximo seria lei cabra, e então podemos chamá-lo realmente não chamado Rafto implementado no repositório também publica Put Lagos já que estamos aqui tão longas notas é basicamente apenas mudar o estado . Se não havia ninguém lá praticamente certo, então eu estou basicamente construindo um diretor de reivindicações em branco e eu vou fazer isso em
Chamar ninguém. Então, ninguém está em casa. Estas duas últimas linhas praticamente ainda são lado aplicável de copiar e colar aqueles. Mas em vez de passar usuário, o que obviamente não existe aqui, vou deixar ninguém. Então, vamos notificar isso. Então não somos uma aplicação diferente do Estado. Mudar isso? - Não. Há um princípio em branco sobre nenhuma identidade, nenhuma reivindicação disponível atualmente. Tanto tempo que a pessoa aguenta. Tudo bem, então terminamos com o provedor do estado. Vamos voltar à nossa positividade e depois acabar com esta actividade. Então, você vê, foi um pouco fora do trabalho. E então quando voltarmos com antes de cruzar na interface, certo, Então depois disso e eu quero mudar o estado fora do up, isso significa que eu preciso do provedor de estado de autenticação. Então não, temos que voltar atrás, injetar essa dependência. Então eu vou para lá em, em seguida, dizer que eu quero um novo objeto, ler apenas provedor de estado de autenticação e inicializado que fora do curso em ou construtor. Então temos autenticações, o provedor e nosso objeto em. Então o que acontece é que precisamos chamar Ah, provedor de estados de
autenticação toe realmente fazer o login certo? Então, autenticações, eles fornecem pontos. Mas quando o faço, o médico notou que só estou a melhorar. Um evento sobre o estado mudou, Mas eu também estou recebendo o status de autenticação get Sink direito. Alguns foram depois tipo off, fazer um override barra typecast estavam ao lado dele. Vou ter que informá-lo de que é realmente o provedor de autenticação A P I, que é a minha substituição, que tem as opções personalizadas. Certo. Bem, Bem, então tudo o que preciso para embrulhar isto numa brisa para que veja faça um grande objecto. Então este é o tipo de fundição, então. Eu só estou vendo esse tipo todo lançar um objeto. Tudo bem, então eu vejo pontos. Então vejo logado, certo? Então eu posso dizer “amor “ser “semi-cólon”. Tudo bem. E é um síncrono depois de como ele. E então estamos prontos para ir e apenas ter certeza que é um cartão SIM. Bom. Então esta neve vai dizer que depois de sentar o armazenamento local, em
seguida, no usuário Tudo bem, Outra coisa que você provavelmente vai acabar fazendo é sentar os padrões solicitados de Então lembre-se que cada vez que chamamos o a p I, ele precisa ter o cabeçalho de solicitação padrão. Então temos o pedido padrão. Alimentadores. Assim, os clientes que antes questionadores tipo sendo R I s clientes PIB que descendo r p uma comunicação, não autorização. Certo? Então precisávamos desse limite de aut
41. Configurar o usuário de Setup 2: Ei, pessoal, bem-vindos de volta. Estamos, em parte, para compensar nossa funcionalidade de login de log. E nós fizemos um pouco fora do trabalho no vídeo anterior e nós temos um pouco de trabalho a fazer neste. Mas vamos direto para a escola. Vamos começar no início desse arquivo CS. Então neste arquivo, eu preciso adicionar à escola nos sentidos um para o nosso provedor. Então acabamos de criar o provedor de estado de autenticação do FBI. Então eu preciso adicionar escavado para isso em então. Depois disso, eu tenho uma linha um pouco mais complicada para a direita onde eu fui para ver serviços que na lata escola nas autenticações originais que eles fornecem em, Então nós p divertido para curto pode ser provedores. Eu acho que você pode olhar para cais, começar para provedores, e então nós estamos vendo obter o serviço necessário. Então, basta adicionar essas duas linhas nas autenticações de AP I da escola. Eles forneceram Onda tinha se escondido. Indicações fez provedor em. Em seguida, vamos em frente e colocar na opção p para obter o serviço necessário nessa classe personalizada. Tudo bem. Ninguém está ficando um pouco mais divertido. Tudo bem. Então, a pequena escola era sobre páginas e nós vamos começar a criar sobre páginas de registro. Então, eu estou indo para o pé. Acrescente. Vou adicionar um novo item, e são componentes ou criar componentes de Goto. Weber é um componente, e será chamado Log na navalha. Então eu vou em frente e adicioná-lo em uma vez que ele é criado a primeira linha fora do tédio, quando a mudança é a página, então nós vamos deixá-lo saber seu caminho para ser o registro de barras. Eu também vou em frente, indo para ir em frente em injetar um, o repositório de autenticação Onder, o gerente de aviação nav em Eu estou chamando o objeto Navegação do gerente. Acho mais fácil de ver. Certo. Então agora, gerente, o que vemos aqui, onde estou pegando as linhas vermelhas porque preciso incluir literatura, amigos e o registro. Nós realmente colocar na instrução usando manualmente. Tudo bem, então deixe-me apenas copiar o sul foi precisar deles mais tarde. Você vê como você pode fazê-lo sem a necessidade de colocar as instruções usando cada vez. Mas, por enquanto, vamos trabalhar com isso. Tudo bem? Então não eu tenho tudo lá em, então eu vou apenas configurar este formulário para apenas no meu formulário de inscrição. Então, na verdade, eu estou indo apenas para vir aqui para copiar tudo, até mesmo o cordão. Vou copiar tudo porque vai ser bem parecido. Então eu não quero gastar tempo redigitando coisas que já têm. Estou com o ritmo, e depois passamos e afinamos as diferenças, certo? Então, em vez de ver o registro, não, ele vai ver um login. Tudo bem. Algo deu errado com a tentativa de registro. Hum, isso vai ser tratado registrando em vez de desligar o registro em. Em seguida, a próxima alteração que vou fazer é não preciso do campo de confirmação de senha ativado. Em seguida, o botão não vai dizer, enviar o que vai ver um registro em mais de registo. Ele realmente deveria ver o registro. Então eu, só o que eu não posso mudar de novo. Me esse troco, se quiser. Claro. Tudo bem,
então, movendo-se na mão Logging obviamente não existe. Alguém para mudar sobre a tarefa do dedo do pé log-in. Meu modelo não é modelo de registro desta vez, mas é modelo de registro. Então eu estou indo apenas para alterar o modelo de referência toe log modelo sendo igual a uma nova instância off modelo de log on. Então todos os poucos não devem voltar sessões, ter quaisquer problemas com os aldeões e mapeamento de senha de volta Andi por escrito este marcou , Eu percebi que eu realmente não preciso deste campo e eu vou mostrar-lhe por que eu não preciso este campo. Então vamos usar a resposta que é um valentão de alguma forma para determinar se devemos mostrar que a era não é pista. Então eu tenho a alça do amor e do modelo. Registrar lagoas de vírus é igual aos pobres Ofri registrados. Agora estamos passando por cima de um modelo. Então lembre-se, o login não vai dizer e deixe-me apenas voltar para o serviço rapidamente para que possamos refrescar nossas memórias quando ligarmos. A função de registro vai obter os dados, enviá-lo para cima na avaliação de solicitação. Se fosse verdadeiro ou falso, então vamos fazer todas essas coisas maravilhosas para entrar na pessoa depois, certo? Então, porque eu estou recebendo de volta nosso ouro aqui eu posso dizer se resposta, então gerente de amor. Isso é gerente suficiente, que significa que se suas tempestades de resposta assim é verdade, se eu ficar verdade, eles navegam para a casa direita da mesma maneira. No registro eu tinha voltado para o boxer ido e colocar barra log na direita Então, em vez disso, off navegando para casa, eu disse. Agora temos que cortar o registro depois do seu registro, o que para mim é mais lógico. Então o que estou dizendo aqui é que se a resposta é positiva, então vá em frente com a dívida. Navega para casa. Nessa altura, a saudade realmente mudaria o estado em tudo fora do usuário. Então eu posso ver um outro Bem, então eu realmente não preciso disso mais. Então, se a resposta, então, nunca escapar, certo? Mas então o que eu posso mudar parece que eu posso ver se não resposta. Então deixe-me só pegá-los. Eu pensei que sim. Certifique-se de que não estou abortando ou algo assim. Se não resposta,
Em seguida, exibir isso o que significa respostas após as quedas para este ser exibido. Mas não está declarado em lugar algum, então vou declarar partes privadas. Booleano chamado resposta sobre ele vai ser o que o verdadeiro inicialmente certo então. Então, se for igual a true e a página carregar, então isso não avaliará o enxoval em Veja a mensagem de erro? Quem são então? Estou dizendo que a resposta, que inicialmente tem um valor verdadeiro, está indo embora para os resultados do registro. Então, se longo e retornar verdadeiro, isso significa que isso não mudou. E isso ainda é verdade quando chegar aqui e nós nunca escapamos. Se o campo de login isso não é falso, então isso não aconteceu neste estado vai mudar, certo? Então isso é tudo. Blazer dinâmico faz essa coisa. Uma vez que o estado muda, uma vez que o valor muda em qualquer lugar que eles têm uma instrução if ou algo com base no valor, ele irá reagir automaticamente. Tudo bem, então isso só tem conteúdo em fogo, menos linhas fora da quadra. Eu posso apenas voltar para registrar e refatorar da mesma maneira. Tudo bem, então eu vim aqui e fiz as mesmas mudanças. Declarei resposta de touro. E lembre-se, se você sentir para colocar em público ou privado no objeto que você está declarando, ele automaticamente se tornará privado, certo? Então estávamos lá fora, a resposta da tentativa de registro. E se for bem sucedido que nunca conseguimos fazer login Ondo,
caso contrário, ele irá exibir ou mensagem de erro. Diga, veja o que eu fiz. Eu repeti esta carta em você ver todo nós podemos torná-lo Ah, um pouco mais dinâmico. Então eu não tenho que repetir isso o tempo todo. Então isso é para nossa tentativa de registro. Vamos fazer outras mudanças interferentes enquanto estamos aqui. Vamos passar por cima do ponto Razor. É assim que você está em cima que a navalha deve ser. Então queremos ter rotor. E teríamos mudado esta seção para dizer autor, como road View on teria embrulhado a vista antiga leigos dentro de
estados de autenticação em cascata . Então, eles serão responsáveis por permitir que ele imponha autorizações nos diferentes componentes de
navalha que você estava construindo. Então, depois de terminarem as modificações, podemos ir para o nosso menu. E se você se lembra, nós tínhamos criado alguns links, hum, registro e registro. Está sob os dois fios para ir onde eles devem ir. Mas a realidade é que ninguém realmente quer ver registro e registro. Outras vezes você está amando, você provavelmente quer ver um 16. Vendo que você é amado estar em um botão de logotipo. E se você não está sendo, então você quer ver o login e se registrar. Então nós vamos modificar nosso menu para exibir os diferentes itens com base no status da pessoa fora da indicação. Tudo bem, então o que eu vou começar por remover esses dois enquanto eu estou cortando, não deletando, vou cortá-los porque eu vou usá-los novamente em seguida, na forma mais confiável. Vou criar uma nova palestra, e vou chamá-la de autorizada. Visualização autorizada. Tudo bem, então vista autorizada aberta e
feche . Dentro fora. Autor, como você pode ver autorizado. Tudo bem. Assim, observou uma pessoa autorizada ver nesta seção versus o que não é autorizado pessoa deve ver nessa seção. Então, não estou autorizado. Pessoa seria a pessoa a ver sobre registro e registrar links, certo? No entanto, alguém que é autorizado e eu posso copiar e usar pelos mesmos aliados são se você perceber que eu estou mantendo o mesmo aliado com uma classe e, por isso, é o mesmo design. Mas o que eu estou fazendo neste divertido sobre o porquê pessoa? Andi, estou exibindo o nome da identidade. Então lembre-se que quando estávamos analisando a reivindicação e eu disse que eu precisava adicionar uma limpeza especial para o nome, que teria o valor da costura como um assunto, que é o e-mail, isso é o que isso é, Certo? Então, digamos contexto é usuário essa identidade, esse nome. Estamos tirando esse nome da lista de limpas que adicionamos ao usuário. Tudo bem, então é isso que é. Então, quando alguém está autorizado, eles vão ver que, assim como outros seis neste será para tentar logotipo. É outro L. Eu acabei de copiar N P. Então eu acho que eu estou mudando aqui é que o treff é Lagos. Este não tem nenhuma viagem porque nunca chegará a lugar nenhum. Mas este vai para o barco do amor. Temos o nosso fiado. Eu só usei em nosso círculo esquerdo indicador seta para trás para saudade haute. Então esse é o nosso próximo componente para navegar no logotipo do dedo do pé. Então eu preciso de um componente que é chamado Lagos sob usuários são. Vá em frente e clique. Adicionar novo item em que estamos criando um mais novo é um componente chamado barcos do amor. Tudo bem, em seguida, amar o que realmente vai ter um tribunal muito simples? Por uma questão de fato, deixe-me apenas Bem, deixe-me remover a indústria. Não há nada que precisa ser exibido em iria substituí-lo com a rota da página, que é cortar votos de amor. Tudo bem, então. Vou ter duas coisas injetadas algumas sem a minha declaração de uso para os meus contratos. Fui ferido no repositório de autenticação no gerenciador de navegação. Tudo bem, e então dentro disso nós vamos ter em sobreposição para ah, função que é disparada quando uma página é carregada. Então estamos vendo protegido em uma tarefa síncrona em inicializado um dissipador direito em Então o que isso faz é dizer à página o que deve fazer uma vez que é inicializado. Eu ia dizer que quando você for inicializado, então eu quero ligar para La cabra no meu repositório. Então eu quero navegar nosso caminho também na tela inicial. Então Lagos, lembre-se, mudará o estado de autenticação para ninguém em casa. Em seguida, basta navegar para casa em, em seguida, o resto fora das vistas de autorização e tudo vai começar no lugar porque o estado de autenticação mudou. Mas eu estava um pouco e tem sido um pouco fora do trabalho. Então vamos em frente e fazer uma compilação só para ter certeza de que nada está quebrado. Depois de ter chegado a compilações bem-sucedidas. Os dois projetos estão sendo construídos com sucesso? Vamos ver o que está acontecendo. Então eu vou no meu depósito de autenticação de rasgar. Eu vou colocar um ponto de ruptura aqui no final, recebendo a resposta são, em seguida, coloca que a primeira declaração foram as respostas de voltar e eles estavam indo para ir para o barco ancorado e garantir que você tem vários projetos. Eu faço inteiro. Por alguma razão, eu aceitei. Além disso, eu fui para ir em frente e sentá-lo novamente. Desculpa ter de recomeçar, mas vou guiar-te pelas escadas outra vez. Apenas no caso de você estar em meus sapatos vai dedo do pé propriedades fora da solução em, em seguida, sob início do projeto, você selecionar múltiplo em você vê, começar em, iniciar o nosso é um P e você, nessa ordem, clique em OK em, Então vamos tentar de novo. E assim temos sido aplicações maravilhosas. Então você vê que nós movemos o log em reboque acima da casa, são bons em linha reta. Vamos tentar entrar. Então vamos fazer login primeiro como clientes que livraria ponto com que está tentando fazer logon. Então vamos atirar pontos de Arberg. E quando o fizermos, podemos avaliar a nossa resposta. Então, quando eu passar o mouse sobre a resposta para ver que eu estou recebendo um status ok sobre se eu descer para o conteúdo Bem, tudo bem, vamos dar-lhe algum espaço. Então deixe-me ir até a linha onde está indo. Toe tentando recebe o conteúdo. Tudo bem, então se eu olhar dentro do conteúdo, então eu vejo um símbolo naquela conversa e corda, certo? Então, como eu disse, porque o campo está falando e a string é lá foram d serializá-lo em
resposta token , que tem um campo para o token. Então, quando eu chegar à próxima linha, nossa variável token é ninguém para ter a string. Tudo bem, então lá vamos nós conversando são objetos falantes. Nosso saber como é essa corda chamada token. Em seguida, vamos guardá-lo no armazenamento local. Então eu estou indo para ir e pulei para a última linha aqui. Foram devolvidos verdadeiro em. Eu só vou mostrar a vocês dentro do navegador no armazenamento local. Então, se eu clicar com o botão direito, vá para inspecionar elemento ou ferramentas de desenvolvedor para que você possa dispersar se eu tiver f 12. Desculpe, mas quando você vai aplicativo em, em
seguida, no aplicativo você vai para o armazenamento local e, em seguida, o site que você vai ver que você tem isso nos falando. Certo, então este é outro que eu tive de outros experimentos. Vou deletar que não é necessário. Mas temos off token. Então você vê aqui está tentando se reconectar ao Serverless porque estamos aqui segurando ou progredindo olhando para todo o trabalho manual. Então deixe-me pressionar se eu tiver que continuar, então eu acho que chuteiras registrando mais de uma vez. Então, quando ele realmente entra, você sabe o que é Não. O estado de autenticação foi alterado porque estamos vendo as gravações do nome de exibição. Lembre-se de onde foi adicionado o assunto como a reivindicação de nome em que é o que está sendo exibido aqui no dia. Nós temos os botões de logotipo, então não, estamos confiantes de que nosso longo em funcionalidades trabalhando que ele foi analisado com sucesso são as reivindicações do token em Obtemos a informação da maneira que precisamos dela. Tudo bem, então se eu for em frente e clicar em Lock Go, vamos ver o que acontece. Mas não tem ninguém em casa. Está tudo em branco e estamos de volta. Ative o Estado autenticado. Tudo bem? Não, eu quero sair das pessoas mais do que eu vou fazer um experimento do menu para que
possamos compartilhar isso juntos. Então, no menu do valete, eu vou adicionar outra seção para o autor como uso apenas para experimentos. E. Então eu quero mostrar buraco. Você pode mostrar algo para um papel e não para outra regra. Certo? Então eu vou criar outra exibição autorizar. Mas desta vez ele vai ter um parâmetro são um atributo chamado Regras é igual Administrador. Então, dentro disso, eu só tenho algo chamado “reconhecidamente chorado”. Então eu quero fazer outro assim. E, em seguida, este vai toe ter a regra para o cliente em. Então eu vou dizer costume cedo. Então, isso significa que quando alguém que é um administrador registra e deve estar vendo o
link de administrador quando um cliente o ama,
ele deve ser visto personalizando em. Quando você não está amando, você deve ser visto. Você não deveria ver nenhum dos dois. Tudo bem, então vamos em frente e voltar para o teclado. Então vamos tentar de novo. Então, faça login. Onda foi fazer login como Delia, que é um cliente, e isso em meus pontos de pausa. Vou remover o ponto de ruptura e deixá-lo continuar em Dwell. Não estamos vendo o que esperávamos e suspeito que seja porque a área não tem uma regra de
cliente ligada a ela. Mas eu vou apenas ir em frente e obter as cadeias de token para inspecionar elementos foram o aplicativo. Então eu só vou desmascarar este em vez disso, ao tentar as pessoas aplicarem isso Dê uma olhada na chave na auditoria Art Deco nem
no pad on. Se olharmos, vemos o “t” o símbolo. Então, temos o assunto tão bem sucedido. Mas então você percebe que não há nenhuma regra anexada, certo? Então, se você olhar para o anterior que você vê agora nós temos o papel de administrador regras em então aqui ela não tem a regra, porque eu acho que em que talvez nós a criamos antes de
configurar a seção de regras. Então não há nenhuma ligação real a ela. Não há reivindicação. Então nada foi disparado sobre a situação das autorizações, certo? Então vamos tentar outro usuário que provavelmente tem um cliente vai anexado ou, bem, deixe-me apenas tentar adicionar significa, primeiro lugar, então deixe-me tentar o login admin, e vemos o meio do anúncio aparecendo. Então, pelo menos sabemos que ele está funcionando de qualquer forma, certo, então a intromissão do anúncio aparece. Se admitir ser um curto para você, então talvez você possa voltar atrás para garantir que você configurou o usuário administrador se admin não fez login. Além disso, lembre-se que se você estiver usando o administrador que tivemos que ceder, um, isso é que eu teria, ou teríamos definido o nome de usuário. Então ele está realmente olhando no usando o campo interno quando você está fazendo login nele. Baseado no tribunal das estradas no controlador AP I do usuário. Está entrando usando o nome de usuário e a senha, certo? Então eu acredito que quando fizemos os usuários de sementes, dissemos admin é o uso e humano e admitir ponto com livraria é o endereço de e-mail, certo? Assim como certifica-te de que esse é o carrinho dele. Você sempre pode entrar no banco de dados. Andi coloca o nome de usuário para ser o endereço de e-mail, então colocá-lo tanto para o normalizado usando-o no nome de usuário e no Dragon, e você deve ficar bem. Caso contrário, você provavelmente pode simplesmente ir em frente e tentar criar um novo usuário administrador no. Então tente isso de novo. Tudo bem, mas pelo menos vemos que a funcionalidade de registro está funcionando? Nós vemos onde a autorização de regras está funcionando, como esperado. Deixe-me tentar um usuário diferente, ter durante uma livraria ponto com. Quem é um cliente? Lá vai você. Então, se tentarmos registrar alguém novo, então deixe-me tentar registrar alguém. Você gostaria de ver Paris no livro Levante-se Vírgula me ter cenoura desviado. Toque na inicialização do livro. Com. Use a mesma senha. A Andi. Bem, uma frase parece no botão, e muda o quê? Não é bem o que eu desejava. Mas é quando. Então, quando clicarmos em registrar, será o A P que eu chamo e então nos redireciona para a tela de login, certo? Então, se eu disser que eu estou logando em uma livraria estatuto, não vir e, em seguida, entrar, então nós vemos toque logado. Ela é uma cliente, então ela vê seu cliente sair. Tudo bem, então vemos que acabamos de testar no registro no log in coisas em Sim, lá, certamente para coisas que precisamos limpar em normalizar ao longo do caminho. Mas a grande batida fora do trabalho está feito. Então, uma coisa que eu quero limpar é o botão de registro, então este deve ser o registro. Acho que não há mais nada de grande problema. A única outra questão, como eu disse, seria apenas certificar-se de que eles usam o nome em seu banco de dados é na verdade o endereço de
e-mail. Tudo bem, porque lembre-se, estamos perguntando a pessoa junto com e-mail e senha, e estamos verificando isso por padrão. Está verificando a sensação de nome de usuário no campo de endereço de e-mail. Então, se o endereço de e-mail não está no nome de usuário e normalizar o uso indiano sente, então eles não vão funcionar. Tudo bem, isso controla a distribuição de usuários. Andi, com liquidação inicial antes, acredita aplicação porque configuramos todos os arquivos, Nós configuramos o log in sob registro. E então quando
voltarmos, vamos rever todas essas coisas em Verifique nossas mudanças no reboque. Nosso projeto em “Get Up”.
42. Analisar e adicionar mudanças no GitHub: Pessoal, bem-vindos de volta. Isto é mais de uma pequena revisão e vídeo de frango, e nós vamos apenas passar por algumas das modificações que fizemos e em nenhuma
ordem particular . Então eu estou apenas começando com o modelo de usuário. Lembre-se que sentimos, embora o modelo de registro com o endereço de e-mail e senha fusível que precisamos. Também fomos em frente e criamos o modelo de resposta de token que usamos para analisar os dados vêm da resposta de token. Depois de Logan, adicionamos o log nas páginas do barco do amor e fizemos algumas modificações na página de registro. Adicionamos um novo provedor no formulário fora do provedor de estado de autenticação Ikea neste provedor estado de
autenticação nos tinha, incluindo as bibliotecas de armazenamento local, bem como a biblioteca token 100. Que uma carga nós dedo do pé, Paris ou tokens? Você sabe, um, fazer alguma avaliação, salvar o token em manipulado, falando do jeito que queremos. Nós também adicionamos log in lago log notas e funções personalizadas neste arquivo. Em nosso serviço de autenticação, repositório adicionou o log in e logoed funções no log in nós d serializado token armazenar o valor usando armazenamento local. Então nós também temos que injetar isso nas autenticações que eles fornecem em nosso
repositório de autenticação logotipo Andi para ser apenas chamá-lo e remover o token armazenado em nosso menu. Fizemos alguns ajustes onde percebemos para que possamos autorizar certas partes para que possamos autorizar algo a ser visto por regras específicas em que os clientes possam estar. Ou podemos apenas fazê-lo com base no estado de autenticação no momento. Certo, nós nos certificamos de adicionar o novo endpoint para fazer login aqui para cima da navalha. Alteramos todos os padrões no reboque, autorizamos a visualização de estrada e os estados de autenticação em cascata encerrando a exibição de layout. Algumas das mudanças mais importantes, entanto, aconteceu em nossa inicialização que CS, onde podemos garantir para fazer representação fora do nosso provedor de estado para que possamos injetá-lo em também associa essa classe personalizada com o provedor de estado dentro do recipiente de
injeção de dependência em. Então também injetamos o manipulador de segurança dentro para que não tenhamos que
declarar objetos desses dois em todos os lugares. Nós apenas, você sabe, apenas dependência lesionada e, em seguida, usamos isso de acordo. Então, com todas essas mudanças feitas, vamos apenas ir em frente e verificar as soluções que clicar com o botão direito, ir para confirmar, colocar em nossa mensagem em Essa é minha mensagem. Então, depois de colocar em que, você apenas ir em frente em Click the IRA e cometer tudo e afundar em. Uma vez feito isso, podemos passar para nossa próxima seção, onde começamos a iniciar algumas operações de multidão.
43. Repositório e serviço: Vocês nesta lição vão configurar o nosso repositório de autores para o nosso blazer. Você I aplicação em dez centavos apenas Oh, Eu só tenho o arquivo repositório base aberto para que possamos nos atualizar Nós o que nós
configuramos aqui. Então, tenha o brilho da viagem base, que é herdar. Ah. Http. Clãs em praticamente ele está passando pela atualização de eliminação de criação em. Bem, só as operações da multidão. Certo? Então, todas as operações de multidão, as funções de base são todas linhas aqui. Então a idéia é que para qualquer classe e neste caso autor, vamos herdar deste repositório baseado onde t é a classe ou a entidade. Então temos que criar no autor, entidade ou modelo. Já que estão usando o modelo de palavra-chave abaixo ou você está do lado, então vamos configurar o relatório. Então deixe-me começar criando os modelos de autor. Eu só vou para minhas modelos mãe seguir ambos adicionar classe. Eu estou chamando de autor, e então eu vou em frente e hit anúncio, e praticamente este modelo autor vai toe tem que incorporar o que quer que seja que nós
pretendemos passar através do A p Eu me lembro que nós sabemos a resposta que estamos recebendo quando olhamos sobre o autor, um ou pelo menos a documentação dentro para nos indicar o que sente que precisamos ter são
representados para obter os dados completos de nossa resposta Jason indo do FBI. Então, em essência, nós realmente precisávamos parecer e ir para o projeto. Eu só mencionei a aula de autor. Ou talvez para ser menos relacionado com dados, a
classe DT oh, Certo. Então, pelo menos o detalhe do autor, se você quiser que todos os dados voltem, teria que se parecer com os detalhes do autor, já que isso é realmente o que o autor get está retornando, praticamente ele tem todos os campos que qualquer outro pormenor seria, inclusive na sua operação específica. Então o que eu vou fazer aqui é realmente copiar tudo do GTO em diante, e eu estou vivendo assim. Expediência. Obviamente, se você está desenvolvendo em cima de um par que você não construiu, então você teria que fazer a mesma coisa onde você cria uma classe em, então modelo se sente baseado que sente seria na resposta Jason são esperados em um Jason solicitação. Então eu só tenho este modelo fora de como o autor vai se parecer. Certo, então. Bem, isto tem uma lista de livros. Eu, uh, colocar isso como um livro porque nós vamos ter um modelo de livro, e então eu posso criar isso. Basta gerar isso em um novo arquivo. Chegaremos a isso mais tarde. Só estou fazendo isso para termos todos os campos cobertos. Mas o que eu também vou fazer aqui é adicionar algumas validações porque então quando estamos usando o modelo, especialmente na vista, porque lembre-se que esses modelos de visão aérea que estamos fazendo, nós precisaremos ter alguns validação. Tudo bem, então eu fui em frente e adicionei alguma validação da nossa idéia, e então eu coloquei o necessário sobre tudo até a biografia. Coloque também os nomes de exibição primeiro nome, sobrenome na biografia. Também coloque uma validação de comprimento de string no topo do comprador. Certo. Então, todas essas coisas se lembram de sair de quatro atividades de autenticação iria desempenhar algum papel, convidá-lo no formulário antes de realmente enviar os dados através do FBI. Então saiba que eu tenho a minha classe modelo que eu vou estar usando para taxiar os dados de e para o aplicativo. E entre o aplicativo e o FBI, eu não posso ir em frente e criar meu repositório de autor para em ouvido a partir do repositório base. Certo? Então eu só vou passar para os meus contratos para o primeiro e eu vou adicionar uma nova classe são interferes maneira saber que enviou interfere. Aminu interfere. Vou chamá-lo de repositório de autor. E depois acrescentamos que, se interferir, sempre
tenho que me lembrar de colocar em público. Caso contrário, isso lhe dará uma era. Certo? Então, estamos criando um repositório público em então este repositório público lamentam. Esta interface provavelmente chamada eu autor repositório será herdar do nosso
repositório baseado em I em. Vamos deixá-lo herdar dentro do contexto fora do autor. Então vamos em frente e certificamo-nos de que temos representação daquela classe modelo chamada Autor? Não, não, que temos o contrato. Temos que preparar o roubo do Lester. Então, na pasta de serviço, eu vou em frente e clique em. Adicionar, e então eu vou adicionar uma classe chamada repositório autor desta vez Andanan autor posit Ori vai herdar do repositório base mais uma vez no contexto fora do autor. Portanto, observe as interfaces herdando das interferes. Mas então as classes concretas herdando do repositório baseado em concreto dentro do contexto do autor, bem como seu contrato. Então eu vou apenas ir em frente e incluir isso. Tudo bem,
depois dos implementos. Bem, eu realmente não tenho que implementar nada porque tudo já está implementado dentro da base. Que absurdo. Só se eu tivesse, tipo, uma outra operação que eu quisesse realizar no repositório do autor. Então eu teria as funções personalizadas aqui em, em seguida, implementá-los aqui. Mas como se relaciona com as funções básicas, eu não tenho que implementar nada novamente dentro do repositório porque eles estão todos
no repositório baseado, certo? Saiba o que isso está dizendo é que eu preciso inicializar os clientes CTT ou eu preciso injetar o cliente como de costume. Fábrica de clientes http nos clientes esporão. E então eu incluo o que está faltando em então eu preciso do meu construtor, e esta construção vai parecer um pouco diferente porque agora ele está dizendo que quando eu injetar no reboque, o repositório autor que eu também deve inicializar são passados o valor injetado na base. Certo, isso é tudo o que está fazendo. Então, uma vez que chamamos Repositório autor, ele vai dependência injetando o cliente http no repositório do autor, bem como o
repositório base em através do repositório do autor, podemos realizar qualquer operação, mas nós tem toe fazê-lo em relação ao autor da classe para que eu não possa usar a mesma agitação relatório para livros depois disso. Então eu tenho que criar o modelo de livro diferente do lema do autor. Andi tem que ter um repositório diferente para o livro. Também. Agora, depois de terminarmos de fazer tudo isso, o último passo é ter certeza de que eu tenho dentro do início. Um, bootstrap por lado vai configurar serviços e garantir que eu adicione uma representação fora do repositório de alto autor na classe concreta, e eles vão em frente e incluir o que precisa ser. Acho que por causa dos olhos de autenticação, não
precisaremos incluir nada novamente. E então é isso. Então, quando
voltarmos, vamos começar a configurar as páginas do autor e a configuração da recuperação dos dados através do FBI
44. Autores de lista de configuração: Ei, pessoal, bem-vindos de volta. Ouça, nós vamos definir nossa página de índice de autores, então eu vou começar rapidamente sob páginas. Assim, da mesma forma que começamos a segmentar nossas páginas em pastas de reboque diretamente em que cria uma nova pasta nas páginas. E eu vou adicionar uma nova pasta, e eu vou chamá-la Bem, senhor, ou autores. Tudo bem. Em seguida, no autor eu vou adicionar um novo componente sobre este é ah, componente
navalha chamado Index. Tudo bem, então eu só estou tentando manter alguma estrutura. Temos índice aqui, que é a página inicial, como você sabe, Mas então uma vez que você chegar à seção do autor, Eu quero ter uma página de destino e a primeira página, Naturalmente, você veria ou quer ver quando você clica em outros seriam os autores no no banco de dados. Muito mais truque. Então é por isso que eu fiz isso? Não, no topo. Vou certificar-me de que especifica o caminho do Ph. Então. A diferença agora é que eu posso dizer que é que é parte é apenas cortar no que você diz . É autores,
em seguida, cortar. Tudo bem. Então, por essa lógica, para chegar aqui, você teria que digitar autores barra, então isso significa voltar ao meu menu de valete. Eu só vou conhecer essa mudança antes que eu esqueça onde eu tenho os dois últimos autores sendo apenas autores. Eu vou ver autores barra Sweet sabe que deve ir autores em, em
seguida, a página padrão lá, que é ou ritmo índice. Lembre-se que o nome fora do arquivo não tem muita influência sobre o caminho é o que nós
colocamos como o caminho da página que realmente importa. Não, vou precisar de algumas coisas nesta página uma que vou ter de injectar, talvez o gestor de navegação. Eu também vou ter que injetar meu repo, e então usar o relatório. Isso é todas as três pessoas que acabamos de criar, a fim de usar que eu vou ter que imp suporta os espaços de nomes e assim por diante. Então, estamos vendo quando estamos fazendo a autenticação que para tudo que eu tinha que colocar
nas instruções de uso que eu não quero depois de colocar usando instruções cada vez que eu estou fazendo uma página porque eu vou estar usando modelos, e eu estou vai estar usando contratos muito. Então você sabe que se algo mudar, eu teria que me mudar em todos os lugares. É por isso que temos as nossas importações. Deixe-me ver se consigo encontrá-lo rapidamente. Nossas importações ponto navalha ou sublinham importações que resultam quando incluímos coisas aqui. Ele está incluído geralmente, então eu posso e eu vou voltar para a página de login. Eu posso pegar esses velhos tudo bem, e eu só vou lutar e eu fui esperar por toda a era. Pare aqui, bem ali na escola da época porque a declaração de uso não está faltando. Mas eu vou colocá-los dentro das importações que a navalha. Então, quando eu voltar para aquela página, você vê que as linhas vermelhas não desaparecem porque, bem, não
é ver a referência. Então, colocando as referências nas importações e tornando global para o todo para cima tão movendo trás índice No, eu já importei o que eu preciso para que eu possa começar a trabalhar com, embora seja muito medo. Como eu disse, vou precisar de uma instância fora do meu autor, repositórios de
autor. Eu só estou chamando esse relatório de sublinhado, e então eu posso começar com a diversão. Certo, então vamos ver o que temos que fazer lá. Então eu quero imprimir uma mesa que, você sabe, para cada autor que eu receber de volta, eu vou estar imprimindo as regras. Então, se você já usou a NBC no passado ou algo que significou relacionado, nós temos que gerar a tabela. Então isso deve ser do território, se não, então bem, vamos fazer juntos de qualquer maneira, então eu vou começar com uma mesa. Andi, usando bootstrap. Eu posso atender a aparência estável um pouco mais apresentável do que seria por padrão. Então eu posso incluir o meu traço mesa mesa, responsivo em. Só vou ver a mesa. Bem, sim, vamos apenas lidar com isso para a mesa até que estejamos responsivos. Então eu posso ter uma seção t t cabeça direito sobre. Então nesta seção, eu vou ter um TR em. Então o TR vai abrigar alguns TDs. Huh? Então os TD terão os cabeçalhos ou os títulos para Bem, na verdade, haveria Th é meu traseiro assim th porque seus batedores de mesa. Tudo bem, então um batedor de mesa para colunas diferentes. Então uma coluna seria o primeiro nome. O outro seria o último nome. Bem, não
tenho certeza se quero exibir toda a biografia aqui. Então, por enquanto, vou usar três deles e vou chamar este de ações, certo? As opções apenas hospedarão alguns botões para nós. Então isso está na seção da cabeça fora da mesa agora no corpo ou para começar com o corpo e foi para dizer t corpo em, em
seguida, em corpo T. Vou fazer um loop para ver a coleção de autores. Certo. Então não declaramos nada. É uma coleção de autores. Então eu vou fazer algo. Você vai ver alguns erros, mas nós trabalhamos sobre eles, então nós vamos ter um quatro cada loop, que vai salvar o nosso autor. Alguns iam dizer para cada autor distante em, e eu vou chamá-lo de modelos. Então eu gosto de chamar minha qualquer classe que está representando o contexto de dados para ah componente são para a nossa visão. Eu só chamo de modelo. É que parece claro. Certo. Então, para cada autor voltar dentro do modelo em, então o que eu quero fazer é gerar uma regra. Então, para cada registro, isso representa um registro voltando da lista de registros que teriam recuperado nós queremos que nosso papel no Metro está indo para ter ah coluna sobre. Então temos três agora. Então, só vai ser que eu enviei autor, que
significa que eu quero imprimir o valor do autor, e eu tenho certeza que ele vai dizer o primeiro nome. Então a inteligência não está me ajudando, porque no que diz respeito a
isso, não sabe o que é autor porque o escritório vai de um desconhecido chamado modelo. Então, tudo bem. Eu vou deixar isso sozinho para Nome para logo começou Pensamento sobrenome em, em
seguida, para o filho doente bois. Vou colocar em três botões. Tudo bem, então os botões que vão para a seção de ação seriam Barton, então eu vou ter a classe B TN. Então nós temos aquele bom botão da loja de lã na praia no Dash Primary. Então um é para ver, certo? E eu coloquei como um hype como um separado. Bem, eles vão ficar bonitos o suficiente. Eu não preciso de um cachimbo, então eu só deixo a soma total sem três botões sugerindo alguma estética, certo? Não. Para que, você sabe, parece apresentável dentro do botão. Então este vai ser um botão de visualização. Isto vai ser como um botão de edição. Então eu provavelmente gostaria de dizer Bt e aviso. Então é laranja. Este vai ser um botão de apagar, então seria lido, você sabe, perigo. Desculpe. BT e perigo não excluir. Certo, então. Dentro do botão. Sabe, você tem a opção de escrever nas edições de palavras. Escrevendo sobre a visão do mundo. Vou usar alguns ícones aqui. Alguém a dizer girou e, em seguida, classe em seguida, teria visto alguns dos ícones que estão sendo usados
no candidato ou assim para obter um ícone foram depois. Acho que a biblioteca se chama ícones abertos. Eles sempre podem ir ao site deles e olhar para,
hum, hum, o que eu chamo de opções. Há, mas eu vou dizer por que Dash livro. Tudo bem, então eu acho que isso seria bom o suficiente como ah realmente como uma indicação de que essa é a vista, certo? Então, mais uma vez, se você escrever toda a palavra, então você recebe um botão com o ícone na palavra, se é isso que você deseja. Então, para avisar para assim por diante. Desculpe por editar. Vou pôr um lápis para sugerir a alguém que é tudo o que é idiota. Então eu acho que eles têm um chamado excluir, o que me daria, como uma sugestão extra, Bem, isso é para remover. Tudo bem, então isso é apenas uma estética. Webvan já o visualizou. Então você sabe, eu posso apreciar o ar, provavelmente ansioso para ver como tudo isso vai ser. Mas vamos entrar em algumas coisas do tribunal e nas estradas de Sartre, nossa flecha aqui. Então, no tribunal, a primeira coisa que eu sempre recomendo que você faça é declarar o que quer que seja que você disse, o modelo vai ser declarado, então vamos declarar em uma lista de autores que escrevam. Eu vou chamá-lo de modelo e então olhar para como essa linha vermelha simplesmente desaparece, e então tudo cai no lugar. Então, se eu usasse inteligência do que você seria capaz de ver tudo para o modelo porque não, faz sentido, certo? Então é por isso que tínhamos a linha vermelha. Dito isso, você não precisa fazer isso nessa ordem. Você não precisa de radiação de. Então você declara o modelo. Você poderia fazer isso primeiro, depois direito adicional. E provavelmente teria sido mais rápido para você se fizéssemos assim. Mas eu só estava tentando fazer um ponto de vista. Então a ordem nesta situação realmente não importa. É só o que achar mais fácil de fazer. Tudo bem. Então, a próxima coisa que queremos fazer é dizer ao componente que, quando ele manda, ele deve ordenar os dados ou pelo menos sentir esses dados, porque neste momento isso é o que você chama de Não, não há nada nele. É só ali. Mas não há nada nele, o que posso dizer que levaria a um erro quando o discurso leis. Porque então ele diria que há outra exceção porque não há nada aqui para gerar a tabela. Tudo bem, então o que eu quero fazer aqui é dizer, substituir sobre formulário padrão mostrado para quando a página é carregada, que é chamado uh enquanto estamos indo para a sua função protegida. Em primeiro lugar. Então eu vou escrever fora todos os qualificadores para a função primeiro e é uma tarefa em inicializado um dissipador em. Em seguida, fechamos as chaves ou Prentice abrir as chaves em seguida, dentro desta função
que queremos ver modelo é igual a on. Então poderemos aliviar o resultado do nosso relatório. Lembre-se, replays são objeto que representa o Repositório do autor, certo? Então é puxar ancorado em. Quero ter segundos e depois tenho de arranjar um membro que definimos para ter um que devolva tudo e depois um que devolva um autor específico, certo? Então instituição quer obter tudo e tudo o que requer como um ponto final é o nosso como um parâmetro é o endpoint ou a menina certo? Então nós armazenamos todos os quatro euros dentro de para a classe estática chamado em pontos então eu posso apenas ver em pontos, mas então notei isso No Oh bem, ele já está incluído. Por que está incluído ou por que está disponível? Isso é porque já importou, então se não estiver ligado, você não fez. Você pode ir em frente e importá-lo para a estática porque isso é algo Bem, nós vamos usar em todo o lugar, certo? Então, endpoints que autores em pontos. Tudo bem, no DSO. O que aconteceu? É aquele que as páginas carregam. Vai atender a esta chamada. Então o modelo será preenchido. Não. O problema é que, porque qualquer qualidade síncrona, não
é a praia não vai se sentar e esperar até que isso tenha sido carregado para cima. Então isso significa que se a página lords no momento em que a página carrega modelo está vazia, nós vamos conseguir que nenhuma era. Então o que eu vou fazer aqui e você teria visto em alguns dos exemplos, eu acho que na busca precisa de uma página. O que eles fizeram foi que eles tinham uma declaração se com o conteúdo. Então eles disseram algo como, se eu diria, se o modelo em minha situação, que está segurando todos os dados, se isso é não, então fazer outra coisa exibir minha tabela. Certo, então estou dizendo que se quando o modelo dos Senhores da Fala ainda não tiver dados, então mostre outra coisa. Você sabe, no que eu vou mostrar rapidamente é apenas aquele alerta. Vou chamar de alerta. Cor descartável escuro ou deixe-me usar em Ehlert. Secundário em, então eu só vou dizer dados lording. Então, quando os senhores da página em, você
sabe que os olhos U abrir visível. Mas ainda está à espera de uma resposta do FBI. Porque você não sabe quanto tempo essa chamada do FBI vai demorar,
por favor, nossos narizes digam: “
Bem,
você pode exibir algo aqui,
para Bem, você pode exibir algo aqui, o usuário saiba que está acontecendo, e então uma vez que acontece, Então vamos para cima da mesa. Tudo bem? Tudo bem. Então, não, eu quero te dizer isso para teste. Eu só quero voltar e ter certeza de que eu tenho as partes corretas para e então este é o autor em. Eu só vou ir em frente, bater, correr, e depois isso. Vê? Tudo bem. Então, quando nossos senhores de aplicativos, eu vou apenas fazer login rapidamente como alguém que teria criado no passado. Tudo bem? Eu sou amado em. Depois vou passar por cima dos Autores Andi. Eu defini um ponto de interrupção aqui no get para repositório baseado. Tudo bem, então vamos passar. Eu só vou pular direto, não pise depois de enviarmos o pedido. E isso eu não acho que isso vai funcionar em morrer de corrente do que eu vou explicar o porquê. Então nós temos ah, 401 acorde em nossa resposta. Então, para um significa em autorizado. Então, se você se lembra, quando nós configuramos sobre um P I controle de quatro autores teria autorizado todo o controlador. E mesmo que estejamos registrando o FBI nos enviando que não foram autorizados e então se eu pressionar continuar aqui os sintomas que vamos ver carregando dados. Então, quero dizer, certo? Não, estou voltando. Não, só não, podemos fazer com que devolvamos algo um pouco mais intuitivo. Então tome uma decisão baseada no que devolvemos. Certo? Então o que vou fazer aqui é parar de depurar. Então o que acontece é que quando criamos os clientes, lembre-se que estamos criando uma nova planta cada vez, então, sim, criamos um cliente aqui. Mas cada vez que estamos prestes a fazer uma solicitação, criamos um cliente em. Então o que acontece quando seu cliente é criado, ele envia o pedido. Mas precisamos incluir nesse pedido, o cabeçalho de autorização. Então, sim, podemos ter feito isso no passado. Eu acho que nós fizemos isso no P I off provedor estadual estava lá? Não. Fizemo-lo no repositório de autenticação, Onda. Criamos um cliente da mesma forma. Então, o que aconteceu quando atribuímos o valor aqui foi que atribuímos esse rebatedor padrão também. Esta instância específica fora do cliente. Então, na verdade, poderíamos ter feito sem esta terra. Realmente? Porque ele incluiu como um token de portador no hitter para este cliente não é globalmente. Então o que eu vou ter que fazer para modificar meu arquivo de repositório base é que eu posso criar uma função que vai apenas dizer, fazer Bera falar, certo? Então, se eu criar uma privada privada privada privada desculpe tarefa para retornar string Tudo bem, Private perseguindo tarefa para retornar uma string. E eu só vou chamar isso de cerveja para lata. Está bem, certifica-te que a minha ortografia está correcta. em. Então o que isso vai fazer é apenas retornar ou obter o token de cerveja armazenado no armazenamento local . Então isso é voltar a aborrecer a escola onde eu posso ficar. Onde está? É que eu tenho 1/4 onde eu consigo o token do portador. Oh, não, não está neste. Seria no provedor de estado de autenticação onde eu c obter o item chamado off tokens. Então vou pegar isso emprestado. Então o que eu vou fazer é deixar esta função apenas retornar isso Então um retorno em, então eu estou vendo obter armazenamento local em retorno. Tudo isso, o que não significa depois de injetar armazenamento local no reboque. Meu repositório baseado. Então eu me apresso e faço isso, começando com a declaração da nova propriedade e incluindo as bibliotecas que precisam ser incluídas. E então eu coloquei isso dentro do nosso controle. Construtor calmo. Desculpe, Andi, só quebre clientes. Eu não vou muito longe da tela. Então vamos apenas inicializar um Sean aqui. Não, porque incluí armazenamento loca no repositório base. Também precisarei ter certeza de que meu repositório de autenticação Não, não a autenticação certa. Meu repositório de autores, que está herdando da base, também tem representação. Então eu vou precisar injetar também o depósito local aqui. Então eu vou copiar e colar essas linhas para que eu possa me mover um pouco mais rápido. Tudo bem, então, eu na base apenas c vírgula. Gravações de armazenamento local. Só estou passando isso para a besta também. Então isso é apenas uma pequena cirurgia que tivemos que fazer, mas finalmente o propósito da cirurgia para que possamos olhar para o armazenamento local quando estamos prestes a fazer Ah, eu peço para obter qualquer conversa que está lá para que possamos incluí-lo no cliente. Então eu estou criando um objeto cliente bem aqui no dia. Eu só vou voltar para o meu repositório de autenticação dentro fora da função em log onde eu digo cliente que padrão. Só vou pegar emprestado, então estou copiando e colando o tribunal porque tenho o trimestral, mas é só em um lugar diferente, certo? Logo depois de criar o cliente, vou acelerar esta linha. Mas então eu vou dizer que o valor que está sendo passado aqui é o valor que vai ser retornado por nossa função. Faça a cerveja falar. Tudo bem, então. Vou em frente e incluo. Tudo bem, então cada pedido que precisamos que o portador fale alguns literalmente nada uma cópia na porta. Desculpe. Isto deve ser um peso. Certo, alguns apenas no reboque. Copie esta linha depois de cada onde criamos um objeto cliente. Eu só estou indo para o ritmo lá porque nós precisamos da conversa ao portador em cada vez que nós ligamos ou um p I I Tudo bem. Então eu acabei de adicioná-lo para criar, atualizar ,
hum, e obter todas as funções no repositório base sem esportes, apesar de ter a cerveja falando incluído no cabeçalho. Então vamos tentar de novo. Tudo bem? Então vamos tentar de novo. Eu já estou logado como porta e eu livro guardado. Vá lá, apanha-me. Apenas certifique-se de tomar os elementos inspecionados. Vá para aplicação Onda E certifique-se de que o token é que eles estão bem em então. Quando eu clico em autores, você vê o carregamento de dados em. Depois atinge os meus pontos de pausa. Eu defini um ponto de ruptura no próprio controlador desta vez, certo? em obter autor. Então, se você não se perguntou, então você provavelmente já viu os autores. O que? Eu tinha um lá. Porque o que acontece é que se for, se um pedido não autorizado entrar, nunca,
nunca esquentaria o controlador, que é o que aconteceu antes, certo para essa ação. Desculpe. Então, porque as autorizações lá e foi autorizado com o token,
Não, Não, nós apertamos isso,
então eu posso simplesmente ir em frente e clicar em Continuar, que traz para a minha origem no ponto de interrupção mostrando que eu estou voltando . Certo, responda. Então. Eu continuo no DNO. Estou vendo meus autores voltando do meu AP I Então é assim que o token do portador funciona na praticidade. Então nós tivemos um pouco fora do trabalho, eles possuíam ambos sentados em ambos definindo o dedo do pé do cliente. Use-o. Então não, você tem um exemplo da vida real de como funciona. E você pode ver que somos o primeiro nome, sobrenome em ações. E depois temos os nossos pequenos botões com os ícones. Então tudo está indo bem? Não, como eu disse, não
foi muito intuitivo que ele acabou de voltar. Não e não fizemos nada com ele depois de voltar. Não, porque aí ficava na sua visão de dados baixos para sempre. Certo? Então o que poderíamos fazer é provavelmente incluir outro campo que irá ou pode ser um tipo de
retorno diferente ou uma virada mais complexa. tempo de retorno neste tipo de retorno provavelmente teria algo como, um, qual é a resposta pontuada, bem como talvez o ato, alguns para os dados reais voltarem. Então podemos avaliar se a resposta pontuada está bem, então. Tudo bem. Se não estiver tudo bem, então mostraremos uma mensagem de acordo. Não quero fazer isso. Não, podemos deixar isso como uma pequena atividade. Por enquanto, sabemos que podemos carregar fora da lista. Autores que vêm diretores do FBI, vemos que nossa autenticação está funcionando tanto localmente no U. vemos que nossa autenticação está funcionando tanto localmente no U.
Onda através do FBI porque fomos expulsos por boas razões. E não, somos aceitos uma vez que você fixar o nosso tribunal de acordo com Tudo bem, modo que isso conclui sobre sentar-se, fora ou em experiência para os autores. Quando voltarmos, vamos começar a fazer com que estes funcionem. Começa com a nossa visão
45. Autor de exibição de configuração: Ei, pessoal, bem-vindos de volta. Ouça, vamos configurar nosso componente de visão para nossos autores. Agora, a realidade é que nós não estamos mostrando todos os detalhes aqui na página de listagem. Há outras coisas, incluindo talvez a biografia sobre o que é o comunista? Uma foto de perfil. Então agora nós estamos em seu primeiro nome sobrenome e queremos que quando clicamos no botão , isso sugere que nós clicamos nele para ver o registro particular que ele irá navegar para um componente diferente, mostrando nos que informações relevantes. Então nós temos duas opções e, bem, eu vou dizer as opções dos dedos dos pés. O que? Vou usar um, e vou me concentrar em um, porque o quê? Essa é muito fácil. Então, em primeiro lugar, precisamos mudar nossos botões. Então eu usei botões inicialmente, mas o que eu deveria ter usado onde as etiquetas de tornozelo são usadas para facilitar este método fora da navegação. Certo? Tags de tornozelo são as mais usadas do Navigare filho, hum, tags em html, é
claro. E lá, perto da cidade em uma viagem em definir um endereço. Então, o endereço que vamos estar usando aqui seria o endereço toe barra autores porque nós estaremos criando um componente em nossos autores, Waldo Eu vou chamá-lo view em então eu preciso passar em algum parâmetro que você vai saber que ele precisa ver este registro em particular sobre isso. Esse perímetro em particular seria como o ID. Então eu não estou exibindo o
I.D. I.D. aqui porque eu não acho que eu preciso mostrar a você o escritório que eu comprei nos bastidores. Você precisa dele. Então eu tenho que dizer no sinal autor ponto i d e que irá criar que ligado para saber que ele deve ir para a vista ou qualquer componente tem este endereço. Certo, então vamos nos concentrar na vista agora. Então, para chegar lá, eu vou ter que ir para a minha pasta de autores, ir em frente e adicionar um novo componente, e eu vou chamá-lo de vista. Tudo bem? Algumas pessoas chamam de detalhes. Então, qualquer que funcione para você, então eu vou ter certeza que ele tem o endereço. Exibição de barra do autor barra em. Então eu faço provisões para o fato de que em I d valores vai ser passado por cima. Tudo bem? Então, quando isso no link de índice quando ele mops diretamente estará procurando por qualquer componente que tem, bem, esta como sua página Onda uma seção para algum valor. Tudo bem, em seguida, sobre a vista disse, nós temos que ter certeza que nós fizemos provisão para isso. Não, porque temos um parâmetro chegando. Tenho de fazer com que o pH saiba que tenho um parâmetro. Tudo bem sobre este parâmetro vai ser um público em porque nós literalmente se tornando sobre um paus. Sabemos que é um número, mas vai ver os bastões deles. Temos que dizer uma corda. Então vamos para o set, está
bem? Ou talvez possamos ficar bem, vamos embora, apenas começar. Então, agora, se você fez este inteiro, sabemos que ele deve ser enterrado aqui, mas eu acredito que você iria para algum compilador era. Eu não acho que você dólares para compilar se usado inteiro ou qualquer coisa que não é indicativo fora algum valor string vindo através tão certo? Não, só para uma prévia rápida. Só vou ver se ganhei uma impressão digital. O valor da ideia quando ele é clicado direito. Então, autor, apenas para a direita. Autor. Eu d on, então eu vou apenas mostrar-lhe o valor que está vindo através do parâmetro. Então vamos dizer isso para dar uma volta. Deixe-me ter certeza que tenho tudo pronto aqui. Tudo bem, deixe-me clicar. Comece. Tudo bem. Então somos amados estar aqui no dia. Eu estou indo para ir em frente e clique em autores. Então eu vou tentar e ver. Então, se eu passar o mouse sobre eles, você vai realmente ver nos links no canto inferior esquerdo. Se for visível o suficiente, o diferente I desvaloriza, aparecendo no final do link, certo? E então se eu clicar em um, ele vai para cima e mostra você. Os três eu procurava três serem possíveis. Ou se eu voltar, eu olho para outro que eu c cinco e cinco. Certo, então sabemos que estamos passando o parâmetro com sucesso. Então agora vamos realmente chegar à parte divertida, que é recuperar os dados sobre exibi-lo na página, porque ver a idéia não faz nenhuma diferença o que queremos fazer. Nós vemos tudo fora, você sabe, tudo sobre o autor. Então eu vou ter que injetar alguns serviços aqui. Um sendo meu autor, nós postamos Eu vou apenas ir lá e obter a linha fora do tribunal para o meu autor Repo e injetado
lá . Eu provavelmente também vou querer meu gerenciador de navegação. E eu vou chamar os objetos de gerente suficiente desta vez em vez de esquecer. Acho que é mais fácil dizer em seu, você sabe, mais indicativo do que é o que o objeto representa, certo? Então, dentro do cordão, eu também vou ter outra propriedade pervertida e esta pode ser privada neste será autor
fora do tipo, certo? E este será o meu modelo em Eu vou inicializá-lo com um novo objeto autor. Tudo bem, então o que eu vou dizer aqui, entanto, é que na inicialização fora desta velocidade, então eu quero oh, no carregamento desta página. Ou melhor, quando o pH está carregado. E sabemos que esta é a nossa função para isso em uma pia inicializada. Quero que recupere o autor com esta ideia. Então eu vou dizer autor é igual ou modelo desculpe que eu chamei modelo objeto. Então o meu modelo para a minha página é igual a aguardar os resultados do meu relatório, que é por pessoas de autor que entram em seguida, lembre-se, nós temos que chegar então desta vez eu vou ter que passar no ponto final. Andi em inteiro i d Então eu tenho meus em pontos pontos de arquivo autores e ponto vírgula Mas então eu preciso do i d Que precisa ser um inteiro Então isso significa que eu preciso dizer int i d E eu estou indo apenas para usar idéia minúscula porque isso é idee maiúscula, Certo? Então, em arrumos iguais a isso, eu posso simplesmente me transformar em que a análise fora do I d vôlei Comunhão a partir do parâmetro. Certo? Então agora eu estou apenas convertendo. Digamos que você tenha maneiras diferentes de converter peças de indução. Você também não converteu em 32. Então, você sabe, este pode ser um pouco mais comum nessa parte é limitado a apenas string. Então, quero dizer esta situação, qualquer um pode funcionar, mas eu quero que eu desvalorize para ser passado como o parâmetro. Tudo bem, então ele vai preencher o modelo. Tudo bem, então enfrentamos a mesma coisa aqui em cima, onde? Quando o modelo está vazio, ele pode não carregar ou vamos ter problemas. Então o que eu vou ver é IFOR na Scent. Se o modelo é equivalente em todos, então eu quero exibir uma mensagem agradável ou outra coisa em. Em seguida, queremos exibir sobre página real com os dados. Tudo bem, enquanto está vazio, eu só uso reutilizar este diff este alerta e eu estou dizendo carregando detalhes do autor. Então você vê que eu estou repetindo o tribunal aqui e um princípio de programação. Não se repita. Estou a usar isto. Dave é muito com o estilo exato, muito. Então nós olhamos para como podemos colocar isso em um componente e apenas cartão um componente. Andi mesmo passou a mensagem que pretendemos ter exibido agora dentro de fora que eu quero exibir os detalhes dos autores então eu vou apenas usar uma tabela novamente em Eu vou
dar-lhe as classes bootstrap, e então este estável é vai ter um formato ligeiramente diferente. Então bem, deixe-me eu só vou prestar atenção a algumas estética aqui, então eu vou colocar este estábulo dentro de um Div ligado. Quero que este dedo vivo tenha uma chamada de aula. Assim e faz talvez quatro para que não se estenda em toda a tela. Ele só ocupa quatro espaços ou quatro colunas de um potencial 12 e, em seguida, dentro fora que eu quero esta mesa direito sobre. Então esta mesa vai ter o nosso papel de alguém R t r E então neste T eu vou
ter dois TDs. Lembre-se, chás são colunas, então este vai ser o primeiro nome. Então eu vou para inserções nas docas Sion Model em, em
seguida, colocar o primeiro nome. Tudo bem, Onda, sempre desencoraja colocar, um, você sabe, texto diretamente dentro do rebocador de TV. Então, você sabe, você provavelmente quer colocá-lo como em um puxador P ou algo assim, mas para não, tudo bem. Só queremos que os dados sejam exibidos. Então nós somos o primeiro nome que temos sobrenomes. Alguns realmente só querem copiar e colar estes e alterar os detalhes de acordo. E depois temos o sobrenome. Nós também temos mais tarde nós teremos. Provavelmente voltaremos. E depois de endereço de e-mail e outros detalhes onde eu sei que temos muito poucos detalhes de biografia para que possamos ver um pequeno barco biografia. Então esta seria a biografia. Tudo bem. E então vemos que temos livros, então provavelmente gostaríamos de exibir uma lista fora dos livros nas notícias. Então, depois de ver os detalhes dos autores, tudo bem. Então eu provavelmente posso colocar em um pouco bater aqui para ver fora os detalhes do autor sobre. Então eu vou colocar outra seção debaixo desta mesa onde eu vou apenas ver uma célula, apenas quebrá-la um pouco para que não pareça um dedo gigante. E então eu digo os livros do autor de nossos livros logo em diante. Então, para os livros podemos para cada um ou o quê? Preciso de outra mesa, alguém para colocar os livros em outra mesa ou quer saber? Vou ficar um pouco mais criativo do que usar outra mesa. Então, em vez disso ,
fora de uma mesa, o que eu vou fazer é usar ah, cartão no grupo da lista. Então, olhando para alguma documentação de bootstrap, vejo que eles têm um cartão especial onde você pode ter, tipo, um pequeno cabeçalho. Então você tem o grupo de lista, e então ele vai sair assim. Então é isso que eu quero. Então eu vou apenas copiar este cordão aan den depois de vermos os livros do autor, eu vou apenas colá-lo direito. Sei que só refratamos juntos. Então, em vez de ter este mesmo destaque, eu vou dizer livros de autor. Então, vou pegar essa idade para Tug. Corte,
coloque dentro do seis filho para a direção do batedor de cartas, certo? Apenas conserte meu recuo um pouco, depois para o grupo da lista. Eu só vou dizer no sinal para cada um em que será vier em. Isso é um livro em. Em seguida, a coleção aqui será modelo encaixado. Então temos livros. Tudo bem, então, você sabe, para fazer isso funcionar, nós definitivamente vamos ter que pescar fora nosso modelo de livro. Então, hum, apenas tenha paciência comigo. Então, para cada livro dentro da lista, fora dos livros que voltarão. Certo? Então você vê que nós temos o menos off livros, e se você não tem tanta certeza do que eu estou me referindo Lembre-se quando nós configuramos o modelo, nós pegamos todas as propriedades, bem como incluímos uma lista fora dos livros. Então, no Jason, Easy percebe que você vai serializar o dedo do pé ah, livro direito. Cada livro assumirá as características do livro, e tudo isso é analistas telefônicos. Então temos que ter certeza de que temos representação para as propriedades de cada livro dentro do modelo de livro. Então vamos fazer isso o suficiente para nós ou terminar este projeto. Então, para cada livro que vai ser recuperado, o que queremos fazer é colocar em
L.I. L.I. com o item do grupo da lista de classes. Então o conteúdo será no sinal Livro em pode estar no ponto San Book e, bem, é um objeto vazio, então não há nada para vincular ainda. Então deixe-me liderar toda a gordura, consertar a formatação um pouco, então voltamos nossa atenção para os livros. Eu só estou fazendo tudo uma vez refrigerante após o dobro de volta. Lidar com isso de novo, certo? Então o que vamos fazer é ir para o nosso modelo de livros. Então tem o modelo do livro, e está em branco que não pode funcionar direito. Conserto rápido. Vamos voltar ao ponto de vista, lembre-se que o que realmente estamos fazendo é apenas mapear ou deixe-me ver os detalhes ou estamos realmente fazendo é apenas limpar as propriedades que estariam voltando do FBI. Certo? Então qualquer chamada do FBI para um livro estará recuperando todos esses pontos de dados. Direita em. Eu só vou pegar tudo isso, então eu vou apenas copiar tudo isso, vir até aqui para reservar dentro do contexto de nossa
aplicação U Y. Certo? Estamos pegando o tipo. A idéia, o ano, o Você sabe, todos esses detalhes podem ser o preço, certo? , Autor,então não temos todos os detalhes, mas temos autor. Então, para qualquer livro que vai recrutar, queremos recuperar os detalhes do autor, se possível. Você sabe, quando estamos quando eles estão implementando nossa livraria, Fred, mas para não, isso é o que todos os livros vão olhar. Então estamos trabalhando no livro, , ei
,vou colocar a validação e assim por diante. Deixo isso para não, mas de volta à nossa lista. Quando eu souber, diga livro, que é lembrar desse objeto. Então é um livro docks em Não, eu posso obter alguns detalhes Então um detalhe que eu provavelmente iria querer é o título Onda Talvez o título no Vamos ver o preço Então em san livro o título em Down the Price E então, se você quiser, você provavelmente pode adicionar um no tio apertado aqui para ver Bino. Nossa visão mais tarde nós estamos configurados que querem que você Olhe para um autor sobre os livros que eles têm , você sabe escrito que estaria aparecendo nesta seção Você vê o título, você vê o preço e, em seguida, você pode clicar para ver mais tarde Vamos consertar isso. Então eu sei que nós só queremos ter a vista para o Autor Open correndo,
certo, então nós temos todas essas coisas que estavam recebendo de volta. Estamos preenchendo todos os livros. Mais uma coisa que eu acho que provavelmente iria querer é um botão que, você sabe, voltar Hope direito é algum ataque de pedaço. Então, você tem duas opções. Como eu disse, eso se usarmos o botão de um tipo de botão em uma viagem. Então nós temos que montar um evento riacho em que iria navegar para nós um. Então eu vou usar um botão só para que você possa ver como isso funcionaria. Então eu vou ver um botão, hum, voltar,
mas listar direito para listar, então isso teria o que você chama de um evento complicado. Então você tem que ver esse letreiro limpo. Em seguida, esse sinal no clique, você especifica qual função deve ser chamada no clique. Então eu diria que apoiou uma lista. Certo, esse é o nome fora da função. Então eu linha vermelha vai aparecer porque não existe tal função. Então por que a Linha Vermelha aparece? Eu vou apenas ir em frente e criar a função,
alguém para dizer, Soldado, Soldado, eu vou apenas torná-lo nulo em Chamá-lo de volta para o menos em cima. Então eu vou fazer com que você deve usar o gerenciador de navegação para Andi navega. E então o link que vou colocar aqui não seria cortado. Mas você será cortado. Autores barra Então essa é a página de índice para os nossos autores. Direitos sexuais. Tão pouco. Coloque isso para dar uma volta e veja como funciona. Então eu estou aqui olhando para a lista de autores. Eu vou em frente e clique em ver em, então. Tudo bem, então eu estou pegando ela aqui de barcos, os livros de ponto modelo estão em branco. Certo, então esta é uma das áreas que eu te disse. É por isso que eles nos deixam colocar essas declarações para dizer, se está em branco, então você sabe que não vai causar a ela, então tudo bem. Podemos consertar isso com uma declaração “if”. Então vamos sair mais das pessoas. E então eu vou ver na ciência, se nesta estimativa é apenas para avaliar se o modelo que livros Tudo bem, Então isso significa que o autor, que eu tentei ver, não
tem livros. Então, se modelado fora livros direito é equivalente a saber que não há livros devolvidos. Então o que eu vou fazer é exibir esta seção. Diga, diga, estou usando o tribunal contra. Se alguma vez eu quisesse mudar o estilo, então eu teria que eu teria que mudar que pelo menos quatro lugares por No. Certo. Então não há livros para exibir livros. Bem, para este autor para ele lá, nós vemos outra coisa. Queremos todo esse acorde chique que acabamos de escrever. Então eu não preciso mostrar livros de autor e nenhum grupo de lista para dizer, Oh, eles são livros. Eu só vou dizer que não há livros para este autor ou ombro, então vamos tentar de novo. Tudo bem, então estamos de volta para onde começamos em “Vamos Tentar “de novo. Então eu não tenho certeza qual autor tem algum livro, mas nós apenas arrastando com o mesmo autor com um A K R Então nós não estamos vendo este autor não tem livros. Nós vimos um flash ligado no flash fora e fora do curso. Precisamos de estilo ou botões. Acredito no motivo pelo menos não estarmos caindo. Então isso é bom. Então eu acredito que a razão pela qual nós o vimos piscar é que enquanto o modelo era não, os livros eram não. Mas então eu acredito que uma vez que o modelo é carregado, a coleção de livros que ele não é mais conhecimento é tem conta de zeros. Tem algo menos o condado zero. Então o que eu vou fazer é eu vou ver se é não ou vagueei. Livros que não vão é menos de um significado certo? Você não tem nenhum livro que tenha. Zero são menos livros,
em seguida, quando os tipos de negativo um. Certo. Então você tem menos de um livro, então queremos exibir isso. Acho que isso deveria cuidar disso. Então. Eu só vou colocar um puxador de freio aqui embaixo. Então certifique-se de que eu estilo meu botão no DSO. Isso seria classe em Bt nbt n dash on. Vamos dizer linha e eu vou vê-lo na linha secundária. Tudo bem, vamos, então. Dentro fora do. Mas também vou colocar um desses ícones, certo? Algo Você sabe, eu não estou me concentrando muito em baixo na aparência e sensação, mas é bom apenas fazer tudo em obter uma apreciação completa fora para tudo vem junto. Então eu vou colocar em um espaço e eu vou chamar minha classe ícone aberto, e então vai ser Oh, eu faço. Eles têm um Buck Barrow. Tudo bem, então a mídia pular a palavra. Vamos tentar a palavra Skip Buck. Certo, então vamos tentar isso mais uma vez, e sabemos que este autor não tem livros. Não tenho certeza se temos algum autor com livros, então se você quiser temperar a força, causa
do FBI e criar alguns livros com alguns autores ligados a eles. Mas, pelo menos, queremos ter certeza de que a nossa opinião emitir um corretamente. Tudo bem, então em volta à vista o mesmo autor. E vemos detalhes do autor todos os detalhes sobre livros DNO para este autor, e temos a nossa bela batalha do dedo do pé é botão olhando agradável e elegante lá embaixo. Quero dizer, não
é a interface mais bonita, mas pelo menos podemos ver o que está acontecendo. Pior, podemos refinar um pouco. Você pode tirar esta vista em pode ser. Tenha os detalhes do autor mais pronunciados. Podemos atender a estes o texto nesta placa lateral em vez disso, fora de olhar apenas como que em, em seguida, fora de curso, com mais dados para a biografia, haveria mais detalhes para exibição e, em seguida, fora do curso. Em última análise, não
temos livros para este autor, que ganhará vida quando começarmos a colocar livros. Então é isso por desmontar a vista. Mais tarde,
vamos fazer algumas correções essenciais e limpar os interferes um pouco mais, mas para não, que é a semana inteira 100. O piso entre os diferentes componentes. Então, passamos dados entre componentes e como lidamos com o carregamento dos dados mais uma vez, dentro de cada componente.
46. Autor de atualização de configuração: Ei, pessoal, neste vídeo, nós vamos estar olhando para fazer sobre ele. Então nós apenas vimos. Já sabemos como tê-los no índice. Então, a edição vai seguir muito fora dos mesmos passos que o conjunto corredor da vista. Começando com nossos links. Só vou copiar isto, uma viagem que já temos para a vista. O Barton. Agora vou colocá-lo no botão de edição e em vez disso fora do autor. Fui ver a Pity está bem. Então vamos em frente e criamos nossos novos componentes. Então, em autores, adicionamos um novo componente e vamos chamá-lo mais uma vez com um E maiúsculo. Então nós equipamos nosso novo componente com a página escrita. É suposto ter a injecção do relatório e a injecção do nosso gestor de navegação. Tudo bem, um mínimo. Precisamos dessas coisas. Se precisarmos de algo fora do curso, vamos adicioná-los ao longo do caminho, mas apenas observa que este passo, desta vez faltando edição, ainda
está esperando para saber qual edição de registro, certo? Então ainda temos que recuperar o registro, então temos que amarrá-los no formulário. Então, na verdade, muito do código que escrevemos dentro do componente view é muito aplicável, certo? Então eu estou realmente indo apenas para copiar, Na verdade, tudo isso eu estou realmente indo para copiar tudo isso, porque nós ainda precisamos ter o parâmetro que precisamos para ter nosso modelo presente em. Então, quando as páginas inicializaram, precisamos ir buscar, certo? Então nós temos que buscar o registro que vai ser editado e colocá-lo em modelo, e eu ainda vou ter o botão de volta para o mínimo. Eu também vou ter outro botão. É o cancelamento dele. Tudo bem, então eu só vou ver o que eu já escrevi sobre o que eu vou levar. Sei que preciso deste botão. Tudo bem, então eu vou apenas copiar isso. Tudo bem. Eu quero tomar Eu vou mudar este autor de edição. Tudo bem, Andi, do mesmo jeito que por aqui deveríamos ter visto o autor. Então salve-te. Detalhes do autor que escreveu fora de sua visão, detalhes da
oferta. Tudo bem. Traga um pouco de consistência. Projeto rasgado. Tudo bem, qualquer buraco. A outra coisa que eu gostaria é a declaração “se”. Então, enquanto eu estou aqui e estou nessa linha, eu apenas fiz a declaração, alguns apenas copiando e colando mais uma vez. Então nós apenas avançar rapidamente, em seguida, ter o if else nesta declaração if. Então, se não for, tudo bem, então agora vou querer isso ao vivo de novo? Tudo bem. Então eu vou criar um componente compartilhado porque eu estou doente e cansado de pegar esse resfriado toda vez e taxá-lo através. Certo? Então o que eu vou fazer é passar para compartilhado e então, bem, vamos olhar para um que já existe. Se olharmos para o componente prompt de pesquisa para ver aqui que é realmente apenas um alerta no git tem algum texto bine doble chamado Title e ele está realmente recebendo um parâmetro chamado title. E se você olhar na página de índice como ele funciona, é apenas chamar o prompt de pesquisa, que é o nome fora do componente ligado, em
seguida, passando a mensagem ou qualquer texto que deve estar dentro do “desculpe dentro do questionário” problemas. Certo, então vamos fazer a mesma coisa. Então eu estou indo apenas para ir para o clique compartilhado adicionar em um novo componente. Vou chamar de mensagem de carregamento, certo? Nada muito extravagante, em seguida, dentro desse componente ou alguém para fazer é que eu vou tomar o Dave em suas tomadas padrão que estavam sempre exibindo. Então, eu só vou seguir esta direita. Passe-o dentro do componente. Tudo bem? Então, não, nós temos isso. Dave está carregando detalhes do autor. Então este, eu vou torná-lo dinâmico porque eu vou usar este mesmo componente com seu autor ou um livro ou detalhes do usuário. Seja o que for, este é o que vou ter contigo. Então, em vez disso, fazendo esta estática. Tudo bem. E mais uma vez, estamos apenas tirando o exemplo do prompt de pesquisa dentro da quadra, eu vou dar a ele um Parmenter como o que temos feito, então eu vou apenas ir em frente, dar um parâmetro sobre isso um vai ser uma mensagem. E então o que nós vamos fazer é apenas comprar a mensagem aqui, então eu provavelmente posso colocar isso em uma etiqueta H três em vez de apenas tê-lo impresso assim e depois ver mensagem. Tudo bem, então toda vez que vamos chamar este componente, vamos dizer a ele a mensagem, e então ele será impresso em conformidade. Então, revelando o que eu não preciso quando eu estou indo para o dedo do pé quando eu estou indo para editar no autor, eu não posso ver chamar a mensagem de carregamento componente em. Em seguida, ele me dá a opção de especificar a mensagem, e então eu posso dizer carregando autor para edições ou qualquer mensagem que você quer. Eu só estou, você sabe, fazendo isso, por exemplo, doente. Eu sei que eu tenho este componente Eu não tenho dedo do pé copiar e colar essas partículas ao vivo cada vez, então eu posso colocar a mesma chamada componente dentro da vista sobre isso, eu posso dizer carregando detalhes do autor, tudo bem. E então eu posso fazer a mesma coisa dentro do índice onde originalmente o criamos, certo? E então eu posso apenas dizer carregando autor estão carregando autores. Muito bem, então é uma boa maneira de criar. Você sabe, componentes
reutilizáveis e parlamento hoteleiro surgem. Então, quando eu passar essa mensagem, ele começa que ele vai apenas renderizar isso em vez de fora em H três. O Tuck. Tudo bem, então eu sei que aquela cadela está fora do caminho. A próxima coisa que quero é forma de arte. Então, se formos alguma coisa, isso significa que precisamos de um formulário de edição. Então você teria visto o formulário de edição de quando fizemos o login do usuário e o
registro do usuário , certo? E o formulário de edição, nós especificamos um modelo a ser usado, que sabemos que temos modelo para isso, certo? Seja lá o que você chama a
esse objeto, é o que você coloca lá. Então eu diria algo como em um envio válido. Então é isso que eu quero fazer. Então eu quero editar o autor. Certo, então fora do curso, precisamos que essa função seja definida. Então não, eu preciso definir essa função, que é o seu autor. Então eu vou apenas criar essa função em. Vou torná-lo um privado evitar Onda. Divida-o lá. Ainda não vou fazer nada, mas preciso do formulário. Tudo bem, então sabemos como os formulários vão parecer. Nós temos o dar esses formulários bootstrap e então eles incentivam o dedo ter uma classe chamada para grupo
mdash, tudo bem. E então dentro, fora deste formulário, temos uma etiqueta. Então é uma boa ideia vender quatro. E depois colocamos a ideia do que você era antes, então vou dizer o primeiro nome, certo? E então o texto dos rótulos em si é o primeiro nome. Tudo bem. E então temos um componente. Um componente integrado no texto de entrada do formulário fora. Bom. E, em seguida, o texto de entrada vai ser osso para que possamos dizer que o valor de ligação Scent. Tudo bem, eu assinei um valor de compra. Desculpe. A inteligência está faltando. Para que os valores de compra de areia, igualdade. E então dizemos no sinal modelo ponto em então a propriedade que ele se liga ao qual seria que eu não preciso de fora. Desculpe. Seria o modelo dot Primeiro nome. Tudo bem. Aan den eu dou a classe é igual a forma. Controle de traço. Tudo bem, então eu posso dar-lhe o i d para que ele vai ligar. Mas para o rótulo, que é o primeiro nome. Tudo bem. Fora do curso com a reforma. Desculpe ter perdido esse passo. Eu deveria ter o validador de anotações de dados porque você tem eternidades em nosso modelo de autor, então nós também devemos ter validação. Resumo. Certo, então eu não vou colocar a mensagem de validação embaixo de que eles já têm o resumo. Então eu deixo o resumo lá. Andi, eu vou andando. Então eu pelo primeiro nome, eu vou apenas copiar e colar isso e fazer a mesma coisa para sobrenome porque eles são basicamente a mesma coisa em termos fora de suas necessidades. É só ter certeza de uma mudança de ideias e de vinculação. A próxima coisa que eu teria é a biografia, um, quando o dedo tem isso também. Mas desta vez eu vou usar uma área de texto de entrada como meus componentes. Direito em comprar isso de volta para a biografia. Tudo bem. Certifique-se de que tudo se pareça com o que deve ser visto. Então, no final deste formulário, já que eu só tenho três propriedades que estavam tendendo a certo? Sem nome, sobrenome, biografia. Então veja, Sr. Step aqui. Basta verificar novamente e certifique-se de que você não está perdendo nenhuma alteração. A última coisa que precisamos é do botão, do botão de enviar. Então eu só vou colocar o botão, então isso seria que é Oh, ther. Tudo bem, vamos, então. Eu estou indo para mim. Este é o botão por bootstraps Bt e Bt e traço em. Vou torná-lo primário, está
bem? E então eu tenho meus botões, mas liberados. Então eu só vou colocar isso de volta no botão listar aqui ao lado dele. Então, edite ou volte para a lista. Enviar Editori, voltar para a lista. Alguns colocando isso lá. Tudo bem, Andi, se quisermos fazer provas do botão Eddie com um ícone ou dois dos nossos quadros. Outra coisa que queremos neste botão é o tipo. Então type igual a submit realmente queria acionar a submissão fora do formulário que ,
se for valorizado,
passará se for valorizado, para esta função. Se não for válido nas validações será impedi-lo de ser enviado. Tudo bem, tudo bem. Então eu apenas modifiquei o botão de enviar um pouco que eu coloquei no span Onda em um ícone de lápis, certo? E diz “editar”. Ou talvez eu tenha dito que algo muda, certo? Isso é um pouco tão repentinamente muda porque você acabou de fazer algumas mudanças. Uma coisa muito essencial que precisamos neste formulário é o I d.
Certo. Então, eu quero dizer, nós provavelmente poderíamos pegar o i d do parâmetro porque nós já o temos aqui. Eso real eventualmente. Normalmente, o que você faz é esconder o i d em algum lugar no formulário. Mas então nós estamos realmente rastreando através dos parâmetros deste. Eu realmente não preciso esconder isso no formulário de novo. Não, em uma submissão válida você sabe, quando editar autor é chamado, o que queremos fazer? Ele é Ah, See é sucesso. Então, queremos um ouro. Desculpe. Seu sucesso é igual a esperar e então chamamos um relatório E então o que essas pessoas têm para opiáceos Então nós chamamos de ser ele e, em seguida, ele quer que nós para passar nos pontos finais para o u R l Então eu só vou ver em pontos em pontos pontos e, em seguida, autores em pontos. Tudo bem? E então e então podemos nos dispersar no modelo. Então ele estava dizendo que poderíamos rastrear o i d através do parâmetro i d, mas o que realmente acontece? É isso, uh oh. Bem, eu não tenho área aqui porque isso precisa ser. Não é evitar. Deve ser uma parada síncrona. Mas antes de chegar a isso para que eu possa enviar no modelo Então tarefa. E então, quando eu passei no modelo, o que foi desossado eu mudar. Mas então o que não estava desossado e propenso a mudanças ainda sendo persistido dentro do modelo . Então, quando recuperamos o modelo iria tratá-lo com o
I.D. qualquer maneira, quando passarmos de volta, de
qualquer maneira,
quando passarmos de volta,
ele já saberia o que I.D. é a identidade e tê-lo para uso futuro, certo? Não, precisamos verificar se foi bem sucedido. Então, vou ver se é sucesso. Então eu quero navegar para longe para que eu possa apenas ver navigato. Ou talvez eu possa ligar de volta para isso. Vamos ver se isso funciona. Mas a lista lá vamos nós, uma vez que reescrevendo esta linha, que vai trazer sobre a lista de qualquer maneira, eu posso apenas ver se o seu sucesso, em
seguida, chamar este stand o que quer que seja suposto fazer, ele vai fazer tudo certo outra coisa. Se não foi bem sucedido, então provavelmente queremos exibir alguns erros. Então eu acho que fizemos isso na página de log in onde dissemos se havia alguma seta para exibir e
exibi-las. Então o que eu vou fazer é definir e mãe variável aqui. Onda que estamos chamando de falhou. Então você notaria que às vezes tem privado. Às vezes eu não sei. Mais uma vez, consistência é fundamental ,
mas por padrão, se você não especificar privado ou público, ela será privada por padrão. Então, seu campo se tornará verdadeiro se isso não for bem sucedido. Então, falhou. Igual a verdade. Tudo bem, então, o que eu posso fazer aqui em cima é ver se aquele sinal Desculpe, então deixe-me apenas recuar um pouco. Eu disse que Ele falhou em ser quedas por padrão, então só vai chegar a verdade se o sucesso parecer certo. Então eu posso ver. E na verdade eu só vou com a loja de casamentos porque eu fiz algo muito parecido lá . Onde e então aqui está novamente. Estou repetindo um alerta de perigo para que eu pudesse transformar isso em um componente reutilizável em doses Lodeiro mensagem. Certo, então temos uma mensagem baixa para esperar e eu posso transformá-la em um componente. Por alguma razão, isso às vezes vai para ler. Eu não tenho certeza, mas quando eu estou construindo, ele deve se consertar sozinho. Tudo bem, até agora, temos tudo. Vamos em frente e testar que eu tenho um botão extra aqui. Deixe-me apenas remover isso porque eu movo o botão ao lado das mudanças de assunto. Então eu tenho mudanças de repente. Então eu tenho o outro para voltar a isso. Certo? Então vamos testá-lo. Certo, então voltamos à nossa lista. Vou tentar editar um caso quando clicar. Editar. Lá está ela. Tudo bem. Então, seus detalhes vieram bem e rapidamente em, então ela está no autor impressionante. Direto, em
seguida, vamos enviar alterações para que possamos voltar para a lista. E esta justiça que primeiro. Está bem, fixe. Isso funciona. Deixe-me apenas re digitar. Então eu vou enviar as alterações. E então vamos ver. Certo, então não, algo deu errado. Então veja, eu apenas copiei e colei aquela era Dave sem mudanças na tecnologia para que pudéssemos fazer todo o componente utilizável. Mas algo deu errado. E vamos ver se podemos ser sobre o que deu errado. Então, voltando para o meu tribunal de repositório baseado e o método de atualizações em eu estou apenas
verificando duas vezes para ter certeza de que tudo está inteiro. Nós dissemos que deveria ser assim que nós temos o put nós temos o URL em. Eu acho que nós não formamos ou eu não sei se eu mudar isso depois, mas eu suspeito que o U. R L está mal formado porque ele também deve ter a idéia tocada. Se não estou enganado, deixe-me voltar à minha documentação para a minha
onda. É isso mesmo. Deve ser autores barra barra i d e eu tirei o i d por qualquer motivo. Então eu vou sair mais do barco antes de ir mais longe. Tudo bem, então eu vou colocar de volta 1/3 Parmenter para a
identificação. identificação Eu também vou misturar o dedo do pé. Oito na corda. Então nós temos o URL como uma string em e deixe-me apenas certificar-me de que meus endpoints têm que pesquisa barra
direita deve ser um p i barra autor barra e, em seguida, estamos concatenação o valor i d i d ali mesmo. Mas depois fora do curso. Se eu mudar o repositório base, eu tenho que mudar meus contratos. Por isso, não tenho a certeza. Acho que mudei isso quando vocês não estavam procurando por qualquer motivo, mas deixem-me reverter. Então, se você é o seu contrato deve ser assim para a atualização com o ID em seu repositório baseado deve ter os três parâmetros no Beacon coordenando a idee para a string. Certo, então vamos tentar de novo. Recebi um erro porque preciso atualizar minha chamada de método. Certo? Então eu estou passando na importância, o modelo, e então eu apenas um modelo pontos, eu d. Tudo bem, então vamos tentar isso novamente. Certo, então estamos prestes a editar a página já fiz meus ajustes onde eu disse que ela está no
Autor Incrível . Eu submeto alterações e algo deu errado novamente. Acho que sei o que é desta vez. Não é que tenhamos malformado o Conde. Acho que é só porque não estamos atuando. Então eu vou definir um ponto de interrupção na minha história base relatórios logo na chamada de atualização depois obter a resposta. E então vamos olhar de novo. Então eu fui para enviar alterações, ele envia sobre o pedido em. Então diz: “ Proibido”. Certo, então isso significa que nossa validação em nossas coisas de autorização funciona, pelo
menos no nível A P I. Precisamos fazer com que nenhum administrador não seja capaz de chegar à página para começar. Certo? Então aqui, neste cenário, temos porta naquela livraria ponto com que é apenas um cliente. Ele é capaz de ir para os autores isso em, na verdade clique nele autor. Então, queremos fazê-lo não ser capaz de ver esse link um, e mesmo que ele navegue lá, não ser autorizado a sequer chegar à página. Tudo bem, mas então, no A P, eu disse, podemos nos sentir confiantes de que é pelo menos validar que a pessoa que está tentando fazer a operação tem autoridade para fazê-lo. Então deixe-me amar barco como o usuário no amor de volta como um administrador. Tudo bem, então em nenhum lugar no discurso, estamos usando nosso administrador para tentar de novo e vamos ver o que acontece. Então, quando eu enviar alterações e ele atinge ou ponto de quebra. Eu não posso ver que estamos recebendo de volta nenhum conteúdo. Então, não, sabemos que foi um sucesso. Ou pelo menos a dedução é que ele foi bem sucedido para que possamos remover o ponto de ruptura f cinco . Deixe-o continuar. Vai voltar ao início. E então, se eu ver os detalhes no dia, eu ainda tenho um ponto de interrupção. Apenas liberte isso. Quando vejo os detalhes, vemos que ele foi editado com sucesso. Lá vamos nós. Então, temos a edição. Temos trabalhando em DWI. Veja onde os olhos da AP rejeitam ativamente , você sabe no Thames para chamá-lo se a pessoa não é autenticada ou autorizada a realizar certas coisas. Então é isso que a Escola de Resposta Proibida, que é para todos os três e acredita que um 41 está em oferta em quatro três. Proibido. A Andi. Foi o que recebemos quando percebemos que estávamos usando um usuário inferior. Assim, os usuários da livraria são regra do cliente pode ver para que eles possam vir para o contrato e eu posso clicar sobre os detalhes e ver os livros e tudo mais. Mas o que eles não podem fazer é realmente editar e excluir. Certo, então precisamos modificar os Interferes e faremos isso mais tarde. Mas vamos modificar o interferir de tal forma que, quando um cliente fizer login, ele não verá o editor e o botão de exclusão. E mesmo que eles tentem navegar diretamente, você sabe que alguém que é inteligente no meu duro descobriu o padrão que poderia tentar. Autores barra vista r barra idiota cortar o i D. Nós ainda não queremos que eles sejam capazes de realizar qualquer coisa nessa página, então essa é uma das coisas que estaremos fazendo mais tarde. Mas, por enquanto, vemos isso por cima. Está funcionando bem, Andi. Mais uma vez, se não estiver funcionando, apenas certifique-se de que você não tem erros ortográficos ao longo do caminho. Então eu tive alguns erros de ortografia e resolver esses erros foram realmente porque eu não soletrar as coisas corretamente no projeto em sua você sabe, modo que pode descarrilar você e fazer você pensar que você tem uma grande era quando é realmente apenas um Menina menor. Então, apenas certifique-se de que os gastos são consistentes. Certifique-se de que você está nomeando convenções são consistentes quando voltarmos. Vamos olhar para finalizar a seção por um ID baixo média usuários toe
47. Setup Aper: Tudo bem, então estamos de volta, entendeu? Queremos lidar com a exclusão. Então temos você. Temos atualização e precisamos falar da liderança que já estabelecemos que só admite pode fazer a edição e excluir. Vamos manter uma sessão com o nosso almirante. Vou a Lagos começar a festa. Então, voltando para a nossa página de índice, vamos apenas copiar este link porque a exclusão vai parecer exatamente como os outros dois em vez de fora toda vez que vai dizer exclusões. Agora, depois de fazer isso, eu vou criar um componente porque o que eu quero é que quando você excluir da tabela , ele está indo para o pé. Você tomou a liderança da lista vai trazer o reboque. Ah, Page. Isso vai mostrar-lhe os detalhes. O que você está prestes a fazer e perguntar se seu trem particular curto para que eu tenha um novo componente . Chama-se “as pistas”. Então eu vou basicamente estar copiando e colando muito fora do tribunal das edições. Porque grande parte do tribunal, como onde o estabelecido parece muito semelhante. Então a página desta vez é excluir. Tudo bem. Já tenho o meu repo no meu gestor de navegação, Andre. O que? Posso mudar o título mais tarde. Então, o que mais eu preciso na página de edição? Basicamente, vou levar tudo aqui. O parâmetro, o modelo, o ISS falhou praticamente toda a seção escreve, A única diferença será o que eu realmente colocar no evento truque. Certo? Então, em vez disso fora. E também vamos ter deletar autor e deixe-me apenas Bem, tudo o resto pode ficar. Eu só parece relatar endpoint de atualizações para realmente ele em excluir o endpoint excluir está tomando a string. Você está nas
identidades . Não
preciso dos objetos modelo lá. Tudo bem, então é isso para o layout fora do negócio. Bem, o cordão Bem, isso é um começo para a seção de cordão fora do arquivo deletar, a vista. Mas então eu vou pedir o tribunal emprestado da tela da seção de visão, o que está prestes a ser excluído, certo? Então, na verdade, eu posso pegar tudo sobre este discurso do carregamento. Se as declarações estão imprimindo os detalhes, então eu estou levando tudo isso mesmo que não para a batalha leste. Tudo bem. Quero levar tudo neste campo. Tudo bem, mas então eu vou incluir uma reserva adicional nesta peça. Então deixe-me ver exatamente o que está acontecendo aqui em caso de perda. Então nossa exclusão está praticamente indo para navegar com o mesmo parâmetro i d que usamos
na exibição na edição quando ele chega aqui e é carregado. Quando os senhores da página deveriam recuperar esse registro do nosso A P I e lá estará usando esses dados para exibir. Então eu estou dizendo que o display aqui vai exatamente como ele teria sob edição na vista, Pidge. Mas depois, no topo, vou ver o nosso “Você” com certeza que quer. Desculpe. Você quer deletar esse registro. Então isso é como uma página de confirmação, certo? Diga, poderia levar vai vir aqui perguntando. Tem certeza de que deseja excluir esse registro? Porque você está dando a pessoa a chance de rever e ver Oh, é o registro errado. Eu sinto muito. Deixe-me voltar para a lista. Tudo bem. Mas, em seguida, se eles são menos de meses que há lugar direto e eles estão prestes a excluir. Então eu vou apenas duplicar essa batalha este botão e então eu vou dizer, Excluir autor direito em. Então eu vou colocar o ícone girado para ser ou eu Andi. Eu acho que ele tem como, bem, apenas reutilizar excluir. Então eu corri a liderança. Ou é apenas excluir brinquedo já evitar cinzas. Este é um nacionalmente atrair assim e, em seguida, a classe aqui será BT e traço Danger. Então este é um botão vermelho dizendo que Ei, você está prestes a excluir para que você possa prosseguir para excluir autor ou você pode voltar Então o clique aqui não será de volta para a lista para o clique no será. Exclui o autor. Tudo bem, então no clique, chamamos o autor principal, que então causa mais deleta metanfetamina passando no modelo com os modelos I d. chamar os autores e apontar, e se for bem sucedido, voltamos para a lista. Se não for bem sucedido, então dizemos que é sensação é verdade em então que é suportes. Dedo. Dê-nos uma pequena seção da era, então vamos nos concentrar nessa seção aérea. Então, de volta à edição, temos aquela seção da era. Então eu vou transformar isso em um componente. O mesmo. Retornamos a mensagem de carregamento intercomunicador puxá-lo para a direita. Então eu só vou cortar o dedo do pé que passar para compartilhar estranho em. Em seguida, vou adicionar um novo componente que estou chamando mensagem de erro. Vá em frente. E por isso e, por dentro disso, vou colocar os mesmos alertas, depois torná-lo um perigo. Então eu estou vinculando. Isto também. Alguma variável chamada mensagem, que é a nossa representação fora de um parâmetro. É isso que vamos chamar a mensagem, certo? Portanto, não podemos mensagens de erro possíveis ou personalizadas em. Eles serão exibidos nas mudanças de muco de um Pete fora para talvez um H três vezes. Então é mais pronunciado em, em seguida dentro de qualquer lugar que nós teríamos carregado manualmente para que eu possa voltar para o meu editor razão em seu campo testamento. Agora vou ver a mensagem de erro. São os meus componentes ligados. A mensagem será igual a um sermão por barra. A do autor,
a página de registo, Sargento. Veja, algo deu errado com a operação um pouco mais genérica. Tudo bem, então. Posso reutilizar. Isso falhou na minha seção de exclusão. Certo? Então eu copiei e colei entre dois componentes. Andi fez um novo componente com um tribunal mínimo porque mais uma vez, sabemos no que estamos nos metendo. Então é fácil navegar por aí, certo? Então, não, nós podemos testar este em, ter
certeza de que nossa exclusão funciona. Então eu só vou dedo do pé, vá em frente e vou dedicar mais. Tudo bem, então onde eles liberaram os autores já estavam em mim, e eu vou clicar. Exclui. Tudo bem. Então eu não quero apagar a anarquia. Essa é a pessoa errada. Então eu cliquei. Apague, e vejo que não sou os registros errados. Só voltar para a lista de quem eu quero apagar é realmente apenas uma brincadeira. Porque eu tenho dois registros. Vou apagar um da direita, Andi. Certo, Jyoti. Sobrenome biografia. - Nada. Sem livros. Isso está tudo bem. Deixe-me clicar no autor principal em Boom. Estamos de volta ao discurso do índice com um a menos apenas uma inclinação para o registro. Então ou excluir funciona assim que embrulhamos nossas operações rodoviárias e eu estou dizendo estrada e não multidão porque, bem, eu não tenho como criar um novo autor. Então isso é outra coisa que precisamos implementar, certo? Então, geralmente a partir do expediente tem abundância é criar. Também está ligado. Vamos trabalhar nisso no nosso próximo vídeo.
48. Criar o autor: Pessoal, bem-vindos de volta a este vídeo, vamos abordar a funcionalidade de criação para autores. Então, para começar esta operação, a primeira coisa que julgo necessária seria um botão que me permite navegar pela direita. Então nós fizemos os botões para todos os outros na seção l. Então, se o modelo é igual a saber, então nada acontece. Certo? Mas depois, quando algo acontece, Senhor, eu queria carregar com o botão, alguém para ver Angkor tog. Então ele riff. E então essa viagem vai ser um pouco mais simples do que as outras. Onde ele corta autores autores barra Então autores cortar Creta. Certo? Então eu não preciso de nenhum apartamento para nós porque eu vou estar criando algo novo em. Então nós damos tudo fora das contas e assobios que bootstrap nos dá um bt nbt e dash. No dia, eu encontraria esta primária. Tudo bem, então, o Texas vai ser criar um novo autor e então eu vou dar-lhe um pequeno ícone no
ícone de escolha é um sinal de mais. Certo? Então temos um botão lá em cima. Isso vai dizer criar. Você também sabe enquanto estou aqui. Outra coisa que me ocorre é que isso está exibindo enquanto não é se eles se o autor, bem, não
é enquanto a P que eu chamo está sendo feita. Não, depois que a chamada do FBI é feita, então modelo não é mais saber que é, mas então pode ter conta fora. Zero. Então, o que acontece quando é a primeira vez que o aplicativo está carregando corretamente? Os bancos de dados do FBI esvaziando a tabela de autores no DSO? Esta página está tentando carregar a lista, mas então não é conhecido, mas o zero atual. Então nós vimos algo que está na vista onde nós verificamos se há não ou os seres do milho sendo menos de um certo. Então, nesta situação, nós dissemos, bem, se não for, eles podem mostrar que apenas para a corrente mais fácil do que você exibir isso que era para evitar o árabe. Mas a realidade é que os cones voltaram um zero ou menos de um. E é por isso que vemos isso consistentemente com o oceano. Um árabe. Não, o ponto desse monólogo foi quando o modelo não é mais conhecido. Mas a contagem é menor que zero. Nós realmente queremos exibir esta mesa sem nada? Certo. Então nós vamos apenas exibir uma tabela com os títulos e então nós vamos conhecer o corpo. Então o que eu vou fazer aqui é colocar outra declaração se dentro. Então eu não estou colocando o criar novo autor na declaração porque se não há autores e eu quero, mas invisível para ver criando você também. Mas depois quero contar ao mundo. Então eu vou levar isso. Apenas corte-o. Vou colocar outra declaração “se” aqui. Eu quero dizer se o modelo pontos certo, e então lembre-se, modelo é esperado para ser uma coleção tão modelado off contagem é menor do que um. Certo? Então podemos mostrar outra coisa, e então eu vou colocar a minha mesa segura. É maior do que ou se não for menos do que um, então tudo bem, certo. Mas então, se for menos de um, então eu posso colocar talvez uma mensagem de carregamento. Tudo bem, lado, como você reutilizar meu componente em vez disso, a mensagem vai dizer que não há autores nas lojas de dados, por favor. Ou a loja por favor criar autor para começar direito? Então eu posso colocar isso entre aspas ou a Companhia não cantou. Tente aspas simples para que a pessoa tenha a ideia de que precisa clicar. Cria um novo autor para começar. Certo? Então isso é apenas um pouco de mediação fora de manipulação Segure o interferes parece certo. Então, neste ponto, se for o primeiro Senhor, se você entrar no banco de dados e excluir todos os autores, hum, então esta mensagem deve aparecer porque o autor conta com o milho modelo para ser menor que um Certo? Então não é mais não, mas não é menos que um. Então é padrão biológico. Ainda é não, mas tenho certeza que você pode apreciar isso. Está tratando de forma diferente de quando ele pode recuperar um cone e ver que um Coned é
menor do que um. Tudo bem. Não. Vamos começar com o nosso novo componente para criar. Então deixe-me entrar em autores, clique com o botão
direito. Adicionar novo item vem novo, que vai ser uma nova preocupação, um componente chamado cria em. Então eu realmente vou estar apenas copiando e colando tribunal. Ah, muito aqui de novo para que eu possa ir para a minha edição no Die provavelmente pode pegar tudo emprestado fora disso. Então, tudo na página de edição. Hum, eu não preciso do material do perímetro, então apenas copie isso para começar. Deixe-me. Eu também preciso de todas as declarações de uso que negligenciei sob mim Volte, obter meu uso no caminho da praia e tudo mais. Tudo bem. E então o pH aqui é criar sem parâmetro. Todos os direitos cria mais parâmetro. Já tenho o meu empresário suficiente para a Mary puxar. então eu fui ver criar um Eentão eu fui ver criar umnovo autor como o batendo em cima. Todos os direitos, meus olhos falharam. Então eu vou manter esse campo leste nessa altura. Eu tenho modelo, então eu não preciso verificar se o modelo não tem direitos. Eu realmente não, porque eu estou carregando um formulário em branco alguém para remover esta declaração inteira. Aqui. Andi, deixe-me ter certeza que matei o aparelho, então eu realmente quero me formar no Aargh. Aargh! Esta seção falhou. Então deixe-me rever esta cidade. Então, realmente, na verdade, tudo o que eu precisava da edição, eu não precisava das declarações. Eu só preciso do formulário de edição que vai comprar em algum modelo neste para ainda ter o envio inválido. E, em vez disso, off edit autor cria implacavelmente autor. Temos os mesmos sentimentos porque no final do dia, a criação vai precisar de nós para colocar no primeiro nome,
sobrenome e biografia mínimo podemos ver criar ofensa que todos submetem alterações. Tudo bem lá estavam prestes a listar. Tudo bem, então. Acredito que o tribunal bloqueado por acidentes é o tribunal de sinal. E então começamos a escrever o código que precisamos. Então a primeira coisa que vou declarar é algo para o modelo. Certo? Então eu tenho meus objetos privados fora do tipo modelo autor, e então todas essas linhas vermelhas no modelo desaparecerão. Andi, também
tenho campo. Tudo bem, então isso foi inicializado. dedo do pé cai inicialmente. E então temos que ter certeza de que temos as duas funções na forma de criar autor e ist batalha em Die. Só tomei a liberdade, colocando de volta no tribunal para navegar para trás. Autor. Por isso, temos tudo o que é necessário para este discurso. Tome Andi Então centenas alguns erros de ortografia bobos. Por todo o lado. Então a próxima coisa que precisamos saber é o punho. O que acontece em uma submissão válida? Criar autor, certo? Então, quando eu descer para criar também o que eu quero que aconteça? Preciso verificar. Posso ver que var é sucesso. É igual a afastá-lo. Uma chamada para o meu relatório de pontos de desvio criar em então, o que estamos criando requer as docas de endpoints. Autores em ponto vírgula andan autor objeto no formulário fora modelo porque real, eventualmente o que acontece é que quando você está criando o formulário, sua ligação, o valor do campo no modelo. Então, uma vez que você se sente tão velho que você clica envia em porque que o modelo
teria automaticamente os dados Uma vez que ele chega tão longe, nós sabemos que ele é validado por quaisquer padrões de validação reforçados através de nossa validação, e é anotações em. Então, se este sucesso tudo bem, em, eu só percebi que eu realmente não preciso ter sucesso em East Field. Então o que eu posso fazer é só eu vou fazer isso. Não, porque, você sabe, às vezes você está fazendo algo, e ainda assim ele se abre na sua frente, então seu sucesso será verdadeiro inicialmente, certo? Onda lá em cima. Vou ver se não é um sucesso. Então, em vez de ter duas variáveis que realmente estão fazendo a mesma coisa porque ambos são bilhões em seus dois depende se a chamada é bem sucedida ou não, certo? Então eu estou dizendo, se não for sucesso, então mostre a mensagem de erro, que significa que porque é verdade quando a página carrega esta mensagem de erro não mostrará não . Então eu vou dizer que o sucesso dele é basicamente, hum, vai ser igual à água desde que volte da chamada de repo. Tudo bem, então eu posso ver se o sucesso significa que isso continua sendo Truell. Lembro-me que estamos a verificar se significa através da nossa Quando estamos a verificar isto, a única forma de não ser verdade. Deus começando por nós. Verdade, então, continuará a ser verdade se isso foi bem sucedido, então podemos ligar de volta para a lista. Nós nunca devolvemos à lista, que então vai apenas retirar todos os autores do FBI ou através da A.
Certo. Mas então, se isso mudar direito, então isso não será demitido em Dwell. Isso seria demitido ou aquele estado ou mudaria. Depois acabamos com esta mensagem de seta. Tudo bem, então vamos dizer isso para dar uma volta. Então vamos começar. Muito bem, então estamos de volta à nossa vista e vemos o teu botão no “Dwell”. Vamos consertar nos Pequenos Reis sobre, você sabe, o espaçamento e assim por diante. Mas o importante é que quando clicamos em nosso botão, navegamos para nossa nova página e então eu vou em frente e colocar um novo autor, certo? E então eu vou em frente e clique no botão. O que me traz de volta à minha primeira página e estou vendo minhas novas adições. Então a criação funciona, Tudo bem, então a única maneira de não funcionar é se talvez o P que eu não estava executando ou se houvesse algum ar
gastando pelo caminho ou algum problema de permissões. Lembre-se que o administrador deve ser capaz de clicar neste link e ser capaz de fazer qualquer coisa. Então, Makesem, vamos nos concentrar em algumas correções essenciais. Alguns fora das cargas. Você sabe,
reis aqui e ali também colocarão algumas autorizações nos links para
garantirque eles não mostram ou rejeitam ativamente pessoas não autorizadas de
acessá-los. Você sabe, reis aqui e ali também colocarão algumas autorizações nos links para
garantir que eles não mostram ou rejeitam ativamente pessoas não autorizadas de
acessá-los
49. Fixos de layout essenciais e adições: Pessoal, Pessoal, bem-vindos de volta ao vídeo. Nós só vamos ver nossas páginas e fazer algo que eu considere essencial conserta um minuto de idéias diferentes de mim, e tudo bem. Mas eu só quero limpar um pouco a interface, e eu vou começar com meus componentes personalizados. Então, no calor da batalha com provavelmente tomou algumas decisões que, bem, quero dizer algumas decisões que estou prestes a mudar, começando com o meu componente de mensagem de carregamento. Não, eu não quero em cada três tuck e provavelmente quero um puxão H cinco. Quero que seja uma informação de alerta e não secundária, certo? Então não é tão agressivo em sua apresentação. Então essa é a mensagem de Lording. Vou repetir uma coisa. Repita muito. Eu quero que o alerta descartável também seja uma vila por alerta, um, para alertas de época, outros perigosos, instáveis uma vez contra cada cinco e não um H três. Então, eu terminei com essas duas modificações em andamento em meus collants principais. Tudo bem, então em compartilhado, você pode ir até mim e Leo sobre o que eu vou fazer neste arquivo em particular é colocar o conteúdo dentro de um cartão. Tudo bem, então eu tenho que fazer alguns ajustes para substituir toda a seção dentro do Dave principal com o cartão, uh, dar informações voltando de Bootstrap. Acho que tenho muitas profundezas aqui ou uma vez em Sewa. Tudo bem, lá vamos nós. Então o que estou fazendo aqui é que estou vendo dentro do conteúdo. Esse é o problema. Dentro do ar de conteúdo que temos vindo a renderizar apenas corpo abaixo de 60 milhões de estações. Vou colocar um corpo dentro de um cartão. Dips teria feito o cartão se com registro e login. E é por isso que eu tenho eles abertos também. Então aqui estou eu dizendo que eu quero um carro que eu quero um corpo de cartão para ter o corpo nele. Certo, então é isso que estou fazendo lá. Então, para registrar onde estávamos criando o cartão, Eu não vou mais estar usando o cartão aqui em Eu não estou mais dando isso. Bem, eu posso deixar isso com o título do carro, hum, a classe do título do carro. Então eu não estou mais colocando o cartão apenas no registro, mas nenhuma página vai. Olha, vamos ter aquela pequena fronteira. Como o que o login e o registro p só tinha a saber. Certo? Então esse é o registro. Vou fazer o mesmo pelo Le Guin. Pegue todo o cartão, Diego que dá. E eu estou apenas destacando e usando o turno e o dedo do pé da banheira, puxá-lo de volta para a esquerda. Tudo bem. E então eu posso padrão como minhas mensagens de erro aqui. , Veja, estou usando os que escrevemos primeiro que algo deu errado. Algo deu errado. Em vez disso, vou usar meus componentes de mensagem de seta para que eu possa mudar aqui. Mensagem de seta ligada. O legal é que eu quero mudar. abertura vai mudar as roupas também, e eu posso tirar isso, então eu vou fazer. Oh, desculpe. E depois mensagem. Correto. Precisamos passar isso como uma mensagem. Então você está tão perto? Certo, então há uma mensagem na verdade não precisa dessa parte de fechamento. É uma chamada de auto-fechamento. Tudo bem, isso parece melhor. Há uma mensagem? E então passamos a mensagem de que eu ia copiar isso para que eu não tenha que
açoitar aquele em log tanto. Andi,
eu só fui ver com a tentativa de registro e, em seguida, remove este. Tudo bem, então é isso para as cargas principais na caixa registradora e no registro para que eu possa fechar as janelas. Tudo bem, então vou revelar o que eu não preciso e depois dentro do autor idiota. Vou adicionar a classe que diz título do cartão. Então isso é que sabemos em todos os pontos onde estamos e olha para cima. É mais orgânico. Eu poderia se encaixar na direita apenas para cair atual em gastos erros ortográficos da
mensagem de carregamento . A mensagem de erro. Acho que não preciso fazer mais mudanças estéticas aqui. Mas lembre-se que nossas edições, excluir e criar páginas são reservadas para o nosso, hum, para o nosso eu estive em roupas de rua direito, que significa que eu não quero que um cliente vá diretamente para nenhum desses. Então, há duas coisas. Um, vou escondê-lo no menu. É quando chego ao índice. Eu vou estar escondendo esses botões no menu, mas eu também quero dizer a página que apenas esta regra particular é autorizado dedo do pé mesmo. Olhe para a cama. Então, mesmo que eles naveguem até ele manualmente tocando na URL, essa velocidade ainda deve rejeitar suas tentativas de ir mais longe porque eles não pertencem. Tudo bem, então o que vou escrever aqui é sobre atributos. Isso mesmo, outra página que vemos em San atributos em. Então eu estou adicionando um atributo cancelado da reserva. Certo, lembre-se do mesmo atributo de autorização que construímos no PI. É aplicável aqui diretamente dentro do componente de reserva, certo? Então eu posso dizer que as regras são iguais. E então eu posso dizer adicionar turnê do ministério. Tudo bem. Então, mesmo que a p I esteja rejeitando as tentativas como vimos antes de criar nosso editor ou fazer qualquer coisa que os clientes e supostamente fazer, mesmo que o AP esteja rejeitando, podemos construir nossos clientes também aderir a essas regras . Então isso nos poupa do
A.P . Eu chamo certo, porque cada vez talvez você esteja usando um serviço que ele custa para chamar o FBI. Então você quer deixar o cliente minimizar aqueles um par porque tanto quanto possível, então na exclusão nós fazemos a mesma coisa em eu vou também colocar este dedo do pé tem o cartão. Desculpe. Classique Waas cartão título traço. Certo, então vamos deletar. Acho que não preciso mudar mais nada aqui que o Andam criou. Fazemos a mesma coisa em que adicionamos esse atributo apenas para administradores. Deixe o que o título tem cartão título traço. E se você acha que sabe, um pouco de flare que você provavelmente pode colocar em cada uma é regra horizontal por baixo disso, então você tem , tipo, uma pequena linha para mostrar. Tudo bem, então vou colocar um rebocador. Sabe, só
estou pensando muito. Eu não sei como isso vai parecer. Só estou fazendo essas coisas. Podem seguir-me, se quiseres. Você não precisa, mas eu estou apenas colocando como um espaço entre o título e, em seguida, alinhar e em outro espaço antes do próximo bit off conteúdo. Nem tudo parece tão perto como vimos. E então no aumento do índice ou eu vou fazer a mesma coisa colocar nessas linhas, colocar na classe, mas então no índice, todos devem ter acesso. Já
estou autorizando o acesso ao discurso do índice através das aplicações internas. Eu não preciso fazer nenhum modelo especial de autorização em cima disso de novo. Certo? Então eu estou indo de uma maneira diferente doente e autorizo você ver que nós temos a
visão de autorização que estão prestes a olhar tão bem, nós estamos em não-autorizado quando Index, não, sobre o que nós vamos fazer é configurar que apenas o administrador pode ver este botão. Tudo bem, então se eu quiser que apenas os administradores vejam este botão, não estamos dizendo aos administradores sozinhos para ver. O espírito vai querer limitar a visibilidade deste botão para que eu possa dizer autorizar vista. Então vamos ver um autor como você a partir de um exemplo anterior. Com o menu podemos ver regras é igual a adicionar ministério ter. Tudo bem, em qualquer assunto que Emily colocou dentro dessa visão autorizada, Todd só aparecerá quando o atributo para as regras estiver satisfeito. E assim podemos fazer isso para nossos botões também. Então, temos o botão de visualização do botão de edição e ou excluir pontos. Eu só quero que os administradores sejam capazes de ver esses botões, entender o cozido em, em seguida, ver, autorizar regras de combustível igual adicionar ministério em seguida e, em seguida, dentro desta seção de
visão autorizada . Só vou dizer que são dois botões. Certo, então vamos dar uma olhada rápida no que temos quando nos conectarmos. Os dois usuários diferentes são. Então eu estou amando aqui como Delia em ir para cima dos autores. E então eu vejo aqui que bem, eu estou vendo essa fronteira. Estou vendo meu discurso de índice um pouco de luz do dia. Bem, talvez eu possa remover isso primeiro, ser nosso porque os cães da idade têm um pouco de colocar, então tudo bem. Nós temos essa linha e então eu só estou vendo as opções que são aplicáveis a um cliente que são para ver. E então se eu clicar em ver, ele entra Ok, eu volto a lista, mas eu não posso fazer mais nada porque eu sou apenas um cliente. Para que possamos impor autorizações do lado da U.I. Assim por diante. Então você vê isso adicionando o carro para o “me lay out”. Qualquer outra peça que eu iria em também vai ter aquele cartão tipo fora olhar e sentir para ele. Tudo bem. Há uma coisa. Vou modificar aqui quando se trata de meus autores, e isso é do lado A P I. Randall está dizendo que não há livros para esse autor, mas estou dolorido. Pelo menos um livro está lá.
50. Fixar a resposta de JSON: Ei, pessoal, bem-vindos de volta ao vídeo. Vamos resolver esse problema onde os autores não estão vendo os livros estão. Quando olhamos para o autor, não
vemos o livro. Então a verdadeira razão é que precisamos de um dedo. Adicione esta linha fora do campo sobre o Repositório. Onde estamos vendo incluem os livros, certo? Assim, os autores de um autor tem uma lista de livros, então estamos vendo quando você recupera os autores para tratar a lista de livros anexados a eles são incluídos nos dados. Então é isso que essa linha está realmente vendo. Então nós estamos adicionando isso para encontrar tudo sobre. Em seguida, em um refrator, o tribunal um pouco mais na frente por idéia onde eu adicionei a mesma linha. Mas eu mudei de encontrar pelo nosso encontrar um A acho que eu acho que foi o dedo do pé primeiro o nosso padrão a cantar, e então usamos uma expressão lambda para comparar o i. D no registro do autor com a idéia que estamos procurando. Então é o mesmo efeito apenas no tribunal diferente em então a próxima coisa que precisamos fazer é incluir de você obter uma biblioteca chamada SB net core dot NBC dot Newton soft Jason. Então, há um aqui. Ninguém se auto-Jason. Quero dizer, funciona, mas porque foram introduzidos núcleo 3.1, queremos o que é especialmente projetado para o certo, então vamos conseguir isso. Não carregue no nosso projeto. Então nossa próxima ação terá. Vamos passar para o nosso início dessa série onde vamos adicionar aos controladores de ato uma opção
especial cortesia fora da biblioteca. Nós apenas instalamos alguém para dizer Docked Odd novo vira suave J filho. Tudo bem, vamos, então vamos abrir. Algumas opções estão indo para dizer Opie para gráficos são para curto. Andi,
eu só vou quebrar a linha aqui. Alguém que diga, Opie, deixe-me fechar o aparelho antes que eu esqueça. Então, Opie ou opções ancoradas? Quero serializar ou sentar um pouco de cereal. As sessões de Isar ancoraram os nossos amigos. E então, se você olhar, você verá o manuseio de loop de referência removido. A entrega de livros mais referência. Então, um livro de referência significa que cada entidade sabe sobre o outro. Isso é um problema, certo? Então manipulação de loop de referência é igual a Newtown pontos suaves J filho pontos em. Deixe-me quebrar a linha de novo para não irmos muito longe da tela. Newton está fora do grupo de referência Jason Dot. Certo, então vamos dizer ao controlador de
O.R. Que queremos que o Newton deslide com a referência do loop, e eu vou dizer que Ignore alguma visão anule a atenção que você estaria em sua atenção. Você está pagando para a questão sobre aquele Newton suave lidar com ele e ninguém Soft vai apenas
ver . Ignore essa referência. Certo, então vamos tentar começar nosso projeto. Tudo bem, então vamos de novo. Então dentro para aplicação, certo? Íamos dizer autores, e depois trazemos a lista dos autores. Pode demorar um pouco mais porque não, há uma perna extra fora, incluindo os livros. Mas uma vez que você está vendo essa lista, isso é bom, porque eu fiz isso antes. Eu não estou adicionando todo o material de referência Jason, então se você acabou de adicioná-lo em repouso terrivelmente no suco de Newton em ignorar parte, então isso nunca se moveria mais rápido carregando mensagem diretamente. Então, quando eu olho para ele como um Evans, eu sei que ela tem um livro, e lá vamos nós. Então esse é o título do livro. O livro não tem nenhum preço, então os dados podem não ser uma tela, mas o ponto é que isso não está mais dizendo que não há livros. Então este autor, estamos recebendo pelo autor em Estamos vendo os livros aqui para o referido autor, então podemos primeiro garantir que está tudo bem. Tudo bem, pronto, é
isso para esta atividade. Então, em seguida, vamos apenas rever todas as modificações que foram feitas e, em seguida, verificar nossas alterações.
51. Analisar e adicionar mudanças no GitHub: Ei, pessoal, bem-vindos de volta neste vídeo apenas para rever algumas das mudanças que fizemos nesta seção sobre diferenças lá quaisquer outras magnitudes que precisamos para nos fazer rever, então vocês apenas conhecê-las. Então eu vou começar com a palavra que fizemos no repositório baseado ou o fato que nós criamos o repositório de autor olho para herdar do repositório baseado
mais uma vez . O raciocínio para isso é o fato de que as operações atuais sempre passarão pelas feras. E a maior parte do que estamos fazendo com as funções de autor, repositório ou autor autor seria grosseiro. Então, só ter ele implementa o pôster do baster que nós déspotas na aula de autor. Então ele vai tomar medidas contra a classe de autor para o ponto relevante, como nós especificamos, certo? Então, no repositório baseado, eu também modifiquei. Então essa é a interface ou contrato também foram modificados, hum dedo incluir o direito de armazenamento local, que
possamos recuperar da história local para suportar conversa e incluído no
batedor de autorização para cada pedido, porque então precisamos ter certeza de que a pessoa está autorizada a levar todas as opções. Você pode querer embrulhar isso em capturas de pista, certo? Então, o que? O que pode acontecer às vezes que, com base na forma como o aplicativo, aqueles que o viram a partir do Senhor e autenticação, o acesso fora do armazenamento local pode tentar acontecer antes que algumas outras coisas sejam exibidas no lugar para que você possa interromper esses intrincado é tipo de minimizar o esmagamento que pode acontecer em sua aplicação. Então fomos em frente e fizemos isso com todas as solicitações, apenas obtendo o token do portador e incluindo-o no cabeçalho dos clientes. Nós também fomos em frente e modificamos nosso autor. Bem, criamos páginas do autor, então criamos uma nova foto em que colocamos os componentes e olhamos para a diferença entre cada componente e o que podemos fazer se as declarações nos ajudarem ainda dar
problemas visíveis para os usuários para o que está acontecendo, como podemos criar componentes personalizados. Então eu não tenho que continuar a reescrever o mesmo tribunal, mas você sabe, mensagem
de erro versus mensagem de carregamento nesse tipo de coisas. Analisamos todos os limites de fim de semana, pessoas
autorizadas ou pessoas autenticadas com base em suas autorizações. Então começamos com o nosso menu são, bem, não bem, nós fizemos isso com o menu já, mas fizemos isso mais ainda no discurso de índice onde dissemos que somente os administradores serão capazes de visualizar o ativado. Somente os administradores poderão editar nossa exibição, as opções de edição e exclusão. Então nós também olhamos para o fim de semana inteiro realmente para essa autorização para a página, adicionando esses atributos para especificar qual regra pode fazer o quê. Então fizemos um pouco. Sei que vamos verificar bem antes de seguirmos em frente. Uma coisa muito importante que fizemos foi incluir na inicialização do FBI que ele deveria ignorar as referências circulares, arte ou referências em loop no DSO. Se você está fazendo um projeto maior com mais relacionamentos do que apenas um autor e um livro como eu estou fazendo aqui, então isso vai ser útil quando você está tentando obter essas cargas com o autor ea lista fora de livros são ou o único entidade com a lista fora da entidade ou entidades relacionadas. Então isso vai longe na resolução de muitos problemas em aplicações maiores. Então vamos em frente e verificar todas as nossas mudanças. Eu distraí a solução. Vá se comprometer, Andi. Coloquei minha mensagem, adicionei operações grosseiras do autor e corrigi alguns problemas de A p I. Eu vou em frente e cometer toda Onda afundar.
52. Configurar o livro - parte 1: Ei, pessoal, bem-vindos de volta nesta lista, nós vamos estar configurando ou criar funcionalidade para nossos livros sobre isso está indo para eu estava fazendo algumas atividades, então apenas ficar por perto e se divertir comigo. Então vamos começar indo para a pasta de livros indo para o dedo do pé. Acrescente. Criando Sobre Mais Recentes é um componente que vai ser sobre cria E quando o componente é criado todos nós equipado com seu caminho no topo o atributo para autorização E nós estamos apenas autorizando administradores em nós estamos injetando o repositório de livros como bem como o Repositório
autor Também fez um táxi de rua criar livro Não em ou criar ex-indo para ter ah, novo Todd. Bem, não
é novo. Nós já fizemos isso antes, mas a hora é editar forma, que é um blazer italiano especializado. Nós vamos deixá-lo saber que o modelo que deve ser atenção toe é modelo em, em seguida, em enviar
válido Nós queríamos lidar criar operação. Certo, então obviamente não temos nenhum modelo ainda, então eu preciso declarar um objeto modelo dentro do cordão, e eu fui ver um modelo de livro particular é igual a um novo livro. Tudo bem, agora, há um número de coisas que temos que realizar. E eu tento o meu melhor para não, você sabe, estar em todo lugar e rastreá-lo de forma estruturada. Então eu vou começar a preencher os campos para o formulário. Tudo bem, então as duas primeiras coisas que temos em nosso formulário são nosso validador de anotações de dados em nosso resumo
de validação. Tudo bem, então é só para que nós também precisamos adicionar anotações ao nosso modelo de livro. Mas mais uma vez, há apenas ir mal eles um por um. Então eu quero na seção de entrada para o título do livro. Tudo bem, então usando Bootstrap Smith estranho para a forma, eu só vou dizer deixar classe grupo holandês em. Então eu tenho o rótulo para a idéia ou para qualquer propriedade. Desculpe elemento tem o título i d em. Então temos o nosso texto. Então os técnicos de entrada eram vinculativos. Esse valor para modelar título escuro fora da rota para dar-lhe o controle de formulário no I D off título é a próxima sensação que vamos nos preparar é o ISBN. Então é basicamente a mesma coisa, exceto que mudamos todo o rótulo para o texto na encadernação. Então essa é a seção para o “I's bien”. Também queremos facilitar a entrada de um preço para que tudo seja o mesmo. Exceto que a entrada não é nenhum número de entrada. Tudo bem, então o preço não é uma string, é um valor numérico. Então nós temos que usar o número de entrada porque vamos obter alguma forma fora da era. Na verdade, cometeu esse erro já começou a apontar. Disse a você que quando é numérico você tem o número de entrada especificamente por essa razão? Não, o próximo que eu gostaria de entrar seria o autor. Tudo bem, então eu quero indicar quem escreveu este livro sobre eles. Para mim, um controle apropriado para isso seria uma lista suspensa. Agora aqui vem o nosso primeiro tipo fora excitável, fora da operação normal. Então, para obter uma lista suspensa no blazer bem, para obter uma lista suspensa fora dos autores, isso significa que vamos ter que buscar a lista de autores do autor N p r a p i n ponto. É por isso que, caso esteja se perguntando por que mandei injetar isso. É por isso que eu tenho isso injetado. Então eu vou ter um dedo no cordão, fazer uma ligação para o autor. Então, o que eu vou fazer no tribunal, você diz. Já coloquei o grupo de formulários e o rótulo. Então eu vou deixar isso, portanto. Não, mas vou tirar daqui da quadra. Então eu fui toe ter protegido em, em seguida, substituir uma tarefa pia em inicializado a pia em, em seguida, esta função em. Todos sabemos que isto é o que Lourdes Quando os Senhores Componentes, isto vai ser disparado dentro disto, temos de encher alguns barris. Preciso de uma variável que tenha a lista desligada. Autor. Então, vou dizer em particular. Ah, eu aluguei tipo autor,
autor modelo bur, certo? E então o nome disto é autores, certo? Então isso não vai ter nenhum valor inicialmente, mas então na inicialização,
fora ou forma, fora ou forma, eu vou ver que eu quero que os autores sejam iguais e, em seguida, esperamos o resultado do nosso relatório de
autor que obtenham Vejo-te. Mesmo que eu esteja lidando com livros. Eu posso chamar qualquer repositório que eu quiser no ponto em que eu precisar dele. Ponha os dados. Então. Uma vez que eu tenho autores, eu não posso usar. São os filetes, uma lista de autores. Tudo bem, então eu preciso realmente construir essa lista suspensa. Então, se você é apenas uma outra forma de NBC que na verdade apenas sobre controle ou outro uso fora que pode questionar Veja, eles teriam um controle. Não temos controle, pelo
menos talvez ainda não. Então vamos trabalhar com o quê? Temos alguém para criar uma lista de seleção. Tudo bem, vamos. Então eu vou dizer que eu quero vincular o valor desta lista de seleção toe atribuído modelo ancorado autor I li. Então, isso significa que qualquer autor selecionado nesta lista suspensa Eu estou rastreando esse valor . Como no primeiro submetido? Esse é o valor que pretendo usar para apresentar um pouco de facilidade. Tudo bem, e então outros atributos para os sem dormir seria o fato de que é um formulário de controle sobre a idéia é o escritório A C ou copiar e colar para mim. Então rotule quatro Autor em idéias. Autor. Havia pessoas. Tudo bem? Isso provavelmente não te apanhou. Então, tudo bem. Não, eu quero ter a primeira opção sendo o seletor genérico ou observações fora do sinal de at . Tudo bem, então o 1º 1 vai ser a opção genérica para dizer, Basta selecionar no autor Onda. Eu sou tão Oh, isso deve ser cego ou não nos cegar valor. Peço desculpas. Então, isso deve ser na ligação assinada em, então. Modelo de ponto autor I d direito. Então, temos a primeira opção sendo um genérico, Nenhum valor select autor não são. Mas então todas as outras opções eu quero dizer se agora essas declarações foram checadas Se algo é conhecido, como podemos dizer, eu espero que possamos dizer, mas eu sei que eles são muito importantes. Então este deve ter o sinal de at se tudo bem, estamos verificando se os autores não é igual eterno,
em seguida, realizar a operação. Porque se você tentar realizar a operação enquanto ela é nula e sabemos que
não será sobre as páginas inicializadas em um plano para o AP e responder por mais tempo que possa demorar, não
queremos que o componente falhe. Tudo bem, então para onde eles carregavam este velho quando ele não é mais conhecido. Então, se Autores não é conhecido do que para cada um e eu sou eu apenas escrevi para cada um e pressionado duas vezes e gerou que para mim. E eu vou dizer autor em Autores que eu quero em opções estão realmente apenas indo para copiar isso. Então, para cada autor, eu quero criar uma opção que tem o valor fora autor escurece Heidi Voltando da lista de autores que vão do banco de dados sobre o que deve ser exibido será o
primeiro nome do autor Neil Onda. Tudo bem, então o que isso vai fazer é gerar uma lista suspensa para mim para cada autor que está no banco de dados quando este AP que eu chamo é feito vai trazê-los de volta aqui. Então, quero dizer, se você quer ficar chique colocando em auto completo porque talvez esta lista eu quero dizer, com 100 autores que eu deixei cair, isso pode não ser o mais prático, mas para não, vamos apenas trabalhar com a sua próxima seção na minha forma de água já criado. O acordo para o grupo de formulários seria para o nosso upload, então acabei de ter uma gravadora no dia anterior à Andi. Eu não deveria ser perfilado. Desculpe, eu me empolhei. Esta deve ser a capa do livro. Tudo bem, então a foto do livro, foto da capa do livro, seja lá onde você quiser chamá-la que está na nossa gravadora. Então eu preciso de uma opinião especializada aqui sobre eles, que eu tenho que ir para novo obter e obter uma mentira antes disso. Então vamos fazer isso juntos. Então eu fui para o New Gets e Justin te dá para ganhar. Isso é ir para a solução, certo? Clique no projeto em, em
seguida, vá para gerenciar para obter pacotes em. Estamos procurando pelo arquivo de entrada do blazer. Certo, então o arquivo de entrada do blazer. Certifique-se de que você tem o incluir pré realmente vara porque, bem, mais
uma vez, esta é a tecnologia de borda sangrando, então há um resultado lá, mas um está sendo trabalhado em. Então, quando você incluir o pré-lançamento, você recebe este. É o arquivo de entrada do blazer dele. Só queremos não saber isso no nosso projeto. E uma vez que isso é feito, precisamos ter certeza de que estamos coned para aquele prato no projeto Tore. Então, nossa primeira modificação vai ser para o nosso lado arquivo hosts a pontuação para solução Explorer. Encontrar anfitriões estão lá. Ele está nas páginas no arquivo host de pontuação em, em
seguida, sob o blazer, não ponto gs servidor. Eu vou adicionar este script onde eu estou fazendo referência sobre a pontuação conteúdo barra blazer entrada arquivo barra arquivo de entrada ponto Js em nossa próxima modificação é em nossas importações, então eu apenas encontrar importações rapidamente. Lá dentro, estaremos adicionando uma instrução de uso para direitos de arquivo de entrada blazer. Então saiba que temos aqueles instalar ou entrar em nossos diretórios de aplicativos. Estou revelando tudo o que não preciso. Não, posso acessar um componente especializado chamado arquivo de entrada. Então eu abri meu dedo do pé e eu digo arquivo de entrada direito sobre. Então eu tenho que colocar algo lá dentro para dizer inalterado. Então vamos dar funções a ele. Eu só uma seleção de arquivos, tudo bem, e então isso é um auto-fechamento Tuck. Depois, no final. Bem, para terminar o formulário, eu estou apenas adicionando uma batida de botão e primária tem um ícone de lápis e que vai dizer, criar livro sobre. Então eu vou ter um que diga de volta a isso, que é apenas para voltar. Então essa originalidade teve um choro impuro, então, como eu disse, não
importa. Então, o que você faria? Muito é definido todas as funções do, então eu preciso definir identificador cria seleção identificador. Andi, volta à lista. Tudo bem. Alguém para começar com o mais fácil de realizar. E esta batalha é tão grande. Orderto usado Apoiado uma lista. Vou pedir ao meu gestor de navegação. Tudo bem, sinto muito. Deve ser esse sinal. Injetar monitor de navegação na pontuação, gerenciador de
navegação. E depois vou enfrentar a disfunção da batalha primeiro. Então, estou apenas a reboque. Tenha privado evitar lista de volta do dedo do pé em então. Isso só vai chamar gerente suficiente Onda Se que navega para a frente. Então o caminho para o qual estamos navegando é barra de livros barra. Então ele está voltando para o discurso de índice para nossos livros Semi cólon, e é isso para essa função. Agora vamos entrar em assuntos mais sérios, a fim de empilhar o arquivo que não é submetido ou pelo
menos, selecionado, Certo. Então lembre-se, nós temos em desacorrente, então nós vamos realmente estar coletando esse arquivo e temporariamente segurando-o. Bem, o que eu preciso é de uma variável que realmente vai ter esse arquivo. Então eu vou ter um ah particular, propriedade fora do tipo I lista de fogo na entrada em. Vai ter o arquivo de nomes. Tudo bem, vamos, então. Obviamente, nós vamos fazer um P. Eu ligo. Então eu também vou fazer o meu ouro pelo seu sucesso. Mas eu quero fazer isso global porque eu vou usá-lo de uma certa maneira que eu não acho que eu já usei antes, então nós vamos ser um pouco criativos com o tribunal, certo? Então, não, eu vou escrever meu telefone mostrado dedo do pé lidar com as seleções de fogo. Eu ainda não estou bem no lugar onde eu vou pegar o arquivo ou obter a submissão. Então nós queremos lidar com o fogo selecionado primeiro, então eu vou ter. Perdoe minha ortografia atroz. Privado Um identificador de tarefa pia. Basta copiar isso, então eu acho que eu vou digitá-lo mais rápido, lidar com a seleção de arquivo em então ele vai tirar o parâmetro off são um perímetro fora do tipo I arquivo em truques. Então, estou apenas copiando isso, mas é realmente uma ária. Tudo bem, então isso significa, você sabe, se formos carregar vários ventiladores para serem selecionados. Bem, é
assim que eles passariam por muita coisa. Mas como sabemos que só queremos um arquivo, mesmo que seja múltiplo ou selecionado ou estamos facilitando vários cantos, sabemos que só queremos um. Então vamos supor que o 1º 1 no potencial Ari é o fogo que queremos. Tudo bem, então nós estamos recebendo o primeiro nosso padrão da área que entrou em. Estamos armazenando isso em nossa variável nosso arquivo de propriedade que declaramos anteriormente. Então eu vou dizer se os arquivos não são iguais para saber, o que eu quero fazer? Tudo bem. Então, se o arquivo não é igual a saber e esta é uma capa de livro, isso não é Ah, livro Summer. Não é um documento. Então eu sei que eu só quero imagens, certo? Então eu vou querer ter certeza de que o nome do arquivo é um certo Bem, é uma certa extensão. Eu só quero em Há muitas maneiras de verificar extensões, mas eu vou mantê-lo simples. Alguma distância. Ele é uma declaração simples só para garantir que este arquivo nossa Lisa finalmente, hum. Afirma JPEG PNG, Far Jeff são E esses são Bem, vamos limitá-lo a Jim Pick. Então, você conhece Jay Peak e B J P G ou J E P G em PNG. Esses são os três que estamos atendendo. Então eu vou primeiro, pegar o nome. Tudo bem. Tão arrependido. Este esperma deveria ter sido chamado de arquivos. Repare na linha vermelha. Tudo bem. Sim, isso está funcionando. Não. Então, primeiro estou tirando o nome do jejum enviado. Então o nome Vier é igual a arquivar esse nome. Então eu vou toe tem uma simples instrução if para verificar se o nome ponto contém as letras J p g. Ou devo dizer a string PNG ou a string J. Paige. Tudo bem, então isso é essencialmente o que estamos verificando lá. Acho que deixei uma brisa. Certo, assim que estivermos verificando e se isso acontecer, então o que eu quero fazer é exibir essa foto na tela, então ,
não, eu vou ter que outra variável, certo? Então eu vou ter outro verbal particular sobre este ou propriedade, e este vai ser dados de imagem string. Você é tão nós vamos realmente estar analisando a imagem no reboque. Para chamar nossa memória e exibi-la no poço. Então isso é todo ou isso é tipo de pessoas inteiras realizadas exibindo visualizações imagens
carregadas para alguém declarar,
hum, hum, variável fora do tipo de fluxo de memória sobreviver m s é igualdade novo fluxo de membro e isso está indo tem alguns requisitos de biblioteca. Então eu posso colocar a instrução usando neste arquivo ou neste componente. Então eu preciso do sistema que eu todos para isso. Tudo bem, então eu não coloquei globalmente em todas as importações. Você pode, se quiser. Como eu disse, cabe a você. Certo. Mas depois de declararmos, lembre-se stream, eu vou ter que esperar arquivo que os dados, em
seguida, os dados no arquivo. Vou copiar dois. Então, há realmente uma cópia para um canto e nós estamos copiando os dados dos arquivos para a
rua da memória . Certo, então é isso que essa linha está fazendo. Então nós temos o nosso ou e eu quero economizar ferro há igual a um novo leitor de fluxo
nesta rua. Leitores lendo os dados do arquivo. Então vamos dar o pé. Então você vê que há alguns passos para fazer isso, que eu preciso obter a string incluída alguém para salvar nossa imagem. Dados do compartimento 64. Tudo bem, então vamos convertê-lo em uma base. 64 string é igual a converter encaixado Toe Bay 64 string em. Então. Isso requer uma área de mordida, que nós só, um bem, nós precisamos preencher esta área de mordida usando o que está no fluxo de memória. Então, vamos ver “M” atracado. Em seguida, ele tem uma função DeSisto ari, que converte isso em uma matriz de mordida. Tudo bem, então. Acho que preciso estar um pouco mais bem. Sim. Achei que precisava ser explícita com o vire em vez de seis. Bem, vendo corda em vez de fogo. Mas ainda é renderiza um baixo cordas. Isso é bom em. Então eu posso. Então isso significa que eu preciso de outra variável. Então eu já tenho a variável. Você perdeu dados. Você é outra coisa. Vou ver os dados da imagem. Você Earl é igual a on. Então eu estou com as cordas especiais de quatro meses
A, o formato de ponto de string. Então vamos passar pelo teatro. Holan, imagem barra p e G Tudo bem em, em seguida, definiu o no fio, que é a base 64. Tudo bem, coma. Então eu realmente preciso de corda. Quatro meses. Eu poderia ter usado concatenação ou interpoluição, mas tudo bem. Então o que eu estou dizendo é que eu quero gastar meu formato corretamente. Eu estou construindo uma string especial que tem dados legais na imagem barra PNG em, em
seguida, ele vendo que base 64 então ele vai fornecer o valor fora do básico antes, que é o que temos aqui. Imagem baseada 64 dados. Então eu acho que colocar uma vírgula,
colocar isso lá. Tudo bem. E então o que tudo isso vai fazer é temporariamente Senhor qualquer imagem carregada na memória para que possamos exibir para visualização, certo? Todo esse esforço para obter uma pequena prévia. Então eu vou querer colocar a seção de visualização em algum lugar perto da seção de upload de arquivos. Então, bem aqui, vou ver se as declarações vão verificar se a nossa imagem mais tarde, Earl, porque está vazia. Não, mas uma vez que um arquivo entra, é carregado em memórias. Quando tohave dados alguém para dizer, se ele não está vazio, certo, Se não é Knoller espaço silencioso, então eu quero um puxão de imagem que vai ter os dados da imagem. Você é como a fonte. E lembre-se que estes são os dados da imagem. Você está bem aqui. Tudo bem, eu vejo que eu tenho alguns aparelhos de rua são sobre isso. Tudo bem, então este vai ser o nosso SRC em que irá renderizar nossa imagem de pré-visualização assim que o arquivo for carregado. Tudo bem, então você pode ajustar o estilo. Só estou apagando. Uma miniatura de $100. Para que quando você, você sabe, nós possamos ver essa vida não. Uma coisa que eu quero verificar, no entanto, é se o arquivo é convidado porque eu estou vendo se ele contém isso, então tudo bem. Mas se alguém enviar um pdf, o que exatamente eu quero fazer? Bem, eu quero dar-lhes pelo menos um aviso bizarro para dizer que um pdf não é uma carga são são os tipos de arquivos
convidados. Vou introduzir outra variável aqui. Vou colocá-lo por baixo do sucesso privado. E então eu tenho o Bull, seu tipo de arquivo inválido. E eu estou apenas inicializando a farsa porque enquanto não há arquivo no, você sabe, quando as páginas começaram, então não há invalidez fora do tipo de arquivo, certo? Mas depois quero sentar-me. Então o que eu quero saber é dizer, se o arquivo não é igual a saber em, então ver se ele contém isso, então tudo bem. Mas então eu quero um outro aqui, que vai dizer que o tipo é inválido é igual a true. Então, se ele não contiver uma dessas extensões ou quaisquer extensões que você considere válidas, então este é o que imagens. Mas isso é meio global. Se ele não contiver a imagem, são o tipo beta que você considera válido. Então você vai dizer que o tipo de valor é verdadeiro. É inválido. O tipo é verdadeiro. Por outro lado, se eu fiz upload de um tipo inválido nos aplausos noturnos de arquivo, ele vai passar por este cheque novamente porque cada vez que há uma mudança direita na mudança. Isto vai ser despedido. Então, se eu abrir com um válido desta vez, então eu quero mudar. Ele é inválido, então o dedo cai direito. Bom. Então, se eu conseguir um válido, então é falso. Então, mesmo se começarmos para nós e carregarmos um válido, então isso permanece Wasif. Eu carrego uma batalha em primeiro lugar. Isso muda o verdadeiro e eles precisam da corrente eu mesmo depois. Então mude de volta para quarto. E isso é realmente o que queremos. Bem, e eu disse que queremos dar-lhes uma dica visual como dedo do pé, um buraco se o arquivo é válido ou não. Então eu vou voltar para o sexto filho. Vou ver onde está? Eu vou ver aqui que se o Volume quatro é inválido tipo for verdadeiro ou se for, então eu exibo uma mensagem de erro para dizer,
Por favor, remova o tipo de arquivo inválido e selecione uma nova imagem no início deste ano. Preto. Certo, então vamos avisá-los e eu só uso meu componente de mensagem de seta passando minha
mensagem especial lá. Então isso me leva a fazer mais uma verificação, e eu poderia estar falando e falando sobre isso. Mas entenda, para ter certeza que todos os nossos cheques estão completos. Então, estamos verificando. Se o arquivo não é igual a saber, então estamos verificando o estado válido, certo? E daí se a pessoa removeu o fogo? Porque eu disse que é inválido. Você pode deixar o bloco de campo. Então, se eles tinham um inválido, então eles vão estar vendo esta mensagem. Mas se o removerem completamente, não
quero que vejam a mensagem. Então, se eles mudam a entrada e ele aciona os eventos de seleção do identificador, então eu vou dizer se ele não é saber mais, certo? Então, se for realmente não, então bem, se não
for, pode ser um tipo inválido. Então, uma vez que você remover a imagem completamente do que isso muda as quedas no blazer sendo tão fora , impressionante vai saber que esta mudança em remover esse prompt da seção. Tudo bem, então estamos descendo bem e sabemos que o último que precisamos enfrentar está em um
envio válido . Então, não, eu preciso de uma função para submissão válida em. Eu vou colocar isso aqui nas seções do tribunal ou uma tarefa privada de pia criar. Tudo bem, então, o que vamos fazer primeiro, são estes o que eu acho que é uma primeira verificação necessária. Ainda é garantir que não temos um tipo de arquivo inválido trabalhando com, porque o que pode acontecer é que quando a pessoa sente todo o formulário e eles colocam em tempo de
arquivo inválido em, então Bem, vamos apenas dizer que isso está sendo exibido, mas eles ainda podem clicar. Submeter em. Não vai pará-lo porque não temos nenhuma validação em execução contra este. Assim que esta apresentação, se o nosso arquivo que o presidente vai enviar, vai salvar o arquivo desse cara, e eu não quero isso. Então eu vou começar por verificar. Se não, é arquivo inválido cinco vezes, certo. Então, se não estamos lidando com um momento de gordura convidado, então podemos prosseguir. Oh, eu sinto muito. Isso apareceu na minha cabeça que se a pessoa tinha um tipo de arquivo válido, então eles mudaram em um convidado. Então eu não quero meus dados de imagem. Você Earl Dedo tem qualquer coisa. Então, quando estou sentado que o tipo de arquivo inválido é verdadeiro. Eu também vou definir minha minha string gravada Toby igual a string dot vazio. Tudo bem. Eu não quero ter nada lá, então inicialmente, não tem nada. A única vez que você deve obter algo é quando um tempo de arquivo válido é carregado. Certo? Oh, desculpe. É durante isso. Vazio não é uma função. Minhas costas. Tudo bem, então isso foi provocado na minha cabeça. Só sei. Então vamos voltar à tarefa em mãos, que é salvar ou gravar. Andi subseqüentemente fazer upload ou arquivo? Não. Eu vou começar com a parte mais fácil fora que em que é salvar o necessário. Então sabemos que para salvar o registro, precisamos obedecer o dedo do pé de sucesso. O que quer que venha de volta da nossa chamada para o nosso relatório que criar a nossa passagem nos livros e apontar, criar o novo livro passando no modelo. Então vamos ter ah, sua declaração para dizer se formos bem sucedidos em nossa submissão, então faremos sobre a lista. Tudo bem, agora, eu disse que ia usar o sucesso,
um, um, para exibir uma mensagem de erro. Então eu vou no topo dizer, se não for um sucesso. Tudo bem. Então isso significa que seu sucesso vai ser usado como nosso marcador para dizer se algo correu bem para ver se algo deu errado com a operação. Tudo bem, apenas expresse espaçamento um pouco. Tudo bem. Então seu sucesso vai renderizar ou com base no valor de seu sucesso, nós renderizamos nossa mensagem. Então é por isso que eu disse a verdade inicialmente, porque eu não quero que isso seja exibido quando a página é carregada. No entanto, se ele mudar depois, então ele irá exibi-lo. Caso contrário, se foi bem sucedido, se for verdade, então nós apenas chamamos de volta para a lista. Desde cerca de dois, isso serve dois propósitos ali, porque você acabou de navegar para longe e também é anexado dedo do pé do botão clique para voltar à lista. Agora fizemos a parte fácil. Pela minha opinião, essa é a parte fácil. Mas deixe-me trazê-lo nesta jornada. Então agora, mesmo que tenhamos o upload do arquivo e se você executá-lo agora, você verá uma visualização de imagem em tudo. Quando você clica em Enviar. No entanto, só
estamos enviando para o banco de dados para o modelo, tudo bem, para um livro. Mas, além disso, não
estamos servindo nenhum dado para o arquivo carregado. Então você realmente veria sabe uniformemente carregado um arquivo aqui. Haveria saberes, atravessando o fio aqui. E isso é porque, Oh, nós precisamos realmente, você vai algum processamento para obter,
tipo, tipo, o nome do arquivo. propósito, vou mudar o nome do ficheiro. Então, depois de tudo isso, eu vou fazer o upload do arquivo primeiro, em
seguida, upload obvia o campo de imagem no modelo de livro em, em
seguida, enviá-lo para o banco de dados. Então as pessoas diferentes orner fazem isso em ordens diferentes. Mas é tudo o que vou fazer, está bem? Então eu estou apenas criando algum espaço para minhas operações de arquivo, e o que eu vou fazer primeiro é obter a extensão fora do fato de alguém dizer txt viral é igual a pontos towpath em, então, porque nosso sistema não io eu tenho X ter acesso a esse caminho, essa extensão e, em seguida, eu posso passar nos nomes de dardos arquivo. Quando eu disse que há muitas maneiras de verificar extensões, aqui está uma maneira de apenas obter a extensão para que eu poderia ter feito isso em apenas comparar a extensão com esses valores. Quer dizer
, qualquer que funcione para você, tudo bem. Tudo bem, então. Vou salvar a nossa escolha. Eu d é igual no dedo do pé. Vou gerar meus próprios valores personalizados. Então eu quero algo único que nunca se repita. Então eu vou usar o nosso bem e eu quero dizer bom. É o novo Good, então. Eu queria ser uma corda Andi também para que os bens sempre têm traços. Eu quero tomar todos os insiders traço quer evitar que tem os caracteres contíguos Sem traços entre sidras Faça um lugar médico no Dr. Place alos me para especificar o item que eu quero er lugar ou o cartel em para substituir sobre o que eu quero substituí-lo com o qual neste caso não
é nada tão literalmente vai apenas deixar cair todos os traços e colocar nenhum er distintivo no meio, certo. Então, no final, fora do dia, minhas fotos novo nome seria igual a e eu apenas usei meu sinal de dolla aspas em ir para conquistar para atender o I D ou escolher I d o seu outro O quê? Tudo bem. Então esse é o seu nome, certo? Então escolha que eu d em. Katyn pode estar na extensão? Tudo bem. Então, seja qual for a extensão original depois dele, Ian ,
que os bilhetes A, P e G não
posso mudar para J pig. Não funciona assim. Então, seja qual for a extensão ,
vou mantê-la, mas vou renomeá-la para escolher. Então é isso que eu vou fazer. Quer fazer upload do dedo à medida que a imagem nomeia um modelo. Essa imagem direita é igual nome de escolha do dedo do pé. Tudo bem, então eu fiz um pouco fora do trabalho, mas ainda não estamos lá. Ainda precisamos lidar com o upload do arquivo. Então eu vou deixá-lo aqui para Não, você pode testá-lo. Owt. Hum, o que vai acontecer é que você será capaz de enviar o formulário em. Você vai ver o novo Pickney, hum, passar por cima se você selecionar um arquivo para o upload, mas obviamente nenhum upload está acontecendo. Então, quando
voltarmos, vamos terminar como vamos terminar essa funcionalidade de upload
53. Configurar o livro - parte 2: Ei, pessoal, bem-vindos de volta. A última vez que estivemos aqui, estávamos sentados ou criamos uma visão para nossos livros em uma das partes chave fora. Este foi o aplauso de arquivo habilitado para um livro sobre imagens. Então precisamos terminar isso na primeira coisa que vamos fazer é ir para a nossa solução. E os contratos que iriam criar uma nova interface ou um novo contrato para um novo serviço neste vai ser chamado arquivo off Lord. Tudo bem, então eu arquivo upload, vamos em frente e adicionamos isso. Lembre-se de alterar a interface nesta interface vai ser lidar com gordura. Bem, ele vai ter uma função que é chamado Task Public Task Upload arquivo, e ele vai ter um parâmetro no formulário fora I lista de arquivos entrada quatro arquivo em, bem, outro apartamento ou para os nomes de escolha. Lembre-se que geramos o grande nome dentro do componente Blazer. Então, quando chamamos disfunção, precisamos passar esse nome. Então agora precisamos implementar isso, então vamos em frente e criar o concreto ou a classe de
implementação em serviço,
senhor, senhor, eu clico em classe de upload. Eu disse aplaudir, mas realmente deveria ter sido no, mas a turma é o upload de arquivos. Então vamos em frente e adotar no upload de arquivo vai herdar de upload de arquivos i. A partir daqui, vamos introduzir um novo tipo de propriedade, e este vai ser chamado I Web Host Environment. Então eu vou apenas sublinhar e para resumir, doente e ir em frente e incluir isso e incluir quaisquer binários ausentes em, então essas são as nossas novas dependências. Claro, temos que o construtor final em inicializado em conformidade, depois de ter feito este fim de semana, vá em frente e implementar a função. Bem, você pode fazer isso. Eu estou fazendo isso. Eu ainda não fiz isso. Se você ligou para fazer isso, então você está pronto para continuar, então o que vamos fazer e eu gosto de corromper
operações complexas em capturas comerciais. E então estaremos escrevendo algumas linhas fora do tribunal. Na verdade,
algumas linhas fora da quadra, parecemos muito parecidos com o que tínhamos que fazer quando queríamos carregá-lo para o
fluxo de memória . Então é aí que começamos. Então, nossos primeiros 2 níveis Lanza declarando um objeto membro do stream no Ben, , copiando aquele dedo do pé, a cópia, os dados arquivados para o fluxo de memória. E preciso encontrar um lavatório. Tudo bem, então as primeiras 2 linhas, nós estamos vendo essas antes mesmo de eu reutilizar a mesma variável. Então não parece tão rebuscado, então eu vou construir o meu caminho. Então o caminho onde eu quero que este arquivo seja salvo como eu disse, nós vamos estar usando dentro da nossa pasta raiz www. Os envios são, então, esse é o caminho que eu estou direcionando. Você tem pessoas que têm opiniões diferentes, mas uma vez mais estamos mantendo isso simples. Então eu tenho minha interpretação, meu cifrão e minhas aspas. Então eu fui implantado no final da pontuação, que é minha dependência para o ambiente de host da Web em que estou usando o caminho raiz da Web, certo? E então eu vou segmentar a pasta de uploads. Então, isso vai dizer onde quer que a solução esteja sendo hospedada, de onde o site está sendo hospedado do que é o caminho para a direita, e então ele está procurando a pasta uploads em, então vamos passar em nome grosso. Então esse é o nome real fora do arquivo para ser direitos de segurança ou o nome real desligado. O que? Queremos que este arquivo seja visto como em todo este caminho em. Em seguida, depois disso, vamos ver usando fluxo de arquivos em. Acabei de receber isto. FS é igual a um novo fluxo de arquivos. Terrível. Isso é certo. Vamos passar o caminho, Onda. Vou ver o fogo ancorado. Você vê, o ponto de placa de arquivo cria na verdade significa que se o arquivo estiver lá já irá substituí-lo. Mas, em última análise, criará um arquivo. E já que estamos usando bens para gerar o nome do pai, as chances de ter uma aula devem ser muito pequenas. Então eu quero dizer m s como na rua da memória e variável ancorado dedo do pé direito. Então, não, vamos dizer que o que estava no fluxo de membros, eu quero que você saiba que o pé direito da rua de arquivo no objeto de fluxo de fogo como acabamos de ver, vai lidar com colocá-lo no banho e criar seu e então que É isso. Então, se você receber uma exceção, você pode através de nós podemos esmagar um programa. Ou como você quer lidar com a licença excepcional através Porque eu realmente queria
travar o programa no evento off campo upload arquivo. Você sabe, eles provavelmente são mais graciosos com o manipulador,
mas para nada apático que de volta ao nosso componente de criação, eu preciso de uma chamada. Então, antes de acessar o serviço, preciso adicioná-lo ao início sobre CS. Certo? Então este é um passo que sempre devo admitir, estou sempre esquecendo. Então é uma boa prática do dedo do pé. Certo? Então acabamos de adicionar um novo serviço. Então temos que deixar toda a aplicação saber que este serviço é ilegível para, hum, injeção. E então o upload do arquivo. Voltando ao criador, preciso apresentá-lo. Então, eu saí para ver o arquivo. O que eu qualifiquei? Upload direito em. Então vou chamar isso de sublinhado. Arquivo fora dos Direitos do Senhor da minha dependência para o arquivo Fazer upload em, então não aqui ou assim isso é criar livro. Está no meio do livro. Deve ser tratado. Criar. Deixei esse cartão, filho do “não”. Tudo bem. Livrar-se das linhas da grelha, um por um. Tudo bem, então esta linha vai dizer sublinhado escuro,
upload de arquivo, upload de arquivo, pontos de upload de arquivo
sublinhado. Um perfil no arquivo de upload está aguardando o arquivo. Certo. Então, depois de toda a excitação fora foi pegar o fogo, carregá-lo no fluxo de memória que temos arquivado aqui, certo? Então isso é tudo o que estamos deixando passar, assim como o nome para a foto, que acabamos de construir. Chama-se Peak Name. Está bem, deixa-me continuar. Este é um síncrono que preciso do nosso peso. Tudo bem. Então, talvez como você poderia fazer isso um pouco diferente é toe se a função de upload de arquivo falhou . Significando que você poderia ter feito isso como um booleano, um touro tarefa. Então, se ele acendeu o fogo, então tudo estava bem. Então ele voltou. Verdade se ele pegou um excepcionalmente devolvido cai e, em seguida, com base no oh, sair que você pode tomar uma decisão sobre o que para? Sobre você, você dá ao seu usuário ou iniciar uma sugestão visual dar para usar nesse ponto. Tudo bem, então acho que fizemos um pouco fora do trabalho. Eu só vou para ir em frente e construir e certificar-me de que tudo ainda está correndo. E temos sucesso. Então vamos dar uma volta, está
bem? Então, porque você começou as restrições e foi depois de registrar como uma admissão, e quando eu vou para livros, eu estou vendo todos os pãezinhos que diariamente não chegou a ver alguém certo para ir em frente e clicar, criar livro. Então aqui estão as nossas formas, então eu vou apenas colocar em alguns valores. Então este livro que eu experiência lembrar que nós não temos nenhuma validação em execução, então nós precisamos voltar e colocar alguma validação em. Mas, por enquanto, vamos trabalhar com o que temos. É uma queda de CR. Isso está funcionando para nossos autores obterem o autor, e então eu escolho um arquivo, e eu acabei de selecionar um fora da minha área de trabalho. Lá vamos nós. Digamos, veja a pequena visualização aparecendo e deixe-nos ver o que acontece quando criamos livro. Ele volta para a lista sobre ele está exibindo aquele livro. Tudo bem, deixe-me ver o que acontece na minha visão. Tudo bem, então estamos vendo o livro, nosso vendo o preço. Ok, nós precisamos formatar algumas coisas aqui e ali em Se eu clicar no autor, ele vai sobre shows com os detalhes do autor eo fato de que esse é o seu livro. Então tudo está indo bem. Certo, então criamos nossos livros. E assim a última coisa que eu quero fazer Não, apenas em algumas validações, embora Justin observa que você pode ter alguns problemas com a escrita de arquivos, dependendo de onde você está escrevendo dedo do pé e com base na permissão que você tem. Tudo bem. Então eu tentei em uma máquina que eu não era admin ou não tinha acesso direito direito direito de leitura dedo do pé ou nenhum dedo de
acesso direito . Então estava criando arquivos em branco. Então, se você está recebendo incêndios em branco, pode ser suas permissões, mas você ainda pode deixar cair a linha deles se você estiver tendo dificuldade com isso. Mas se você está nesta fase, então estamos prontos para seguir em frente. Então a última coisa que precisamos saber é verificar nossas notações orbitadoras de validação para o nosso modelo. Tudo bem, então no modelo do livro acrescentou esses dados políticos e eu, o título exigido, quero dizer, o gelo sendo necessário. Quero dizer, o resumo ser limitado a não mais do que uma de 10 50 palavras sobre, quero dizer, o autor que eu d exigido. Então a razão pela qual eu fiz o autor que eu pedi é que mesmo que eu tenha feito, ele não sabe. Mas em absoluto, eu queria. Enquanto o FBI diz que não precisa de um autor, vou forçar o autor porque não quero problemas do meu lado. Então lembre-se que estamos colmatando a lacuna como o desenvolvedor chorão contra um desenvolvedor de pares. Então, do lado do cliente, podemos criar nossas próprias regras para impor nossas próprias qualidades rigorosas antes mesmo de chegarmos às regras do FBI sobre suas qualidades. Então eu tinha o ponto de interrogação aqui no que mediano ingênuo, significa que eu não tinha que selecionar um autor. Bem, eu acabei de tirá-lo, e estou vendo que você mais seleciona um autor quando está usando o meu. Tudo bem, então é isso para as anotações de teatro no livro. Eu também dobrou de volta para o meu componente de criação e certifique-se de adicionar uma seção para o verão. Então tudo parece igual, exceto em nenhum lugar usando uma área de texto de entrada. Então nós sabemos três até mesmo coloca você sabe o para. Eles têm o número de entrada. Ter texto de entrada, que é uma caixa de texto. Não tem na área política, que é a caixa grande. Isso é quase uma carona. A questão. Esse seria o nosso resumo sobre então. Temos o arquivo de entrada de componentes personalizados manipular nosso upload de arquivo. Não, nós pensamos que isso começou. Não, não. Você pode ir em frente e testar outros cenários, você sabe, upload e no tribunal unaspas arquivo convidado testando as diferentes permutações que você pode. Sei que são lacunas na lógica, certo? Sem eso, se você puder detectar alguns livres para compartilhá-los comigo e nós podemos passar por eles juntos.
54. Livro de atualização de configuração: Ei, pessoal, bem-vindos de volta nesta lição. Vamos passar pelas operações de edição dos nossos livros. Então eu estava tão animado que fui em frente e comecei sem você. Segunda pausa e tire-a. Mas o que eu já fiz foi criar minha edição. Histórias são componentes concorrentes dentro da pasta de livros. Tudo bem, vamos. Então eu fui em frente e deu-lhe o seu caminho, que é barra livros barra editar barra. Em I d parâmetro, eu coloco na autorização para apenas regras de administrador em. Depois, importei o repositório de livros. Ofereço repositório ou upload de arquivos fora do repositório no gerenciador de navegação. A Andi. Eu tenho meu livro de edição de título, e eu coloquei nesta regra horizontal no ponto de interrupção e eu estou pronto para ir buscar. E Paul vai tirar isso, e quando você alcançar, você pode continuar agora. Eu quero estar construindo os discursos em uma combinação fora da quadra de nossa página de visão em nosso campo de
criação. Certo. Então eu adicionei, excluir autores que divulgá-lo. Então temos editar desculpe, Web ou editar página tirada da página Criar, bem como a vista, Pete. Então, eu só vou dedo do pé por pedaço. Pegue o que eu quero. A primeira coisa que eu quero seria esta se declarações lembrar que na vista verificamos se o valor fora do perímetro foi convidado e mostramos uma mensagem. Tudo bem, então eu quero isso. Então eu estou realmente indo para o colapso deste colapso e eu vou levar tudo entre a declaração se para o primeiro abraço aberto. Copiar. Traga para editar Colar sobre isso. Só vou fechar essa cinta encaracolada. Terminei a minha excitação. Acho que deletei meus blocos e colocamos meu bloco central aqui. Certo, então temos nossa checagem para o parâmetro, e estamos verificando se o modelo está vazio. Se nenhum deles for verdadeiro, então queremos renderizar o formulário. Este formulário vai parecer muito parecido com Oh, ele olhou em nossa criação, Pete. Então eu vou até lá e você pode ver que já desabou. O formulário de criação, algum ajuste para pegar emprestado todo aquele acorde, trazê-lo para cima, e então nós fazemos alguns tweets menores, alguns começando do topo e eu vou descer sistematicamente. Então, algumas mudanças que eu quero fazer seriam eu quero usar atualização manual ou não na criação . Então lidar com pouco. Temos todos os nossos campos são autores sendo osso. Então essas linhas vermelhas significam que precisamos colocar representação para elas no formulário. Certo? Então, em termos de nossa imagem, temos uma pequena modificação que precisamos para mim aqui. Voltaremos a isso. Isso vai ser em vez de criar livro, ele vai dizer, enviar alterações atuais e não foram reservados de volta para listar em. Então vamos para os nossos tribunais e Cornel vai nos ajudar a limpar algumas dessas
linhas vermelhas na primeira coisa que queremos em nosso código é sobre o parâmetro, certo? Então, assim como fizemos na seção de exibição ou na página de exibição que temos ou parâmetro public i d string, vamos string I d. Desculpe, nós também temos o modelo, e temos isso em inicializado perseguindo alguém para emprestado todos aqueles da página de exibição em Traga-os para nossas edições. Muito bem, vamos fazer algo extra dentro da ONU inicializada. Estamos pegando o modelo, um, o modelo de registro. Mas também precisamos da lista dos autores, que eu não criei, certo? Então, no “un initialize “você tem o autor alguns desportando isso. Então, como você pode dizer, Eu não estou no humor estão fora de re tipo chamada que eu tenho em todo o lugar já escreve Eu estou apenas falando o melhor de todos os lugares e trazê-lo como eu precisava. Veja, aqui no bar, esta terra fora do tribunal, não
temos autores e, obviamente, preciso esclarecer a variável. Mas se eu voltar para criar em olhar dentro do bloco do tribunal, então eu veria que eu tenho um monte de variáveis que se parecem com variáveis que eu realmente preciso de qualquer maneira em auto-editor, Qualquer os autores, eu ainda Preciso rastrear meu arquivo e acompanhar o sucesso, etc., etc. Tenho um extra que vou colocar. Mas eu só copio isso de nada em diante. E já que tenho um livro de novo, vou em frente e mijei, então. Lotes de linhas oferecidas desaparecerão porque não existem variáveis. Tudo bem, então nós temos as atualizações do manipulador de função. Então eu preciso implementar isso na mão, embora vai parecer muito semelhante ao tipo de criação. Realmente? Então eu só vou voltar para a minha criação, então eu só recolhi, então eu quero pegar emprestado, e eu vou acelerá-lo e editar. E então eu fui mudar o nome lidar com o It's right. Então, uma pequena mudança no tempo feito dentro fora da criação em. Por extensão, a edição seria na forma desta declaração if. Então, se você tentar fazer o upload do arquivo com base no trimestre
que você tinha, você provavelmente teria obtido ou, bem, se você tentar enviar I record sem upload, nosso valor teria provavelmente sido recebendo algum não exceções. E isso é porque temos um monte de operações de arquivos aqui que Randers deixam de ser executados sem que um arquivo esteja presente. Então você não pode tirar o nome. Um pai não existe, então tenho que verificar antes da submissão. Se o arquivo não é conhecido,
então vamos em frente e partes fora dos detalhes, em
seguida, carregá-lo,
em seguida, fez a mudança para o campo em. Em seguida, empurramos para o banco de dados. E se não houver arquivo,
bem, bem, nós apenas empurramos para o banco de dados. Nós não precisamos realizar nenhuma operação de arquivo, então eu quero dizer que a mudança para a operação de criação. Andi, quando eu apenas copiar isso para a operação de edição, certo. Então manipular atualização vai verificar se há um arquivo em agir em conformidade. Precisamos de voltar para a lista, então eu só vou voltar para a lista. Também vou precisar de extensão do arquivo porque são a seleção de fogo, senhor. Porque eu permito que você mude a imagem do livro na edição. Então eu vou ter que lidar com isso parece entender. Retire os dois também no lugar dentro do bloco de corte na página de edição. Agora, se eu rolar de volta para o topo da fazenda, eu vou ver isso, ok? Não há linhas vermelhas, então vamos começar pelo topo de novo para descer um endereço. Pequenos problemas são nuances. Saiba que estamos lidando com a edição. Onda não criou nem visualizou. Então, a primeira edição que eu salta para cima de mim. E mais uma vez, o fazendeiro significa o mesmo que temos os mesmos campos para os diferentes itens, certo? Então a imagem até aqui foram nascidos arquivos de entrada. E em nossa seção onde verificamos se é um tipo inválido em exibição, uma mensagem de erro se for. E então dizemos se há algo nos dados que você,
Earl, Earl, ou lembre-se que o euro Beetle foi formado porque qualquer arquivo que foi selecionado foi Parson Tau Bay 64, em seguida, colocar na imagem Data Girl. Então pegamos essa miniatura. Então o problema aqui na edição é que este tribunal só mostra um arquivo que foi selecionado . Se eu sou algo existente que já tem um arquivo e eu não estou mudando o arquivo, tudo bem? Eu não fiz nada para acionar a seleção do arquivo. Em seguida, os dados de imagem que você é nunca mudaria de não, que é inicialmente. Certo. Então o que eu quero fazer é a imagem exibida que já está no banco de dados, que é financiado modelo dot imagem. Então eu vou apenas copiar esta declaração se bem, eu só vou dizer outra coisa se tudo bem, deixe-me ir para a próxima pista em, então ele vai ter um cheque semelhante para ver isso. Então eu quero uma prioridade para estar no estilo que é selecionado recentemente à direita. Mas então, se não houver nenhum arquivo recém-selecionado, então eu quero verificar se há um arquivo nos relatórios de banco de dados do modelo dessa imagem. Então, se quiser um monte de imagens, não neve, são espaço em branco. Então quero o mesmo tipo das empregadas. Mas então, desta vez, o valor vai estar no caminho fora. Uploads barra em que vai ser imagem de início do modelo. Certo, então temos modelo, não imagem sendo exibida. Se não houver uma nova imagem, não, Se houver uma nova imagem, precisamos de uma maneira de lidar com isso. O que eu quero fazer é o caminhão se houve uma mudança na seleção. Então, quando eu disse mudança nesta eleição, eu não quero dizer necessariamente que você selecionou uma nova imagem neste inverno. Estou menos preocupado se você selecionar uma nova imagem da que já está lá ou qualquer outra coisa. Mas mesmo que você tenha entrado,
você clica na seleção de arquivo em que você selecionou a mesma imagem. No que me diz respeito, foi uma mudança na imagem. Então o comportamento tem que mudar onde isso significa que quando você se submeter se houve uma mudança, então eu preciso pegar todo o que estava lá antes e colocar o novo. Ou se lá se você fez essa mudança onde você remover a imagem para ficar todos juntos, eu preciso ter certeza de que eu removi a imagem do registro em também do sistema de incêndio. Então eu vou apresentar uma nova bandeira bem aqui que eu vou chamar É arquivo alterado? Vou inicializar aquela queda do dedo do pé inicialmente. Então, quando você faz uma modificação no arquivo ou você aciona os eventos que dizem que é manipular seleção de
arquivo, aseleção de
arquivo,
eu quero enviar a verdade porque, tanto quanto eu estou preocupado, eu mudar aconteceu. Então, dentro da seleção de alças, eu só vou dizer que a mudança de arquivo é igual a true. Tudo bem, então saiba que estamos rastreando o estado fora da seleção, pelo
menos se ele mudar, não
são se ele chegar aqui no dia, algo acontece. Eu mais uma vez eu não me importo se é Não, não
são. Não, algo mudou. Então sim, algo mudou. Então, no momento de folga para lidar com a atualização, precisamos de um dedo. Faça algo diferente com um. Se o arquivo não for igual a Nolan, a única maneira se eu não seria igual ao conhecimento se um novo arquivo foi selecionado. Certo. Então, neste ponto, eu preciso de frio que vai remover e eu vou apenas colocar um comentário aqui. Remova a imagem antiga Onda carregar o novo escreve. Eu também vou introduzir outra verificação para ver se o nosso outro arquivo mudou é verdade. Então você muda o arquivo. Uma mudança de estado do lutador fez algo para interagir com os barcos de seleção de arquivo. Não há nenhum arquivo presente em chamas é equivalente a saber certo? Isso significa que sua corrente é algo, mas não há fogo no sistema. Então vou ter que remover a foto antiga. Eu também vou ter que definir a imagem do ponto modelo para ser igual dedo do pé nada String que vazio porque não faz sentido. Estou fazendo referência a uma imagem que não existe em algum lugar para atualizá-la, para dizer que não há imagem para referência. Se o status do arquivo foi alterado no fogo é equivalência e não. Então esses dois blocos têm a mesma coisa em comum. Precisamos remover as fotos antigas. Então vamos entrar em nosso upload de arquivo, contrato e implementar,
e você pode terceiro e eu estou chamando este método de public void. Remover arquivo. Eu estou fazendo isso como conselho porque nós não vamos fazer nada é síncrono lá dentro. Então eu não preciso ser uma tarefa. Eu só vou remover o arquivo e tudo que eu preciso é string, pick name. Qual é o nome da imagem que eu deveria estar removendo? Então, na classe concreta, eu vou apenas ir em frente e implementar a interface, fazer com que os novos métodos parem. Esta vai ser a nossa outra simples Operação Um. Eu vou construir uma parte, então você pode querer olhar para obter um parque estático como fez com o FBI. Podemos olhar para ter um caminho estático para mais de cinco Buehrle. De qualquer forma, construímos nosso caminho onde estamos obtendo o mesmo caminho onde sabemos que todos os arquivos estão sendo armazenados. Tudo bem, e nós temos o nome da escolha, toe la chon on. Então eu vou dizer se arquivo encaixado existe porque eu não vou tentar excluir algo que não existe. Então eu só estou interessado em se ele existe, então eu só quero dizer arquivo que excluir desse caminho. Tudo bem, então o arquivo está lá, então exclua-o. Então isso é tudo remover arquivo vai fazer para nós. Então, de volta à nossa edição, o que eu vou dizer são as imagens de remoção de vírus. Então um arquivo foi inserido, e eu não sei mais uma vez, eu não conheço nossa cura. Se é a mesma imagem que eles queriam e re selecionado, eu estou recebendo a extensão, gerando um novo I d. Observando-os juntos para um nome de imagem em que eu vou ver no arquivo de pontuação, carregar docks em, em seguida, ele vai dizer remover arquivo em. Estou passando, modelo ancorado emite. Estou removendo o arquivo que já está lá que irrita armazenado dentro do banco de dados. E depois de eu ter removido isso com sucesso, então podemos ir em frente e carregar o novo. Da mesma forma, se o status de incêndio foi alterado e não há nenhum arquivo presente, então eu vou ir em frente e apenas remover o arquivo e atualiza o valor para nada. Em seguida, vá em frente e não criar, mas fora Biggs e, em seguida, embora leva nossos livros endpoints o modelo, bem como os
dardos modelo . Eu d tudo bem. Tudo bem. Então, pequeno bife, este tribunal para um spins, entender o início clique. Tudo bem, então em nossa lista de livros, eu vou apenas ir em frente e clicar em editar em um desses em. Vemos que temos nosso livreto pré-carregado nossos dados com sucesso. Eu vou dar-lhe um preço em por um resumo também livro. Tudo bem, e então vemos aqui que temos nossa prévia. Então vamos testar a mudança de direitos de imagem, Entende? Para ir em frente e escolher arquivo. Tudo bem, vamos. Também vou mudar o nome deste livro. Alguém para ligar, é talvez s b f S B A p I, def. Tudo bem. Algo que é algo cativante. Bloquear fora da quadra como a imagem ligada. Vou em frente e enviar as alterações. Então eu também vou mudar o também para que possamos ver tantas mudanças quanto precisamos. E então algo muda e vemos onde estamos voltando ou um novo livro com nosso título altera o novo preço. O autor mudou em todas as mudanças maravilhosas que fizemos. Se eu ver, vemos tudo chegando. Agora, se você tem seguido tudo o que eu tenho feito até este ponto, pode ter tido um erro porque quando eu cheguei a este ponto e eu tentei inicialmente, eu tinha as aspas para ligar para o FBI equipe em. Deixe-os saber que eu segui todas as regras que enviaram os dados sobre os dados do autor. Não passou corretamente sobre o SB de fato, e não sobre corretamente. Então fingindo ser a equipe, pelo
menos eu entrei em I D bordo e olhei para trás para o meu livro bto para o meu trabalho It on. Eu percebi que tudo bem, meu I S b e campo estava realmente faltando, bem como meu autor sentir idéias autor. Então, se você não colocou aqueles dois, coloque-os lá dentro. Então a questão é que, conforme você desenvolve suas regras do lado do cliente, mesmo o FBI não está pronto para arranhar. Você terá que estender a mão para apoiar. Ou se você está fazendo ambos os lados, então você sabe que você precisa estar atento a estes, que as coisas, os pequenos erros como este você vai ser levado a acreditar que seu cliente tem o problema quando na verdade é a maneira O FBI foi incriminado. Então eu estou apenas apontando que tudo, também, porque é uma experiência de aprendizagem para todos nós e quero sair deste preparado para qualquer pequena situação. Não obstante esses desafios, vemos que nossa operação de atualizações funcionou conforme esperado. Ele removeu os arquivos antigos para cada upload e colocou no novo arquivo em Abated o
registro de banco de dados em Quando
voltarmos, vamos olhar para fazer Deletes
55. Livro de exclusão: Ei, pessoal, estamos de volta. E hoje estamos lidando com a exclusão de um registro de livro. Desculpa estar tão entusiasmada por não ter ido ter com os rapazes. Mas eu vou te guiar por tudo porque então você percebe que, assim como eu fiz para alguns dos outros componentes,
tudo o que foi realmente copiar e colar as melhores partes fora de ouro de outro lugar e, em seguida,
empurrá-los juntos como eu preciso eles aqui. Então começamos dando à página um caminho. Livros barra excluir idéias barra barra são parâmetro ou autor como atributos. E depois estamos no Jake. Nossos serviços são do relatório do livro. O gerenciador de navegação, Andy é o repositório de upload de arquivos. Porque quando excluímos um registro do banco de dados, eu também quero excluir o arquivo do servidor. Não quero remover o registro e manter o arquivo bem. Só no pior fica a inércia que já aconteceu. Mas essa não deve ser a operação normal. Então, movendo-se ao longo da minha rua diz: “ Tem
certeza de que quer apagar este disco? Andi,
eu tenho que H r e B são apenas para o estilo, mas quando estamos indo para as correções essenciais. Nós nos certificamos de que é normalizado cada peça com aqueles que eu tenho minha verificação de sucesso leste que está vindo de Bem, ele em também criar. Tudo bem, então. Eu tenho a verificação para o parâmetro os dados do modelo. Andi, a vista. Então fui ver aquela navalha e peguei todo esse bloco central, certo? Este bloco inteiro foi o que usei dentro desta página de exclusão porque estamos compartilhando todos os detalhes fora do registro que a pessoa é um boto deletar. Aguardamos a confirmação deles. Então, no final de tudo isso, eu tenho dois botões, um que diz excluir Bem, um que tem um livro sem recorte que diz Excluir e o livro Texas o Lead, bem
como um para voltar para a lista no bloco do tribunal. Temos uma verificação do perímetro de guerra. Inicializamos nosso modelo em Nascemos uma bandeira de sucesso em, em
seguida, un inicializado. Tiramos a versão indigente do valor do perímetro, então analisamos no reboque. O modelo que mais tarde preenche a nossa página como sabemos que eu tenho o meu operador leet book, que praticamente só causou o upload de arquivo ciclo de arquivo, remover arquivo passado no modelo dot Imagem em que irá excluir a imagem do mais alto descoberta viu em nosso -lo em. Então temos o nosso sucesso, que vai esperar os resultados fora do relatório que acredita que o ponto final dos livros no I d
off the record on on on on. Então, se o sucesso dele, voltamos para a lista. E então eu tenho minha batalha ist operar são função aqui sendo chamado pelo botão, bem
como esta vara de sucesso. Então eu sei que esse passou muito rápido. Mas como você pode ver, não
é muito fora do trabalho porque, bem, a maioria é a interface em tudo isso veio da vista, certo? Francamente, tudo isso veio do que isso veio de cria, bem como editar. Isto veio dos componentes View Onda. Bem, os botões estão vindo basicamente de todos os lugares de qualquer maneira, então a única diferença entre esta página e outras páginas que fizemos seria nossa operação de
exclusão, onde nos certificamos de que estamos movendo o arquivo verificar se é sucesso em, em seguida, agir em conformidade. Então vamos declarar este para dar uma volta. Certo, então de volta à sua lista de livros, eu vou em frente e os Leeds, SB ou SP contratam alguém para chegar na semana principal. Mostramos os detalhes. Tudo bem. Eu vi como eles meio que entraram. Então essa é a energia desligada que aguarda um e o dedo do pé. O fato de estarmos chutando ou fazendo algo diferente com o modelo está em branco. Porque quando não havia dados, estamos vendo as telas sem dados e, em seguida, tudo o que começou quer namorar sobre lá. Então isso é muito legal. Qualquer buraco que vamos em frente e acreditar no livro. Vemos que funciona. Excelente. Usando isso apenas para entender, para ir para o explorador de soluções e trazer para cima as raízes W Onda as óperas cheias. E vemos aqui que só temos uma imagem. Então temos dois livros com duas imagens diferentes. Só apagamos uma vez e temos uma imagem. Então isso significa que a nossa corte de remoção está realmente funcionando. Então é isso para nossa operação de exclusão. Se você tiver alguma dificuldade, como sempre, sinta-se livre, me
avise. Em seguida, vamos passar por algumas correções essenciais e vamos olhar para a implementação de um mecanismo de notificação em nosso aplicativo à medida que passamos por nossas diferentes operações e tarefas.
56. Fixos de layout essenciais e adições: Ei, pessoal, bem-vindos de volta neste ajuste de vídeo para revisar nossa interface, ver se há alguma modificação que precisamos fazer em revisão modificações que eu fiz fora da câmera, bem como implementar esta notificação Biblioteca chamada Torrada. Tudo bem, então só para voltar aos livros, o que eu fiz foi passar por cada vista e ter certeza de que eu coloquei aquela regra horizontal,
bem como aquela quebra na água que um título estava lá. Eu também adicionei a coluna de preço para o índice na matriz indicar o preço aqui onde eu formatei a string para parecer mais como moedas escritas lembrar que é um decimal, que é por isso que quando você colocar em $50 recebendo alguém para pontos decimais ou apenas formatado parece que 50 em, em seguida, fora do curso, que antiga coisa se estende até a página de visualização onde nós obter os $50 Agora. A razão pela qual isto é tão desalinhado é que está ligado? Se eu só quero inspecionar elemento em mostrar-lhe o que isso parece quando você veria que o preço é realmente fora na rua H. Rebocador sobre ele está alinhado no centro,
mas, em seguida, o alinhamento das imagens fora e talvez por causa das dimensões fora da imagem e outras coisas. Então, quero dizer essas coisas, você provavelmente pode trabalhar velho. Não passo muito tempo tentando consertar isso e alinhá-lo. O que está em mostrar por que parece um pouco desalinhado para que se você quiser, você pode colocar seu esforço para consertar isso agora de volta no tribunal, e eu estou apenas mostrando o discurso do índice. Foi aqui que eu fiz essa formatação de string, certo? Então eu disse formato de ponto de string em. Então eu estou colocando na forma de que eu quero que as variáveis de zero é um lugar bem antes da variável em então a moeda dos quatro martinis, certo? Então, uma vez que explode atingível por meses moeda mesa em. É por isso que vemos isso como uma exibição. Então eu fiz isso em todos os lugares que o preço estava sendo impresso de volta para a tela. Eu costumava escrever o formato de ponto na moeda sentada. Agora eu disse que iríamos instalar um mecanismo de notificação para o blazer, então vamos entrar nele em algum lugar para ir ao meu gerenciador de pacotes. Vou instalar este pacote chamado Blazer Dot Toast. Então, quando eu chegar aqui, eu posso ir em frente e instalar o seu brinde doc nevasca. Isso vem dos mesmos caras que nos deram a biblioteca para o depósito local. Então eles têm alguns sequitores de biblioteca muito legais, digitando blazer. Você vê isso? Eles têm modelo, eles têm tipo de cabeça. Eles têm algumas outras bibliotecas legais que você pode explorar e implementar. Nela está uma biblioteca bem documentada. O próximo passo depois de obter o pacote é registrá-lo em nossa inicialização que CS. Então nós apenas descemos para começar que Sears Onda anexá-lo. Então, tenha a nevasca. depósito local está no brinde de blazer. E então precisamos incluir uma biblioteca para que isso seja reconhecido. E então uma vez que isso é feito, então precisamos importar as bibliotecas no reboque. Nossas barrigas estão para cima, então voltar para o especialista em soluções vai para as importações. Então eu vou apenas adicionar outro estudo bem sob o arquivo de entrada Blazer dot Toast on Blizzard. Isso é brinde que serve. Certo. Então, depois de importar essas fezes, tudo bem, eles sempre podem pausar se eu estiver me movendo, estou me movendo rapidamente. Então os spas não sabiam o que você precisava derrubar. Então, depois de ter importado eles, você pode simplesmente continuar queimando enquanto você vai junto. Nós estamos indo para ir para os layouts principais em, em seguida, nas camadas médias foram indo toe adicionar novos componentes. E eu vou colocar isso no topo, mesmo acima do menu de amor. E eu estou chamando de Blaze. Brindes errados. Tudo bem, então isso é Ah, componente
especializado que acabamos de importar para ser usado em nosso blazer up. Certo, então temos mais uma coisa a fazer. Quero dizer, há alguns passos. Eu só estou me certificando de que os definam bem e ver como eles se juntam. Então, no arquivo host, eu vou adicionar uma folha de estilo. Então, a referência da folha de estilo será na pontuação conteúdo barra blazer dot brinde barra blazer, o traço brinde dot CSS e isso é um esconder-lo. Tudo bem. Então nós apenas adicionamos que eu apenas colocar as ameaças no booster porque ele
herda coisas do bootstrap em ordem esses assuntos agora, usar este serviço é relativamente fácil, então eu vou trazer um fora da página. É que em operações realizadas em e vamos tentar, criar. Alguém cria. Coloque no autor de criação. Direita em. Então, por aqui, vou ver a injeção. Eu brindo serviço causa serviço. Muito
bem, bem, deixa-me manter a minha convenção consistente. E nós sob serviço de torradas escaldantes. Então estamos injetando e depois desligando. O que? Você não precisa importar nada, porque eu já fiz as importações no arquivo navalha de início de importação. Assim que tivermos o nosso serviço de torradas, podemos saber. Chame-o sempre que quisermos enviar uma notificação. Então eu vou fazer dentro da parte de sucesso para ou criação de autor. Eu vou colocar que eu quero docas de serviço de brinde, e então eu quero mostrar sucesso. Olhe para isso para que eu possa mostrar sucesso. Então vou dar-lhe uma mensagem. Então eu fui ver o autor criar sucesso totalmente. Certo, falamos sobre configurar nossos componentes personalizados com mensagens de erro. Então, se é que você deseja exibir talvez uma ferramenta uma vez que ele fora exibindo esta
mensagem de erro , se não sucesso, então você provavelmente poderia colocar em se sobre isso e mais e dizer serviço de brinde que então eu tenho
certeza que eles têm Algo para isso. Então você tem sucesso em quatro aviso de erro em Dwell jogado. Eu recebo lojas é apenas uma Andi Well primária em para seria como azul. Então ele pode oferecer um paralelo entre as dicas. Aqui estão os nomes das aulas vindo do bootstrap, certo? Alguém para rotinar esse programa. Autor bem-sucedido criou Andi. Só vou testar essa. Então eu vou fazer um na câmera. Vamos fazer um juntos, depois quero desafiá-lo. Dedo. Faça outros em outras partes do seu cordão ligado. Vou atualizar outras partes do cabo também. Certo, então vamos testar este velho da minha lista de autores. Eu vou criar um autor, e tenho uma nova autora, Claudine Williams e suas biografias que ela é muito eloquente. Eu vou em frente e criar autor, e então vemos nossa notificação autor Sucesso criado com sucesso. Então, havia ligado. Aqui está uma coisinha que eu posso ter perdido nosso o que eu perdi. Preciso de um ponto de ruptura entre o botão e a mesa. Então eu vou fazer isso. Não, é para isso que serve este vídeo essencial, certo? Então deixe-me puxar isso rapidamente. Tudo bem? Então eu coloquei isso. Eu só coloquei o ponto de ruptura por baixo do mas no final da experiência, isso é um homem de pensamentos. Não vou passar tempo a fazer isso. Mas quando o foco nesta turnê, então esta mensagem pode ser definida. Mas se eu disser vírgula, também
podemos dar um título. Então você viu isso? Dizia sucesso, certo? Podemos realmente dar-lhe um cabeçalho personalizado se quisermos que o nosso conjunto o espaço em branco. Assim, a palavra sucessores e vir sobre a notificação em si virá para dizer que isso foi feito com sucesso. Então, o que eu posso desafiá-lo a fazer neste momento, basta passar pelas diferentes operações e colocar em notificações apropriadas usando as cores de prompt
apropriadas. Lembre-se que mais completo sugerem coisas diferentes ou sucessos. Aviso verde significa que algo pode ter corrido mal. Ou pode ser apenas o esquema de cores com o qual você está trabalhando. Andi, você pode se divertir um pouco com essas notificações que eu passo e atualizo o meu próprio. Tudo bem. Assim, outras modificações que eu fiz dentro da seção de exibição incluiria que eu coloquei em um botão por poço para cerca de quatro operações diferentes em qualquer botão de exclusão importante dentro e para cima. Já temos a volta para este botão. Eu mudo a classe fora da linha de aviso e o contorno de perigo, juntamente com alguns ícones o lápis e o círculo exportar a exclusão na matriz também se certificou incluir os eventos de clique onde eles irão navegar para a respectiva página com o i d. Voltando dos nossos pontos de vista. Eu fiz isso em ambos os autores em livros. Andi os configurou para que você possa passar, configurar qualquer brinde as notificações que quiser. Você pode, você sabe, abeto da interface um pouco ligado. Embora eu tenha lhe dado uma idéia, estou interessado em ver o que você inventou com Onda no dia de folga. Espero que acabe com uma interface bonita. Então, no próximo vídeo, vamos apenas rever tudo o que fizemos nesta seção e, em seguida, verificar nossas alterações para obter
57. Analisar e adicionar mudanças no GitHub: Vocês, rapazes. Bem-vinda de volta. Este é o nosso vídeo de revisão de clientes em dime apenas em você. Não dê um resumo de alto nível sobre o que fizemos neste 61 inteiro para livros. Então você está lidando com livros, mas detalhes voltando para o autor para estar com algumas coisas e até mesmo de volta para o FBI porque havia lacunas de antes em diante onde corrigi-los. Então, no FBI, tivemos que atualizar nosso livro GTO para ter certeza de que tínhamos sentimentos para suportar a transmissão através do tubo em nossas costas. Na nossa interface. Sabe, por que fizemos algumas coisas? Atualizamos nosso modelo de livro, temos algumas anotações de dados para garantir que o formulário colete os dados corretos. Assim, configuramos todos os nossos componentes de multidões para nossos livros. Andi, é sempre ter que consertar algumas coisas na seção do autor. Além disso, também
estamos passando, e criamos alguns novos serviços com a forma do repositório de livros, bem como um arquivo. Faça upload da postura dela. Então, não, estamos lidando com arquivos no sistema mais uma vez. Se você tiver dificuldade com isso, você pode ter algum problema de permissões na máquina que você está usando para que você possa procurar o dedo , corrigi-lo ou,
você sabe, você sabe, entrar em contato comigo se alguma coisa. Mas nós fizemos um pouco fora de trabalho nesta seção. E não, só
queremos checar nosso tribunal para ter certeza de que é bom e seguro. Então, como de costume, basta clicar com o botão direito, ir para confirmar. Em seguida, colocamos em nossa mensagem para ter certeza de que nos lembramos de tudo o que já usamos. Ter uma ideia. Vá em frente e cometer tudo e ver em que é isso para este seis em.
58. Introdução à montagem de web de blazor: Ei, pessoal, bem-vindos de volta. Então vamos continuar em nossa jornada de desenvolvimento. Já analisamos como criamos nossa Web. AP I usando ponto net core 3.1. Nós olhamos para como nós podemos ir ambos criando um blazer em cima então. Não, vamos olhar para criar um blazer com montagem. Então, até agora temos usado o Servidor Blazer no Não, vamos olhar para o Blazer com montagem. Não, Justin observa que existem algumas diferenças entre o modelo de montagem da Web no modelo de servidor Bill Blazer. Então, em vez de tentar converter de um para o outro, o que eu vou fazer é criar ah novo projeto em então. Já escrevemos muita coisa fora do tribunal. Um monte de tribunal é realmente muito transferível entre os dois modelos, Mas então ainda vamos dar uma olhada em vir a apreciar algumas fora as diferenças sobre nuances entre os dois. Então, com isso dito, vamos começar. Então eu vou voltar para o estúdio visual e então eu vou ir em frente e criar um novo projeto . Então eu já tenho dois projetos em nossa solução. Se o projeto do FBI e nós temos nossa livraria. Você está projetando, que é nosso servidor blazer up. Alguém para criar um blazer Web assembly, e depois vamos ver o fim de semana inteiro. Você transfere o núcleo entre, então eu vou em frente. Registre a solução. Clique em Novo projeto. Seleciona o modelo blazer para cima em. Então eu vou te dar o nome Livraria. Mantenha-o consistente. Livraria traço. Você eu dots w a s m m m tão estúpido A S M. Esse é o acrônimo significa Web assembly ou é ah, você sabe, curto. Bem vendo montagem da Web em, então eu vou em frente e criar No. Quando estávamos neste ponto mais cedo nas lições onde Assembléia estava realmente em pré-visualização. Então não, está na versão completa. Quero mostrá-lo neste curso. Então ele finalmente foi lançado, e não está pronto para produção, e então vamos usá-lo para nossa aplicação. Não, neste
momento, eu quero levar o tempo para apontar algumas coisas. Um quando escolhemos Blazer, montagem
da Web, temos algumas opções diferentes. E o que tínhamos quando escolhemos o servidor Blazer. Então, em re clique que têm montagem para cima. Sabemos que temos duas opções. Podemos torná-lo uma aplicação Web progressiva, bem como uma
aplicação sp dot net core cavalos ? Não, a relevância disso é que a montagem da Web é, na verdade, uma peça fora da borda que é executada diretamente nos distritos. Er assim, quando você constrói um aplicativo que é baseado no assembly da Web, o Broza vai realmente carregar todo o conteúdo Tudo fora do recurso é necessário para isso até a execução, tudo será carregado no navegador e isso até será executado a partir de O dos irmãos. Er, tudo bem. Um servidor ativo, no entanto, realmente precisa ser implantado em um servidor como os Serviços de Informações da Internet. I s r qualquer outro servidor varrido compatível, assim como qualquer outro site. Então, mais uma vez, o blaze e a montagem da Web acima será realmente executado diretamente do navegador. Agora, se escolhermos a opção sp dot net core hospedado, o que obteremos é três projetos adicionais terão um cliente, um projeto, um projeto de servidor, bem como uma biblioteca compartilhada. Agora, a biblioteca compartilhada servirá como um meio termo entre o servidor e as reivindicações. Você sabe, nas aulas ou classes modelo. Isso seria, você sabe, comum entre os dois tipo de ir no compartilhado. O que acontece é que o cliente vai se conectar ao servidor através de um P I chamadas para que o servidor up possa ser capaz de lidar com lógica de negócios complexa em Você sabe, se você quiser falar com o banco de dados diretamente porque você pode construir uma corrente completa do Baser do que você provavelmente gostaria de ir com ele o dot net core hospedado para que o servidor faria exatamente o que temos feito em nosso servidor em então. O cliente apenas usa uma causa par para falar com o servidor. Não, eu sei que pode ser difícil de visualizar. Ele provavelmente pode experimentar, e você pode criar um que é núcleo hospedado em um que não é para fechar. Ele vai estar indo com um que não é núcleo hospedado porque nós já temos em um p I. Então eu não preciso dedo do pé. Ter outro servidor até Taconic para o FBI para o cliente depois, em seguida, conectar-se ao servidor direita, Então você não situacional e. Você pode escolher um, mas não os outros. nesta situação e não vai querer escolher uma opção hospedada principal. Não, o aplicativo Web progressivo uma vez que você acha que ele irá incluir certas
bibliotecas que muito este aplicativo para realmente ser como um aplicativo autônomo. Então autônomo significa que você pode realmente não saber o aplicativo em seu dispositivo com seu celular ou janelas parece oralmente, e ele será executado diretamente de sua máquina. Ele também vai suportar em nosso vôo mais agora, com tudo o que disse, Eu vou escolher montagem da Web, escolher aplicação Web progressiva. Andi,
eu não vou escolher autenticação ou qualquer outra coisa, mas eu vou ir em frente e clicar em cria. Tudo bem, então saiba que criamos este aplicativo. Vamos dar uma olhada no que temos aqui, então eu vou apenas expandir o aplicativo do servidor. Onda. Vamos apenas comparar os arquivos que temos em ambos os modelos. Certo, então temos nossas pastas de rota www em comum. Mas então, se você der uma olhada, você vê que o que obteria é tipo de CSS diferente ao vivo. Adicionamos os uploads para a nossa aplicação e obtemos um ícone de cinco. Eu não ouvi que você tem vem em alguns dados de amostra porque fora da amostra, isso é uma coisa de modelo. Então isso não é necessário. Nós temos. Os RCs estão mais cheios. Então temos alguma adição fora que não estão presentes aqui como o arquivo de índice. Então este arquivo de índice realmente substitui o arquivo. Certo, então o servidor vem com o arquivo do host. Nosso assembly da web vem com o arquivo de índice. Tudo bem, então, temos um manifesto de que Jason, isso é como um registro de todos os detalhes fora da web. Montagem acima. Então o nome fora do aplicativo em Você sabe algum outro dado estático onde os ícones estão etc? Todas essas coisas vão dentro do manifesto. Comece o Jason. E então temos o trabalhador de serviço Js, que é praticamente educacional para apoiar essa opção progressiva de web up. Tudo bem, então temos páginas, discursos permanecem bastante espirituosos. O mesmo. Exceto que mais uma vez não temos esse arquivo html do host dot CS. Então, quando olhamos em compartilhado, vemos as mesmas coisas nas importações e para cima não levantam a sua Todos aqueles permanecem praticamente iguais. Mas, em seguida, note que temos programa, não CS no servidor em. Em seguida, temos começar não CS que vem padrão e padrão no assembly da Web. Ele não vem com dois arquivos agora. Dito isto, você pode realmente estender este dedo do pé, ter a mesma estrutura que o programa docs e começou porque o programa que vê é realmente executa esta função, que inicializar é o começo vendo pessoas Grã-Bretanha no valor de dois. Caso contrário, quando você está registrando serviços, você tem que dizer serviços de ponto construtor, que no novo em sua escola pobre transitório na sintaxe não parece muito diferente. Então, na verdade, todas essas coisas que tivemos que fazer referência dentro do nosso blazer original
para cima nós vamos precisar de tipo para fora para a nossa montagem da Web quando precisamos deles. Então saiba que criei um projeto. Vamos apenas dar uma olhada rápida em sua compreensão para configurá-lo como o início do projeto em, em
seguida, executar. Está tudo bem,
Então, quando ele está funcionando, você vê que é literalmente o mesmo layout. Então passamos pelo servidor. Vamos, literalmente, transferir esse conhecimento para o lado da montagem da Web . Temos a página de exemplo do contador da Web em casa, qualquer palavra da mesma maneira. E, você sabe, trocar dados. Então aqui você vai ver o exemplo fora do A p que eu chamo, estamos em Fetch dados me. Apresse-se e vá para lá. Vamos ver que a página. Parece do mesmo jeito. Excepto este. Eles estão usando uma biblioteca de cliente http diferente da que usamos. Então nós vamos ser re fatoração. Então, o tribunal, porque usamos I. fábrica cliente
Http. Eles têm uma biblioteca de cliente http simples. A Andi. Então vamos mudar um pouco de frio, mas isso está além do ponto agora. Ao inicializar ele faz um A P. Eu ligo para não ser chamado direito. Então essa chamada pergunta no que você quer que eu analise o Jason? Então é disfarçado. Http. Obter a partir do conteúdo Jason que você é um barco para recuperar em. Analisá-lo no reboque. Honore, fora do tipo previsões meteorológicas sobre a previsão SYRIZA classificou-nos Segure no controle e Oh, desculpe. Está bem aqui. Meu, mas tudo bem, então há muito trabalho fora. Então essa é só a aula. Isso é tudo o que é. A Andi. Então é uma matriz de objetos fora do tipo com trabalhadores provenientes de dados de amostra barra tempo ponto Jason. Então, se você se lembra na pasta Www Route bem ali, nós temos alguma barra policial se Jason ou não. Então isso é tudo o que eu quis dizer. Foi apenas para fins de amostra, mas o princípio permanece o mesmo. Então, quando estamos quando somos um barco para recuperar algo do nosso pai o que vamos fazer, você está vendo obter de Jason Issing, analisando o que quer que seja com seus autores. São os livros sobre Se é uma lista coronária sobre basicamente colocar no U. R L quatro o A p I, que já temos em nosso arquivo em pontos, são Então vamos estar olhando para como podemos converter do cabo de fábrica do cliente http para este Um. Vale a pena mencionar que nós apenas parar isso, que em nosso programa, não CSU iria ver que isso que eles adicionaram a biblioteca CTB toe a inversão do recipiente de controle. Certo. Então, em outras palavras, podemos apenas injetar dependência. Http, o
cliente já vai resolver o nosso endereço base, mas não precisamos mudar tanto. Podemos apenas dizer, o
que você é um desejo de apontar o dedo do pé e assim por diante. Mas isso é altamente configurável neste nível. Tudo bem, então agora que criamos nosso cliente e vemos que é realmente muito parecido com o que temos feito para saber, a próxima coisa que vamos fazer é começar a configurar sobre autêntico seu filho em autorização para o nosso pedido.
59. Servidor de porta para Blazor WebAssembly: Vocês, rapazes. Bem-vinda de volta. Então eu tenho sobre na tela meu estúdio visual sobre os dois projetos a livraria você eu servidor projeto, bem como livraria você I projeto de montagem Web. Então o que vamos começar a fazer é transferir alguns fora da quadra sobre algumas das coisas que teremos que ter em mente sobre as bibliotecas que faltam entre os dois. Porque, bem, temos um monte de pacotes aqui em nosso servidor, mas ainda não os temos na assemblagem web. Então nós vamos ter que ter certeza de que nós obtemos esses, bem como os espaços de nomes. Porque eu realmente fui copiar e colar muito do que já temos. Eu não vou gastar tempo redigitando nenhuma classe ou qualquer coisa, mas nós vamos ter que nos certificar de que nós atualizamos os espaços de nomes para que as referências funcionem. Tudo bem, então vamos começar. Vou pegar o quê? Vou começar com as modelos, por isso vou levar o modelo a arder, Andi. Bem, na verdade, eu só vou fazer isso como uma operação em massa, então eu vou pegar a pasta de contratos porque nós temos o repositório de autenticação I na pasta de contratos em que temos a pasta modelos. Temos o quê? Temos páginas com usuários. Estou aqui marcando o que preciso. Preciso de uma estática, certo? Não. E preciso de serviço. E precisamos de provedores. Tudo bem, então eu vou literalmente copiar todas essas coisas que provavelmente imaginam que ela pararia com tudo. E então nós apenas gastamos algum tempo re fatoração juntos. Então deixe-me fazer isso. Então eu entendo a retenção sobre o controle em contratos clique modelos de páginas de serviço do provedor s estático em. Bem, eu acho que podemos tomar compartilhado porque temos a mensagem de erro e mensagem de carregamento. Também temos o menu do valete. Então, literalmente, tudo fora, essas coisas podem ser diretamente colocadas na montagem da web. Tudo bem? E nós apenas gastamos ah, poucos sempre construindo esses velhos. Então nós estamos realmente familiarizados com o que está neles, certo? Então eu estou apenas indo para a cópia, apenas controle e clique em cada um em, em
seguida, copiar e, em seguida, descer para o projeto de montagem da Web. Certo. Clique no clique em partes. E então ele vai me perguntar se eu tenho certeza que eu quero ignorar quando dizer sim. Porque o que quer que estivesse nas páginas originais os usuários, autores de livros, todas essas coisas que eu quero substituir alguém para dizer sim ao viver, dizer, aplicar todos os itens e dizer sim. Não. Quando eu fizer uma compilação, eu vou estar recebendo um monte de erros mais uma vez porque esses nomes espaços precisam ser abatidos em. Nós não temos muito fora das referências de fogo ou referências de biblioteca para o nosso
projeto de montagem da Web . Antes de fazer qualquer coisa, entanto, a primeira coisa que eu quero fazer é remover este arquivo host porque este arquivo cavalo realmente dar problemas, Entende? Toe, vá em frente e removê-lo do projeto de montagem web. Clique. OK, Andi, alguns erros. Inverno que você provavelmente não vê. Em seguida, o arquivo de importação. Bem, eu gostaria Bem, eu posso deixar isso até que ele faça isso caso a caso. Então, não, vou passar algum tempo limpando as referências. Então vamos aos contratos e depois vemos na mesma livraria. Você, por quê? Mas isso eu preciso colocar em pensamentos que W A s s m m m não contratos direito. Então, com essa nota, eu provavelmente posso apenas ir encontrar onde fomos procurar por tudo. É a livraria dele, não é? Eu só na direita. Então vou substituí-lo por livrarias. Você? Por quê? Barba escura. Asem. Então essa seria uma maneira
rápida e agradável de limpar essas referências. Apenas remova este. Isso eu acabei de fazer. Eu queria fazer o bloqueio. Tudo bem, Aan Den. Não é uma solução completa. Mas os projetos atuais estão em projeto sendo o projeto de montagem da Web em Do você pode off encontrar seu lugar tudo talvez. Ou se você quiser ser mais cuidadoso, Kandarr lugar próxima parte do lugar história. Ah, Click. Sim. 37 ocorrências substituídas em. Em seguida, fazer uma compilação na minha compilação produziu 108 erros. Tudo bem, então eu tenho alguns erros, mas muitos deles estão realmente referenciando como bibliotecas ausentes. Tudo bem, então você vê aqui eu não tenho os blazers. Claverie, o jade do chá e algumas bibliotecas sumiram. Tudo bem, então não se preocupe. O que eu vou fazer é apenas importante essas bibliotecas, então nós vamos apenas clicar com o botão direito do mouse no projeto meu Nisshin obter pacotes e então eu vou
passar por e instalar qualquer coisa que eu acho que está faltando. Sei que sinto falta desse Jason. Novos mutantes do filho J, alguém que não saiba disso. Quero dizer, você pode seguir meu líder. Você pode simplesmente abrir. Você começa a partir do projeto do servidor, então você sabe, o que já está em começou a nós ir em frente e bro e instalá-lo também. Então eu sei que tivemos brindes de nevasca, alguma disciplina para conseguir aquele no depósito local da Blizzard. Então pegue aquele recebendo arquivo de entrada. Estou recebendo autorização de componentes do núcleo SB. Então, isso suporta autenticação e autorização para blazer up. Você tem que tirar isso do curso que não podemos esquecer da Biblioteca JWT. Então só isso, de fato, habilidade. E nós estamos recebendo o primeiro 1 e depois de obter essas bibliotecas que eles constroem em nossos menos erros. Mas muitas ofertas da Francine ainda estão desaparecidas, então preciso ter certeza de que tenho as importações de cartões. Então eu não mencionei as importações antes, e vamos até lá e pegá-las. Vou pegar todos esses pequenos aqui. O arquivo de entrada um brinde, Onda e, você sabe, implementá-los nos projetos e, em seguida, fazer outro build on. Corrigi as áreas aqui por causa do meu amigo e substituí a história do livro. Por que referência duplicou. Então eu mudei todos aqueles que falam essas referências. E então quando eu dou uma olhada em alguns dos outros erros, eles estão dizendo que eles não conseguem encontrar, tipo, eu autor repositório. Então isso significa que eu preciso do anúncio feito uma referência global ao contrato, então eu vou apenas duplicar esta linha na DSI. Eu quero, uh, nossos amigos dos contratos construir, e então isso é ainda menos erros. Lá vamos nós. Está indo bem. Não, está reclamando da bandeira de autorização. Então, os atributos autorizados. Então precisamos incluir uma biblioteca para isso. Andi voltar para o servidor importa biblioteca que ou iniciar os projetos de servidor. Importa arquivo completo. Desculpe, a biblioteca para a autorização seria para algum distante para copiá-los Andi, voltar para o meu novo arquivo de importação de assemblagem da Web. Eu os coloquei no topo da mesma maneira. E então quando eu faço outra compilação, eu não estou nem menos erros, embora ele esteja reclamando que ele não sabe o que é autor. Então o autor estaria nas modelos. Então, mais uma vez, nós estamos parando sobre referências. Certo? Então aqui temos um compartilhado modelos estáticos e contratos. Só queremos ter certeza de que estamos fazendo o mesmo aqui. Então deixe-me duplicar isso e pegar as modelos. Tudo bem. Na banca de jornais, erros de construção
Maduro desaparecem. Então você vê que estes não são erros que são aveia. Landy Shore. Você sabe, fora do comum você não pode encontrar em pontos. Você sabe, os pontos finais estão nas pastas estáticas de lá vai haver preferência, a estática. E então essa era já vai embora. Alguns deles fizeram. Mas tudo bem. Sim. Vê onde vem? Não muito bem. Agora, algumas épocas não vão desaparecer. A razão para isso é que o modelo de hospedagem dita certas coisas em certas coisas. Sim, Canton acontece em nossa assembléia na Web, como eles aconteceram no saque. Não, certo. Não, estou no serviço de upload de arquivos. Andi, se você se lembra, o que tivemos que fazer era colocar o ambiente de hospedagem, ou
seja, o servidor em qualquer lugar que estivesse sendo hospedado. Coloque esse ambiente em, depois encontre o caminho raiz da Web e procure por uma prosa mais cheia. Agora o assembly da Web para cima não vai estar em um servidor vai estar na
máquina do cliente , que
significa que ele vai ser executado em sua máquina e meu na máquina individualmente. Não há servidor para ele falar para fazer upload de um arquivo. Então vamos ter que excluir o recurso de upload de arquivo do assembly da Web porque ele realmente não é prático. Ou eu vou estender o A P I que nós vamos,
você sabe, você sabe, fingir lembrar que o A P.
A. A. foi desenvolvido por outra pessoa é 1/3 partido api I, mas, você sabe, Teoricamente falando. Mas então nós vamos estender para dizer,
OK, OK, caras sabem que você pode fazer o upload do seu rápido diretamente. Então, essa é uma das desvantagens são algumas das caixas de depósito com montagens da Web que ele é executado
na máquina do cliente. Assim, certas coisas simplesmente não são possíveis, como lidar com um upload de arquivo ao salvá-lo em um espaço globalmente acessível. Tudo bem, então o que eu vou fazer agora é apenas comentar esta votação de classe inteira para que não
tenhamos nenhum erro. Ambos os envios de arquivos estão, você sabe, faltando referências aqui. Vou matar esta referência para remover a flecha. Então eu iria construir. Então estou farto de oito erros. Espero que não identifiquem oito erros como eu. Eu sei o que esses oito Arizona e eles têm a ver com a biblioteca de planos A C T T. Tudo bem, então esta biblioteca não é bem onde estão todas essas assemblagens Web tem a biblioteca de clientes HDTV . Hum, mas então não fica quieto. Tem ou precisa da fábrica de clientes i sgtp. Eu poderia estar provavelmente fazendo isso assim no servidor em ambos. Ei, nós não queríamos entrar no servidor. Vamos fazer isso de outra forma na web, reunindo-se. Então, com esses oito erros que eu tenho, certo? Não. São esses erros que eu tenho um brilhante saber sobre o fator cliente http quando deixá-los ? A última coisa que vou fazer, no entanto, é transferir tudo fora do placar para as referências a todos os serviços. Certo? Para que o nosso bem, não
precisamos de navalha lateral de serviço. Definitivamente. Não faça isso, mas precisamos de armazenamento de blazer e de todos os outros. Não precisamos do cliente http no DSO. Então vamos ser um pouco exigentes com o que estamos copiando aqui. Então eu preciso que eles são Frances para o serviço local Blazer e brinde com uma cópia. Aqueles do programa relenza assustado. E então eu quero convertê-los para as novas palestras estudantis. Então isso é construtor serviços ancorados com um maiúsculo s em Faça o mesmo aqui, construtor serviços ponto com um capital s Estamos recebendo linhas vermelhas porque precisamos ou usando declarações de pontos de controle onder t A sugestão que obtemos incluir as referências em Então o que mais? Fazendo isso desde o início. Eu preciso de tudo isso, certo, porque esses são todos os serviços que temos. Bem, o provedor do estado do FBI, temos as autenticações. Eles fornecem ciente do manipulador de token JWT e nossos serviços internos que criamos alguém para apenas fora deles. Tudo bem em. Eu só vou fazer Ah, rápido, encontrar e substituir. Posso deixar-me utilizável? Então não, nós temos serviços de ponto construtor. Só estou substituindo onde quer que tivéssemos serviços com serviços de pensamento do construtor, e então apenas inclua todas as referências que faltam. Depois de fazer isso, o upload de arquivo está dando um erro porque na verdade comentou tudo naquela classe. Então ele não acha que isso entenda entrar nessa linha mais tarde, nós podemos lidar com essas balas agora, as prioridades em reduzir essas flechas e garantir que tudo se alinhe aqui. Tudo bem, então se eu fizer outra compilação, eu só deveria ver os erros que eu conheço. Lá vamos nós. Então, com isso, vou deixar tudo como está. E então quando voltarmos, o que vamos fazer é re fator ou repositório baseado em como ele usa os clientes http.
60. Modificar o código para Blazor WebAssembly: Ei, pessoal, bem-vindos de volta. Então nenhum lugar foi para ser re fatoração inteiro usado o cliente http. Mas antes de fazer isso, o que quero comer é inteiro. Você provavelmente veria um monte de exemplos escrevendo acorde com o problema para ser clientes. Então, se eu voltar para buscar dados, você verá um exemplo ao vivo do que estou falando. Injetamos clientes http, damos um nome fora do curso, então você pode fazer a chamada do FBI daqui dentro dos componentes. Certo? Então, basta fazer a chamada do FBI ali mesmo, vai voltar a ser bom para você ir enquanto nós fizemos. No entanto, até mesmo no nosso servidor foi que nós não fizemos a causa do FBI dentro do componente. Em vez disso, nós quebramos o repositório do dedo aberto. Padrão meio desligado. Temos um pôster de baster que fala por nós. Então fizemos foi injetar o repositório apropriado são servidos. Então, se eu olhar para o índice para os autores estavam chamando as pessoas do autor aqui em nós estamos usando o relatório do autor suficiente ou Theriot, obter operação. Não. Se eu quisesse chamar o ponto a p i n diretamente no componente. O que eu faria é algo como injetar, clientes
http dar-lhe um nome e você sabe, eu gosto de colocar no cliente quadrado em. Então eu poderia facilmente ter dito modelo é igual a esperar na pontuação clientes escurece em, em
seguida, sublinhar Klein me dá todas essas opções. Então eu acho que o que usamos é enviar uma pia agora mesmo em nosso repositório baseado, cada chamada que fazemos, nós simplesmente adicionamos o urso falando. Então subimos uma pia. Mas então teríamos representado o pedido parar aqui, colocar na URL e tudo mais. Então vamos olhar para o telefone, Sean, especificamente. Certo. Então aqui no começo nós construímos um pedido que você sabe que é eu recebo pedidos que aquela garota , então nós criamos o cliente em. Então adicionamos a cerveja falando, e então enviamos uma pia, e então recebemos a resposta, e então serializamos o conteúdo na lista fora do tipo que quisermos. Então você vê, tudo isso é meio condensado em um FBI chamado a única coisa que não acontece no que eu estou prestes a mostrar é a adição da cerveja falando. Tudo bem, então eu poderia ter dito facilmente que o cliente recebe de Jason relaxando. Então diga exatamente o que estou esperando. O que teria sido uma lista fora do ciclo do autor disse que eu lista fora do tipo autor. Então, a direita ali vai lidar com a serialização d fora do Jason para mim em. Então, depois de fazer isso, eu iria apenas ver o URL, que sabemos que é pontos de extremidade, Author Europe. Então, muitas pessoas realmente escrevem a string estática aqui, como se eles realmente escrevessem um host local antigo. São cinco e cortar o FBI. Sabe, eu não gosto de fazer isso. Fizemos o arquivo estático para que pudéssemos evitar isso. E se precisássemos mudar e pudéssemos mudá-la em um lugar e funcionasse, certo? Então, em vez disso, você poderia apenas dizer endpoints. Aquele autor, no ponto sobre o que isso realmente faria é fazer literalmente todas essas linhas fora da quadra em um objetivo em um, certo? Tudo isso teria sido feito em uma chamada em seguida, ele iria automaticamente retornar No. Aqui está algo errado? Não, claro que você tem que tentar. As capturas são apenas 10. Gerenciar isso, você sabe, experimentar um pouco melhor. No entanto, porque fora operações adicionais, como adicionar a cerveja falando antes da chamada e assim por diante. Sabemos que era melhor ser abstraído do componente. Coloque-o em sua própria classe. Eu chamaria de como precisamos. Tudo bem. Então eu vou deixar esta terra de louvável elogiado para que eles possam ver o que era possível. Tudo bem, mas nós realmente não precisamos disso porque nós temos ou nós temos um administrador fora do repositório. Nem o Repositório do autor, como você sabe, implementa uma classe que está realmente chamando funções do repositório da fera. O repositório baseado tem esses erros agora. Então, vamos corrigir esses erros e, em seguida, re fator este tribunal para se parecer mais com a causa do problema tp cliente em oposição a esses fatores causa ou nós construímos nosso cliente manualmente. Então eu quero mudar esse dedo do pé. Http. O cliente está bem sobre eles subiu. Fez este também? Tudo bem, então você vai ver um monte de outros erros aparecendo porque não Nós não precisamos fazer isso. Criar cliente porque este é um criado tentando isso. Acabamos de injetar o nosso cliente que existe. Tudo bem, então eu vou para o topo. Esta é a criação em. Nós vamos reescrever tudo isso e provavelmente condensar até três ou quatro linhas . Então o que vamos ter é Bem, a primeira coisa que eu provavelmente gostaria de fazer é ter certeza de que o token do portador está presente, certo? Alguém pegue isso e coloque no topo. Dê ao sol o placar. Então ele sabe que o cliente que foi apenas injetado por favor adicione o padrão melhor off bureau em então ainda temos a função de obter o token portador. Tudo bem. E então esta é uma função de criação. Então eu sei que eu sou esperado para fazer oposição Say sublinhar clientes. Pontos posados. E acha que sim? Fora do curso depois de como ele postar uma pia. Então isso vai levar o U R I. Então temos pontos finais. Desculpe. Não teria sido um ponto. Você também está. Desculpe, você está lidando. Então tomamos chá. É o nosso objeto ou B J meu, mas tudo bem, então temos O B J o b j sendo o que foi passado em Andi então VJ é o que passamos. Além disso, deixe-me reler, para não colocar uma pia. Se publicarmos uma pia e olharmos para as sobrecargas, teremos que converter o antigo Bijan para algum conteúdo http direito. Então contexto cedo, podemos dizer postar como Jason E afundar. Então dizemos fora do tipo T, senhor ,
lembre-se, chás são genéricos porque não sabemos se é para ser autor ou se vai ser livro ou se vai mesmo ser usuário, nós não sabemos, Então chás são objeto abstrato. Então estamos dizendo que quando você envia as mensagens e o equivalente Jason de qualquer objeto que esteja aqui , tudo
isso BJ esse objeto literal tem o batedor. Então este deve ser eu deveria ter dito classe, Então enviar o Jason equivalente de qualquer classe é t no usuário autor do livro tempo, etcetera em d o B J tem o batedor real embalado que deve ser enviado através do direito
embalado. Não, isso retorna e mensagem de resposta http que é a mesma coisa que declaramos não aqui . Então eu vou dizer resposta http é igual a esperar que chamada em. Então posso apagar tudo isso. E então o que temos não é a nossa verificação que temos antes onde vemos se o código de resposta é que é então retornar verdadeiro, caso contrário retornar para. Então você vê, nós apenas condensar algumas linhas fora da quadra no reboque, talvez duas linhas na mesma declaração que estava lá antes. Tudo bem, então vamos fazer isso por todos eles. Eu sou alguém para fazer a mesma coisa para apagar. Deixe-me escolher um ponto apropriado. Então, sim, quero ficar com isso, mas não preciso dessa parte. Então eu vou ver como primeiro me deixa adicionar a cerveja falando. Então sempre queremos fazer isso primeiro no token de cerveja. Tudo bem, então. Vê? Clientes. Dardos. Onda. Existe uma exclusão? O pensamento está lá nas águas. Excluir a necessidade de enfrentar como, uh, parâmetros. Então ele quer pedir-te. Sou tão literalmente? Seja o que for que tivemos aqui, você pode apenas dizer que coloque aqui, então isso retorna nossa resposta. Perder isso. Então, queremos ver mensagem de resposta http é igual a aguardar este carro, porque é uma coisa. Então temos que nos certificar de que estamos em peso. Então eu apago todos esses fins fora do tribunal e trago ou declarações. Certo, então vamos nos certificar de que nos lembramos de colocar a cerveja falando antes que ela faça a ligação. Tudo bem, então o próximo nós queremos obter um,
uh,
registro específico uh, . Então o que vamos ter aqui é em primeiro lugar, vamos envolver o Nós estamos falando no seu ou cliente. E então eu fui ter o nosso, vamos ver, lembre-se que não. Aqui. Teríamos recebido uma resposta. Avaliei o cordão, tenho o conteúdo para retornar. Certo? Então, essencialmente, quando mudamos a sola para o cliente, não temos se ele recebe participação no financiamento. Então nós apenas retornou o conteúdo,
Então, se ele não obter conteúdo vai voltar. Não. Tudo bem, então eu vou ver o Vier. A resposta é igual a on. Depois, os clientes
atracam, suba. Eu posso ver. Saia de Jason e pia. Seja qual for. Tipo de classe no momento em, então isso vai esperar o U R I para isso. Então o você é um ou U R l Desculpe seria u R l mais i ds E eles só é que lá em , então eu posso retornar resposta. Então, todas as escolas são que tivemos eu apenas retornar resposta Rx Então lá vamos nós três linhas obter essa linha vermelha porque eu preciso esperar. Tudo bem, então aqui vamos nós. Em seguida, temos a sair da lista, então é praticamente a mesma coisa. Só vou copiar isto. Andi colocou isso dentro da tentativa. Exceto que desta vez, nós só temos a URL, não a Europa, mais eu d. Então é apenas a URL desta vez. É uma lista fora do tipo T. Então você vê aqui sem uma lista fora de T. Então vai ser a mesma coisa lá em. Então retornamos a resposta para que tudo isso literalmente desapareça. Tudo
bem, quero dizer, há uma boa vantagem, você sabe, você provavelmente pode voltar e ver se você pode refatorar nosso repositório baseado original para isso , mas eu quero sair o original no caminho em que está. Então você tem dois exemplos. Você tem o tribunal original, e você tem este método. Mas isso mais uma vez, está no projeto de montagem da Web Blazer para o repositório de animais. Tudo bem, vamos, então, para os fantoches ou otimistas. Eu só fui em frente e fiz isso. Então,
mais uma vez ,
eu deixei o cheque inicial. Eu incluí o conjunto de token portador da resposta para colocar como Jason uma pia um tipo t com a URL no portão de água um pacote em que eu estou tomando se o código de resposta é bom ou não no retorno. Tudo bem. Então é isso que o nosso repositório baseado não parece em quando eu faço uma compilação. Estou recebendo esses erros nos outros porque,
bem, bem, eles ainda estão olhando para a biblioteca cliente http. Então isso foi planejado. Fábrica. Então vou passar pelo repositório de Autor sobre mães de bebês. Então não é mais eu TTP tipo fábrica. É. Não. A classe de cliente http no arquivo dwell fluiu, foi excluída ou está sendo excluída para não. Tem que ter certeza de que fazemos isso para o repositório de autenticação em. Então nós vamos ter corda refratora no dedo do pé também, porque lembre-se que este está usando a fábrica atual. Então sei o que isso pareceria é algum post se opõe como Jason. Qualquer coisa, certo? Então eu vou começar dizendo que a resposta da barra é igual a que meus clientes começam a
posar como está. Esse é o nosso Jason. Você afunda e fora do curso depois, veja, aguarde. Então o pobre diz que Jason está pensando em arma estavam chamando pontos, não Logan Endpoint em. Estamos passando o usuário como nossos dados. Certo, então esse é o nosso post. Então eu vou tirar tudo isso porque esta linha mais uma vez substituiu tudo isso marcou. Vamos verificar se foi um sucesso. Starter marcou nossos nós. Tudo bem, então. Não precisamos do dedo do pé. Tome todo o resto disso porque queremos o conteúdo da resposta. Vamos atirar, sentar e pegar a ficha. Nós ainda vamos definir o armazenamento padrão falando sobre mudar o estado fora do up, então bem, nós podemos rotinar essa linha fora do cored, mas eu não acho que isso é necessário porque nós realmente estamos adicionando-o à chamada toda vez De qualquer maneira. Mas vou deixá-lo lá como um pouco fora do tribunal legado. Tudo bem. Diga, veja essa linha. Só que ele pensa em alguns. Muito bem, deixamos o barco do amor, como está lá. A mesma coisa para a caixa onde estou colocando que nós temos. Desculpe. Deixe-me normalizar. Então temos resposta sendo igual a uma chamada post para o ponto final do registro, e estamos passando o objeto do usuário apenas para parecer que em
D.C este 19 Claro. Mais uma vez, apenas removeu talvez seis linhas fora da quadra. Tudo bem, então eu posso apenas remover todo o cordão legado nas duas linhas. Teríamos registrado uma pessoa ou nós, certo? Então esse é o nosso novo repositório visual em. Então eu vou fazer uma construção em Dhere. Estou a entrar no ar, a navalha está a queixar-se de um programa de barco. Então deixe-me checar meu programa. Financiador. Está tudo bem quando eu verificar. Vejo aqui que tem o Dr. Watson duas vezes. Certo? Então, há um espaço de nomes simples. Quando eu voltar lá, o código de cores não é o que deveria ser. Deixe-me construir de novo. Tudo bem, sobre ele é construído. Eu não acho que nós pegamos o conteúdo para a atualização. Navalha. Não, não
fizemos. Então os Abdolreza lembram que teríamos consagrado com a visão autorizada sobre a cascata de certas coisas, então eu vou realmente fazer isso. Está bem, deixa-me copiar isto, mas vou fazer-me umas mudanças. As alterações de uso Andi afetarão a experiência para o usuário. Então o que acontece agora é que se alguém não está registrando e eles tentaram chegar a uma página, eles provavelmente teriam apenas no Pete. O que eu quero gostaria de fazer é provavelmente redirecioná-los dedo do pé longo em p medo ou o log impede. Então eu vou modificar a visão de rota de olhos do autor. Então eu vou transformar esta cidade em uma pessoa aberta e próxima para assumir essa conversa. Em seguida, coloque uma palestra final para isso manualmente. Lá vamos nós. No dia de dentro, fora desta vista autorizada, vou colocar uma inundação que não está autorizada. E então aqui dentro, você basicamente pode colocar um componente, são colocar algo para ver. Isto é o que deve acontecer quando alguém não está autorizado. Então o que eu vou fazer é configurar um componente no qual eu vou chamar redirecionamento para fazer login . Então é vermelho porque ainda não existe. Barcos. Isso é fácil para nós consertarmos. Então nós vamos apenas fazer um componente de fantasia e que coloca o interior do compartilhado para que seja globalmente acessível praticamente nossos componentes Reza. Vamos chamar isso de redirecionamento para acessar Andi praticamente. Tudo o que vai fazer é apenas navegar do pé do anseio p dreck. Então, uma vez que é redirecionado aqui, ele está apenas indo toe un initialize, apenas navegato arrastando. Tudo bem, então vamos apenas mais uma vez. Vemos que temos um edifício bem sucedido. Vou parar aqui mesmo. Então, quando
voltarmos, vamos testar os frutos do nosso trabalho ou fatoração vamos fazer interinteresses
com a autenticação Onda,
a gestão de livros Desculpe, a gestão de autores, uma vez que o gerenciamento de livros requer de perto, o que não está completamente pronto, mas vamos apenas ir em frente no teste alguns deles
61. Fixos de layout essenciais e adições: Tudo bem, então estamos dentro. Tive um problema de qualidade de dados. Então efeito indireto aqueles sobre. Podemos ver que estamos recebendo aquele estado autenticado olhar e sentir. Se eu for ao discurso do autor, voltamos. Tudo para autores. Dana não está, quer
dizer
, ela só tem as opções de vista. Se eu clicar em Ver e vermos onde você vai levá-lo? Voltar? Um. Então você vê aqui, eu estou voltando. Tese do lado do brinde. Então acho que preciso fazer uma limpeza, mas isso não é problema. Só queremos verificar se estamos voltando ou dissuadindo. Se eu olhar para livros, inchaços, novos projetos ou não, fora dessas capas de livros estarão aparecendo, então tudo bem. Isso é compreensível, mas precisamos lidar com essas modificações postais. Tudo bem, então pelo menos vimos que nós meio que com sucesso é que a cirurgia trouxe nosso servidor chamado para a montagem da Web, e a maioria das coisas como uma luva. Pequenas diferenças. Então vamos apenas ir em frente e limpar nosso aplicativo. Tudo bem, então deixe-me começar com o brinde, para que os brindes faltassem um arquivo CSS, que teria feijão em páginas e hospedaria Andi. Há aquela referência do arquivo CSS. Compreender? Para copiar isso e colocá-lo sobre índice, iniciar leste de arquivo deste lado. Certo, então. Só vou verificar se a notificação do brinde está chegando na hora
certa. Então, sobre isso, em nossa criação ou fizemos foi nós dissemos que se é uma criação bem sucedida,
então, então, você sabe, mostrar o brinde enquanto navegava para longe. Isso é bom. Fazemos isso para as exclusões da mesma maneira para o erro, apenas aquele índice onde não há brinde no índice. Mas então, por alguma razão, eu coloquei o brinde para a página de visualização no topo, entendeu? Apanhei isso,
coloque-o abaixo da inicialização do modelo. Assim que um modelo recebe seus dados, então mostramos nosso brinde, vendo todos os seus não visualizarem para sempre. Então isso deve resolver essa preocupação. Então eu fui em frente e olhei para o arquivo de visualização para os livros e vi que eu tinha no mesmo lugar e no topo. Eu apenas replicei esse gene fora de pensamentos. Muito bem, então a nossa aplicação está em execução. Não, o que precisamos fazer é descobrir o que estamos fazendo em relação ao livro. Cubra-se. As estradas estão abertas. É em geral. Então deixe-me apenas rever o que tudo sobre uploads do aplicativo de servidor. A expectativa seria que este aplicativo,
o aplicativo de servidor Blazers, teria sido armazenado ou hospedado em uma máquina de servidor,
uma máquina central onde as pessoas que crescem para o Earl Andi executam o up em quando fazer upload. Ele está indo para aquele servidor. O assembly da Web funciona um pouco diferente porque ele está realmente sendo carregado
diretamente na máquina do cliente. Os nossos rapazes. Então o que eu fiz aqui é executar o toe, tanto o assembly da Web no servidor lado a lado. Tudo bem, então tudo o que estava indo para o Visual Studio foi para a solução. As propriedades e selecione começar em todos os três projetos sobre o FBI está correndo de uma
maneira diferente . Sem balas, ambos os aplicativos cliente ironia lado a lado na inspeção de elementos ao olhar para o Network Lord para qualquer aplicativo. Você pode ver que bem, o onde assembly carrega mais algumas coisas do que o servidor faz em. Além disso, você com base em qual navegador você está usando ou às vezes você pode realmente ver. A DLL está sendo carregada. Assim, as ofertas sobre todo o conteúdo necessário para os sites ou para o aplicativo são realmente carregados diretamente no navegador de uma só vez. Portanto, não há onde Central para um upload de arquivo, na verdade lugar de arquivo. Então, por essa razão, o que vamos fazer é estender sobre um PNG apenas perto. Estes serão estendendo nosso A P I para a criação em qualquer dedo do pé do livro incluir um espaço para nossos uploads de
arquivos. Então vamos enviar arquivos para o FBI e o FBI vai armazená-los no que um
PS reserva disse, EPA está sendo hospedada. Certo, então é nisso que vamos trabalhar quando voltarmos.
62. Blazor WebAssembly Assembly and Upload de arquivos de API (Crie e vista): Vocês são bem-vindos de volta. Então, não, vamos modificar as operações do nosso livro para atender aos envios de imagens. Quando o anterior ouvir, Eu teria mencionado que aplicativos de assembly da Web não será capaz de lidar com
uploads de arquivos da maneira que teríamos visto com os servidores. Onda mais especificamente sobre servidor blazer até na livraria Você eu teria permitido que você carregasse o arquivo e armazenado no servidor que o servidor se está sendo hospedado na web. Assembly up, no entanto, não tem tal mecanismo, uma vez que teoricamente não há nenhum servidor por trás dele. Então o que vamos fazer é modificar sobre FBI de tal forma que podemos atender para lidar com ah, upload de
arquivos ou transferência de arquivos entre o aplicativo cliente de montagem da Web aplicativo cliente no servidor em que o FBI está sendo hospedado. Tudo bem, então dentro de todo o cenário, fora dos resultados e todas as tarefas que levamos um pouco para ver que os terceiros fornecedores
do FBI não têm estendido a oportunidade para enviarmos os arquivos em vez disso de ter os buracos dos arquivos nós mesmos. Tudo bem. Então eu vou começar modificando o modelo do livro no PI. Então nós temos o DT a DT Oh, desculpe. Livro DT Oh, arquivo em nossa livraria FBI em. Eu vou modificar todas as três classes alguém toe adicionar uma nova propriedade em Eu vou apenas um detractor sobre o preço deste vai ver um arquivo string. Não, esse arquivo de força será diferente da propriedade de imagem de fluxo porque a imagem será armazenada no banco de dados. Esse valor é destinado ao banco de dados. Sobre este é apenas um pouco de neve Alguns batedores sobre o arquivo que está sendo
originado do cliente para que possamos tê-lo no lado do servidor para o bem. Mas à medida que avançamos, você vê, Então eu vou apenas adicionar essa propriedade para reservar GTO em qualquer outro detalhe que você pode ter que bem,
ou seja, livro atualizado no livro criar porque nós também vamos estar usando esta propriedade toe obter os detalhes do arquivo para uma atualizá-lo, bem como obter detalhes para criar em. Então, sempre que estamos carregando nossos dados usando o livro normal
BTO, também precisamos carregar os detalhes do arquivo por imagem. Eu também vou modificar a estrutura A completa um pouco, e eu vou incluir um uploads mais completo. Então, apenas para a direita, clique nos projetos. Ir para adicionar Select New Fuller em Eu vou chamá-lo cargas. Tudo bem,
Então, embora os uploads vão aqui então não temos o doublet um pouco da rota para o como fizemos no,
bem,
o bem, assembly da Web ou o servidor. Não temos isso aqui, por isso não vou comer muito o Bernie. Nós apenas criar e enviar pasta em. Vamos apenas anotar um ponto para o conteúdo com, em vez disso, fora da rota do ambiente. Agora vamos para o modelo de livros para nossos projetos de montagem. Então tínhamos o livro, não o CS ligado. Vou adicionar esse arquivo. Eu sinto lá também, modo que há um mapeamento direto entre os detalhes sobre o modelo UPS montagem da Web. Tudo bem agora, vamos passar para nossos componentes de criação e vamos modificá-lo um pouco. Então eu vou pegar toda essa referência de serviço de upload de arquivo porque eu não vou confiar no mecanismo de upload de arquivo regular novamente, então eu não preciso de uma referência a esse serviço. E, claro, se eu remover isso, vamos obter alguns erros abaixo. Mas isso é bom. Então isso eu posso apenas removê-lo e eu vou comentar eu apenas removê-lo em. Então vamos modificar este dedo do pé do cordão estão gostando. Agora, o conceito por trás do que estamos prestes a fazer é realmente baseado no que fizemos aqui ao
explorar o próprio upload de arquivos. Certo, então quando fizemos a seleção do arquivo, o que fizemos foi pegar o arquivo que foi selecionado. Fizemos alguma validação. Na verdade, revi este tribunal, e acho que seria melhor conseguir a prorrogação. Então, em vez de olhar para o nome do arquivo para ver se ele contém, eu vou obter a extensão, certo. Então eu só fiz essa mudança como estamos, já que estamos aqui agora, e então eu vou aceitar. A extensão contém estas palavras-chave para a validação são porque a coisa é que quando você faz o nome do arquivo, você pode ter algo um arquivo txt com o nome J p. G. Então poderia ser jpg, doc. Txt. Certo, então foi uma má decisão da minha parte. Se você pegou e já consertou, então parabéns para você. Sem problema. Tanto melhor. Então, vamos seguir em frente. Então, depois de validar ou arquivar, isso foi apenas selecionado. O que fazemos é carregado para um fluxo de memória. Em seguida, fazemos alguma conversão toe obedecer 64 cadeia de dados e, em seguida, usamos que ser 64 data astri toe, criar um em representação imediata ou pré-visualizar fora do arquivo. Não, o que vamos fazer é confiar nesta base de dados 64,
na verdade, transportar através do tubo entre o FBI e os clientes. Então isso é na verdade apenas uma corda. Se você olhar para ele, é como um enorme silêncio que apenas representa os dados para que você possa converter a partir dos dados. Este fluxo de memória representa a data certa? Assim, o leitor representa os dados reais, ou pelo menos a espiral M s representa os dados reais carregados na memória, e é como onde d serializá-lo em uma string estática. E então você pode pegar essa corda em re engenhe-lo em uma imagem que é praticamente o que fizemos aqui. Tudo bem, , então o que vamos fazer é confiar nessa linha fora do tribunal para nos dar os dados da base 64 que vamos limpar em nossa propriedade de arquivo para o livro. Certo, então vamos fazer isso juntos. Então, crie quando estamos juntando todos os detalhes da imagem e qualquer outra coisa e então dissemos o nome da imagem. Deixe-me tirar isso um pouco. O que eu vou fazer é também dizer o arquivo de pontos modelo é igual ao arquivo M s, que é o fluxo de memória. Tudo bem, isso tem todos os dados. Há aquele fluxo de memória. Então eu nunca aconselharia este tribunal um pouco onde em vez de ter vários fluxos memória
têm um fluxo de memória, então se você não tem isso feito, você pode apenas olhar para ele. Temos um fluxo de memória que é global para toda a página em. Então o que fazemos na seleção de manipuladores é que sentimos esse fluxo de memória com os dados, então isso significa que para todo o ciclo de vida fora da fala, esse fluxo de membros terá os dados que representam a imagem que acabou de ser selecionada. Então, tudo o que vou fazer neste momento é converter-me. É basicamente fazer isso, certo? Então esta imagem Bay 64 dados onde nós convertemos para não ser um fluxo de 64 apenas indo para copiar isso
desde que eu já estive lá em, isso é o que vai ser o valor para o arquivo. Então a string que vai ser gerada para a base 64 que vai ser incluída
no arquivo em , em
seguida, enviada através do fio com o modelo e fora do curso, nosso livro, BTO, tem o arquivo propriedade, então ele vai recebê-lo em então saber o que precisamos fazer é processá-lo em, em
seguida, re engenhe-lo no arquivo físico a ser exibido são para ser salvo em vez em nossa ordem
uploads. Mas tudo o resto permanece o mesmo porque ainda estamos recebendo o nome da imagem como de costume fora do curso. Vamos ter que mudar algumas coisas do caminho à medida que avançamos. Mas é para isso que estamos aqui. Tudo bem, então saiba que fizemos isso. O que vamos fazer é modificar a ação de criação do nosso livro. Apenas faça isso ao mesmo tempo. Então nós temos criar no dia, nós vamos ter que modificar o que acontece dentro disso. Então, vou verificar depois de termos feito todas essas operações. E eu vou fazer isso depois que eu souber que foi uma criação bem sucedida fora do registro porque eu quero fazer o upload do arquivo. Em seguida, a criação do registro sente para que possamos apenas fazer esta operação depois ou verificar para ver se ele foi bem sucedido alguém para ver se não ponto string direito é não estão vazios. Significado é seus dados dentro desta string e a string que eu estou indo inter get está em nosso livro BTO arquivo encaixado. Está bem, lembra-te, encontra-nos uma corda, por isso estou a verificar. Consegui algo dentro disto e todo o caminho que eu deveria conseguir algo dentro do arquivo é se houvesse um arquivo sobre DWI. Obteve a imagem, bem como o arquivo físico. String ser 64 string. Certo. Então, se houver nos dados dentro desse arquivo sentir pena, então o que eu quero fazer é obter o poço cria um caminho de imagem. Então o nosso caminho de imagem para salvar o nosso I am G pass é igual a on. Precisamos dos nossos ambientes. Alguém para voltar. Eu teria que incluir algumas das coisas que incluímos no original. Então deixe-me apenas recuar. Então eu estou correndo paralelamente para que, você sabe, você vê que a maioria dessas coisas nós fizemos isso antes com esse tipo de transferência de conhecimento, certo? Então, em nosso upload de arquivo, teríamos em injetado I ambiente de host Web. E é isso que nos dá acesso a todos os quatro. A estrutura fora do aplicativo do servidor. Mais uma vez, aplicativo de montagem
da Web não tem nenhum ambiente de host da web, mas nosso FBI tem. Então esta biblioteca não funcionaria dentro do nosso com montagem. É por isso que comentamos todo o cabo de upload de arquivos inicialmente para nos livrarmos dos Eros. Mas está muito presente em nossos A. Ks. Vou pegar emprestado a linha do controlador de livros Dinar. Vou injetar tudo bem. E fora do curso, enquanto injetamos, tivemos que incluir a referência que faltava. Então, uma vez que você fez isso, então você pode continuar. Então, quando vamos criar sobre o caminho da imagem, eu vou ter que ver algo como o quê? Eu só uso minha interpolação em construir todo o caminho então primeiro tem que obter o nosso ambiente. Então sublinhe os pontos de inveja. Então, no anterior que usamos, deixe-me ver o que usamos no upload de arquivos. Usamos o caminho Webroot agora. Não há caminho Webroot porque Www rota é o que Route pot. Não há nenhum lugar Rupa em nosso acre, nós não temos raízes www. Então, em vez disso, eu tenho que usar o caminho da rota de conteúdo, que é onde o nosso aplauso para isso está, que é o pote raiz para todo o nosso jejum de qualquer maneira, certo? Então eu vou dizer, Onde eu estava no controlador Envy Dots Content Route Path em. Então eu estou indo apenas para construir toda a parte aqui barra uploads barra Lembre-se, temos que fazer a barra dupla por causa do personagem de escape em. Então eu vou ver o livro GTO dot image. Certo, então o detalhe do livro não a imagem, porque eu sei que é isso que eu quero ver. Vitter tem razão. Quero ver nos envios. Folo no nome da imagem ou da família e eu me deparei com o cano no detalhe. Objeto está na propriedade image. Então essa é a descoberta que pretendo usar. Tudo bem, então eu vou converter sobre Bay 64 string. Isso estava no arquivo. Propriedade em reboque. Ah, morda, Depressa. Certo, então vamos criar a mordida, Ari. Quero dizer, isso poderia ter sido demitido no bar, mas estou usando o tempo de dados explícitos só para que você possa ver exatamente o que está acontecendo. Então estamos vendo mordida, Ari. Picadas de imagem é igual a converter a partir de Bay 64 string. Certo. E se você apenas olhar para a sobrecarga ou o que é preciso, é preciso, ele retorna no meu atari, e leva uma rua. Temos os dois. Então temos a área de mordida para recebê-la, e estamos convertendo a corda. Essa é a cadeia de 64 base que é encontrada no arquivo. Tudo bem, então. Uma vez que tenhamos feito tudo isso, nós simplesmente fazemos arquivado para fora tudo de volta. Então estamos basicamente vendo o arquivo, que é isso conflitante porque, ok, eu não quero essa função de arquivo. A função é que eu quero é a classe. Eu quero despondar no sistema que eu devo esse arquivo para que você possa ter esse conflito. Se você tem esse conflito, ele só precisa qualificá-lo. O sistema que eu não vou arquivar é igual a baixar. Desculpe. Sistema que eu não iria arquivar ponto certo, Todas as mordidas em. Então temos a parte da imagem, que acabamos de construir. Então a imagem morde. Tudo bem, tudo bem. Então eu tenho uma boa mente para dar uma volta, então eu vou apenas começar o nosso projeto. Tudo bem? Então eu estou logado como administrador, e eu estou nos livros sexual inimical para a página de criação na direita fora do Mas eu estou recebendo um erro. Deixe-me ver o console e ver o que está acontecendo. Estou recebendo um erro que não conseguimos encontrar a entrada do blazer. Então isso significa que estou perdendo alguma referência. Em algum lugar dessa referência está um arquivo JavaScript. Então, nos hosts ou no arquivo host do projeto do servidor, nós teríamos incluído seus barcos. Acho que esquece essa inclusão quando procuramos. Então eu só ir sobre o projeto de montagem web no arquivo de índice em incluído da mesma maneira. E então vamos tentar de novo. Está bem. E estamos de volta. Não há erro desta vez, então vamos continuar. Vou em frente e criar um livro. Então este, eu vou chamá-lo Auto Bio. Vou dar no Spn, dar um valor sensato. Um autor de seleção de prêmios. Meu livro sobre, em seguida, os momentos foram esperando vai escolher um lugar longe para escolher o meu tiro na cabeça. Em seguida, clique em criar livro em e depois foram redirecionados. E temos o nosso sucesso, Sra. Acho que algo aconteceu no nosso estúdio visual. Na solução Explorer. Vemos que realmente temos esse arquivo através do lúcio. Tudo bem, então vemos que um 64 string foi convertido. Não para a bateria e escrever para o local certo em que é a nossa esperança. Feche a pasta. Bem aqui. Então isso funciona bem no DNO. Podemos continuar com a nossa prova de conceito nas outras páginas. Então isso foi para o riacho. Então eu posso fechar criar que o componente é feito. O que eu vou ter que fazer Não,
para a nossa visão, índice e Raisel é certificar-se de que a nossa imagem está realmente sendo enviada de outra maneira, o significa que estamos enviando do a p R do servidor. Então, os clientes, como vou fazer isso? Bem, eu mencionei agora que é isso que temos o nosso novo arquivo de chamada de propriedade para certo. Então precisamos toe convertido a partir do arquivo físico em A por sua cadeia 64 na base 64 string. Desculpe em. Em seguida, coloque-o no arquivo no objeto e, em
seguida, envie-o através do fio. Então vamos começar esse processo com a nossa visão. Complete bem ver componente primeiro, mas a visão Ah, ação. Onde nós Então, onde você consegue livros? Isto é pegar livro um livro. Tudo bem agora no livro “get book”. O que eu vou querer fazer é tirar o caminho da imagem que está dentro do registro. Então, quando obtemos o registro, se há um valor de imagem, porque pode haver muito bem não ser uma imagem anexada aos livros necessários, então precisamos querer apenas obtê-lo. Se houver realmente uma imagem, certifique-se de que o arquivo existe e, em seguida, converte porque se não conseguirmos fazer tudo isso, então ele definitivamente vai pegar uma exceção. E apenas através de um 500 0 qualquer vez que tentamos navegar Então eu vou primeiro ter dedo do pé, fazer algo como depois de obter o registro em, então temos mercado no DT Oh, eu vou verificar no DSI se nossa propriedade imagem não sabe Lar vazio direito. Então, se as porcas de string não é todos estão vazios, não string é não estão vazios na ameaça de imagem de estoque de resposta Então, estamos nos certificando de que
há realmente um valor. Então precisamos do caminho para fora da imagem. Não, eu já escrevi frio assim na criação onde eu estava fazendo o caminho certo. E depois fui atrás dele. Um pouco semelhante fora do tribunal conhecer minha filosofia e uma boa regra de ouro é que se você tem que
escrever a mesma coisa mais de uma vez em mais de uma espécie, escreva um lugar onde todos possam chamá-la. Então, em outras palavras, eu estou apenas em função criativa que vai retornar Ah, caminho
completo para qualquer necessidade de imagem dada, certo, então no topo. E não há nenhuma razão em particular indo para os barcos superiores, você sabe, você pode escrever uma função em qualquer lugar dentro de um controlador. Quero dizer, uma vez esteve na classe. Mas eu só vou colocar este no topo aqui, e eu estou apenas indo para criar uma função de cadeia rápida, privada que vai ver recebe caminho de imagem. Tudo bem em. Então ele vai tomar um parâmetro, e isso é privado. Ele vai ocupar a imaginação de string de parâmetro. Vamos ver. Bem, finalmente, corda finalmente agora, Coisa legal. Ah, barco c afiado para cima é que podemos fazer tudo isso em uma extremidade. Mas eu vou mostrar uma coisa primeiro, onde o que eu vou fazer é retornar, e então eu vou apenas fazer a mesma corda interpolada. Mas desta vez vou ter de o encontrar porque estamos a passar e despedi-lo. Então eu tenho as regras de conteúdo do ambiente. A pasta de perto em qualquer nome de fogo que está sendo passado dessa maneira. Sempre que precisarmos interrogar esse Fuller, podemos apenas obter a parte completa desta função. Tudo bem, em, então, se é que nós temos, você sabe, nós tinham-me para isso em outras classes ou outras configurações que não são apenas neste controlador do que podemos torná-lo um pouco mais acessível, mas para não, este é o único lugar que precisamos agora,
veja, veja, afiado. Ele nos permite escrever tudo isso sem as chaves. Então podemos quase certo, como a expressão Lambda onde eu vou ver o literalmente o ponteiro lambda em, em
seguida, abrir e fechar a brisa sobre. Então, seja lá o que for que você queira devolver. Então, sempre que você tem um forro indo, filhos onde ele não precisa de um cálculo rápido e retorno, você pode escrevê-lo assim, na verdade. Tudo bem, então só estou mostrando outra maneira de fazer as funções aqui. Então aqui, isso é apenas ir toe retornar o caminho completo para qualquer nome de imagem que é dado. Tudo bem, então eu posso ir em frente e substituir na criação a parte onde nós dissemos que a parte da imagem de fogo é igual dedo do pé, e nós escrevemos tudo isso. Vou substituir toda aquela corda estática. E eu não gosto de ser cordas estáticas que depois de reconstruir, nunca
é bom. Eles chamam isso de cordas mágicas no que acontece é que, você sabe, você pode cometer um erro simples e isso joga tudo fora. Tudo bem, então é mais fácil construir de uma vez e preparar tudo o resto. Então aqui eu só estou dizendo, me
dê o pote de imagem para ambos imagem GTO. Então eu só substituo por um antigo afundado. Tudo bem, então eu vou fazer a mesma coisa lá dentro. Off, câmbio. Onde é que estamos à procura da vista, certo? Então aqui eu vou começar pegando o caminho da imagem. Andi, é só ir dedo do pé devolveu a corda, então eu tinha um pouco de fluff nosso. É terrível que tenhamos feito isso. Nosso caminho MG é igual para obter imagem. Cinco. Imagem do livro, certo? Então esse é o caminho que queremos. Então, como outra precaução, quero verificar se existe, certo? Então, se ele existe, então eu quero realizar as operações, entendeu? Para dizer se o sistema que eu o dot arquivo existe este caminho de imagem em, então nós vamos construir ou morder Ari em algum lugar para dizer por ele. Ari em linha. Eu só vou chamá-lo “Eu sou G mordidas é igual a, e então nós temos nosso sistema que eu devo, não arquivo em. Então vamos ver, ler todas as mordidas, então o caminho I am G ou a parte para os limites. Então estamos vendo ler todas as mordidas. É assim que eu sou GPAs. Tudo bem, então leia todas as mordidas que este arquivo tem. Então vamos nos converter. Eu sou G mordendo para ter 64 anos. Em seguida, comece em resposta ou indo para ver uma resposta. DOC é igual a converter pontos para base 64 string em. Então estamos passando minhas mordidas AMG. Então aqui estamos desconstruindo a imagem no reboque. Essa string que só vai conter dados. Então, se você der uma olhada na carga útil, talvez você possa testá-la. O carteiro é assim. Mas tudo o que você vê dentro disso é apenas uma longa corda com um monte de
caracteres aparentemente aleatórios . Não, dentro do componente onde realmente pretendemos visualizar a imagem ao rever o livro. Se há uma pessoa de imagem que precisamos ver a imagem certa, o que ela está fazendo, Rando é que ele tem um tribunal do servidor, então eu quero dizer, nós podemos estar até chateados, mas é só olhar para os uploads para embora para essa imagem, não
há nenhuma pasta de fechamento em nosso projeto de assembly da Web em. Além disso, esse nome de imagem pior não ajuda. Mas nós apenas incluímos os dados para a imagem em voltar para o exemplo off. O criador não deveria. Claro, ele ainda voltou ao exemplo da criação. Construímos o que chamamos de dados de imagem. Você é l direitos estavam usando o básico antes em que foi usado como a fonte para a visualização fora da imagem. Então, desde que estamos voltando, obedeça 64 cordas. O que eu vou fazer é remover esta seção aqui em uma cópia, nosso frio que usará para construir a base 64. Por isso, vou copiar esta parte. Tudo bem, , então, dentro de você, é
isso que eu vou definir um tipo, então aquele sinal, tudo isso. Mas não há Image Bay 64. Mas temos o nosso modelo ancorado arquivado, o que tem que ser uma corda 64 fora do curso? Se nada voltar, a corda é não? Então esta imagem nós sabemos o que vai parecer já. Certo? Tudo bem. Então vamos dar uma volta mais uma vez o que fizemos foi caçar, acariciando nosso arquivo de imagem para a vista, certo? E nós vamos saber clique na vista e ver o que volta. Tudo bem, então estamos de volta à nossa lista fora dos livros. Então. Se eu ver algum desses livros, tenho certeza que vou obter algum tipo de erro ou bem, nós temos uma imagem quebrada. Não há nada lá. Sem problema. Mas então, se eu ver auto Bio, que é sobre isso que acabamos de criar onde temos o arquivo carregado, então eu vou estar vendo minha imagem. Tudo bem, então este foi a causa serializada do arquivo existiu um. Então ele foi convertido na base 64 string enviada através do tubo como uma string estática em então apenas, você sabe, exibido neste ponto de visualização. Tudo bem, então com esses dois feitos, os próximos que temos que modificar seria para garantir que a imagem apareça na listagem. Se estiver presente, Andi toe tem a qualquer página operada corretamente. Então, você vê, eu clico em editar, e nem começou a se incomodar com o Senhor porque há apenas um erro instantâneo. Quando tentei carregá-lo, então precisamos consertar isso. Então, quando voltarmos, vamos corrigir a listagem de índice, bem como a página Editar.
63. Blazor WebAssembly and Upload de arquivos de API (edição e lista): Vocês são bem-vindos de volta. A última vez que
estivemos aqui, estamos sentados ou criamos páginas de visualização
, trabalhamos com o novo paradigma de enviar e receber dados de imagem do macaco ainda? Não. Vamos começar a trabalhar com a edição. Andi,
eu realmente fui em frente e escrevi muito fora do cordão. Ainda não testei isso, mas eu vou orientá-lo através de cada linha que escrevi sobre o que ele faz, e então vamos testá-lo juntos e re fator juntos. Então vamos começar com o fato de que eu introduzi uma nova função para o repositório de livros no Die. Chame isso. Obter arquivamento de imagem. Tudo bem, então o propósito desta função será o dedo do pé, basta recuperar o nome da imagem que está no registro quando um opiáceo está sendo executado. Agora, o plano de fundo para isso será que quando você estiver editando um livro e fizer upload de um novo arquivo, seja o mesmo arquivo ou não, o que eu quero fazer é comparar o nome do arquivo que está vindo através do fio, bem com o nome fino que está no registro. Agora, se você não mudou o encontrado ele, então este arquivo será o mesmo. , se você alterou o arquivo No entanto, se você alterou o arquivo
, as descobertas serão diferentes. E então precisaremos remover o arquivo antigo no novo arquivo, assim como fizemos com o serviço de upload de arquivos onde tivemos que remover o antigo e colocar o novo. É um conceito semelhante, mas então você sabe onde nossas mãos estão. Meio cansado? Não, porque tudo o que podemos confiar é em texto. Então, uma vez que os dados enviados dos clientes não, temos que interrogar para ver se o novo nome do arquivo realmente um novo significado finalmente depois que
você editou o registro? Recebi um novo nome de arquivo ou é o mesmo? Encontre-o se for o mesmo que eu não faça nada. Se for novo, terei
que fazer alguma coisa. Então eu só introduzi isso para recuperar o nome do arquivo para qualquer livro dado na idee. Certo? E eu coloquei isso no repositório de livros no DSO na classe Concrete repositório de livros. Claro, depois de implementar interface, que então me daria esta nova função. Então eu fiz isso um síncrono em. O que ele vai fazer é pegar os livros. Não. Quando escrevi este tribunal, deparei-me com barcos da época, várias ideias a serem presas. Isso é provavelmente porque quando você executá-lo Ah, Basil usá-lo no controlador, ele tenta encontrar o mar e reservar duas vezes e transitar operação Carrollton em uma instância dele enquanto o outro está ativo. Então, quando você diz como não rastrear sua venda em palavra diferente que sim, eu olhei para cima, os livros são procurados para cima um livro, mas eu não estou rastreando sua própria trilha ele não usá-lo como qualquer ponto fora de referência para qualquer operação. Tudo bem, então você pode tentar com e sem essa função e você vê a exceção aparecer, você pode apenas colocar no ponto de ruptura na linha de captura na ação para atualização sobre. Então eu tenho certeza que ele vai acertar aquele problema com esse erro. Se não acontecer, então agrada a eles. Você sabe, entanto, isso sempre em mente Então tudo que eu estou fazendo é obter o livro como nenhum rastreamento onde o primeiro ou padrão tem que eu d número em. Então eu vou conseguir a imagem então tudo o que eu quero é a corda finalmente Tudo bem? Não, no controlador, o que eu fiz e você pode ver que eu estava aqui d brilhantismo. E nós apenas removemos isso. O que eu fiz foi depois de termos feito todas as quatro garotas, eu coloquei a chamada para o nome do arquivo get get image finalmente em função bem aqui, logo antes de realmente fazer a limpeza e a órbita. Então, estou recuperando o nome do arquivo. A razão para recuperar a família antes da atualização é que bem nomeado neste ponto, o velho encontrá-lo está lá. Então a família e mudou, então nós não sabemos mais o que todo o nome bom era Andre. Então, não sabemos o que remover ou enviar a pasta. Tudo bem, então eu estou dizendo que todo o nome do arquivo está atualmente na imagem antiga. Depois fazemos o opiáceo, depois fomos fazer uma verificação. Eu vou dizer se o valor da imagem que vem através do objeto de transferência de dados é igual à imagem
antiga. Então, é claro que ele pode apenas pausar e então, você sabe, replicar o cordão. Mas eu só queria explicar é que o nome da imagem vindo através do “A”. Eu chamo o mesmo que a imagem antiga se eles não são iguais do que eu quero encontrar as antigas emissões. Estou recebendo o caminho para a imagem antiga, e eu quero excluir a imagem antiga para que seja semelhante ao que fizemos em nosso
serviço de upload de arquivos I A, certo? Aceito provavelmente mais curto porque não tinha o sistema que eu teria. Mas isso é bom. Então, a mesma coisa. Então, estamos apenas verificando se ele existe e excluindo-o. Se acontecer, é se não forem iguais. Então, mesmo no caso em que talvez não removeu o arquivo completamente do que isso significa que isso seria não ou apenas seria uma string vazia. Então, se é uma string vazia, o que
significa que a pessoa não quer mais a capa do livro nesse livro, mas eles preferem saber a imagem, então nós temos que remover a imagem existente em uma semana. Tudo bem, então seguimos em frente para verificar se a propriedade do arquivo não era grande vazio não são assim. Você logo vê onde eu disse a propriedade do fogo, mas basicamente vai ser colocado no mesmo lugar que era para as criações certo? Lembre-se de criá-lo parece muito semelhante, mas veremos isso em um momento. Então, se eles se o arquivo desculpe se a propriedade arquivo no objeto de transferência de dados do livro
não é nulo estão vazios, então eu vou querer convertê-lo em uma mordida. Ari faz da mesma maneira que fizemos na criação criada para o convertido em uma bateria. Desculpe, então, certo. Todas as mordidas dedo do pé ou novo caminho com a nossa nova imagem Nome boot GTO dot Imagem on. Então temos uma nova imagem no nosso servidor. Não. Mais uma vez, se uma edição é realizada em vínculo, nada mudou com a imagem. Então isso não vai acontecer no caminho que definimos o componente. A única maneira de arquivo será definido com um valor é se o nome da imagem mudou de qualquer maneira. Então será assim que realizaremos isso. Não. No componente de edição, comecei tomando notas. As referências ao serviço de upload de arquivos i. Eu removi esses. Eu modifiquei a pré-visualização para olhar, você sabe, ter o SRC exatamente como oh, nós tivemos na criação. Eles podem apenas ir para cima para criar e copiar aquele pedaço fora do tribunal e colá-lo lá em, em seguida, dentro fora do nosso identificador até que tudo o que eu fiz foi removido as referências, o custo da função do upload de arquivo mais uma vez. Mas adicione o fato de que eu estou colocando em um arquivo tão certo. Não, eu só chequei de volta. Parece que colocar os fatores errados estão parando e andando algum espaço de mídia. O carrinho onde estou convertendo o dedo do pé obedeça 64 cordas do fluxo de memória, Ari. Certo, então é a mesma coisa. Então tudo isso parece da mesma maneira que parecia nas criações. Tudo bem, vamos, então. Não se ouve se alguma coisa mudou, nós apenas esvaziamos a imagem. Nesse ponto, mais
uma vez, se a propriedade image muda onde obtém um novo valor ou é um valor vazio, uma vez que ele vem aqui, vai fazer a comparação entre o que existia no que é. Não,
então, então, exclua. Tudo bem, apague o antigo, então. Se houver conteúdo no arquivo e ele irá recriar o novo no momento em que ele chegar aqui, a referência ao novo arquivo, se houver um já teria sido definida na atualização. Tudo bem, então tudo iria sair desse padrão lógico. Não, eu vou dar uma volta,
tudo bem, tudo bem, então vamos em frente e tentar editar o registro que criamos. Desde que modificamos essas coisas, estou recebendo esse erro de novo, e acho que está relacionado com os valentões. São entradas. Tudo bem, por favor insira o arquivo. Então eu entendo essa era. Mas geralmente, quando eu atualizo, ele desaparece um falecido no momento da gravação, eu acho que é uma flecha com aquela biblioteca e montagem da Web, então eu tenho certeza que nós vamos resolver em breve. Mas vamos avançar. Então eu vou mudar essa imagem. Estou sorrindo. Não gosto do facto de estar a sorrir, alguns a pôr o meu artigo mais sério. Vou dizer o meu livro para as eras, certo? Só às mudanças. Submeter alterações em então o quê? Eu tinha um ponto de pausa lá. Deixe-me colocar um ponto de ruptura que eles pegam para ver se ele vai pegar alguma exceção. Vamos anotar o nome do arquivo que está lá. É um D qualquer coisa, e esse é o arquivo. Em algum lugar para ir em frente e pressione F cinco ele não acerta a exceção em então. Se eu ver, vejo minha nova imagem. Se eu voltar para a solução Explorer, Eu vou ver que é onde seus aplaudos Há um novo arquivo. Há. Então lá vamos nós. Podemos substituir os arquivos. Então eu vou tentar editar este livro novamente. Mas não vou mudar a imagem. Eu só vou dar o dedo do pé. Aqui está o resumo escrito por mim. Então fazer alterações nas alterações foram enviadas. Se eu olhar de novo, a imagem ainda está lá. Onda. Temos a mudança que foi submetida sendo representada. Certo, isso é bom para a edição, a última coisa e provavelmente a mais importante. E você está se perguntando, OK, quando nós vamos levá-la para isso é para consertar as imagens aqui na lista. Tudo bem, então vamos começar a esse agora para modificar os dados que estão sendo enviados na
lista de índice , vamos ter que mudar o que acontece quando estamos recebendo os livros. Então o simples fato de que temos que saber o concerto que esta base 64 cordas vai marchar
vai mudar como fomos para um barco construindo o nosso objeto de resposta. Nosso objeto de resposta está no tipo de objeto ou uma lista fora do tipo este livro objetos de transferência de dados. O que eu vou ter que fazer é Luke através de cada um. Então, para cada um com um nome de arquivo no arquivo existe, então eu enviarei a string Bay 64 correspondente com ele. Tudo bem, então vamos fazer isso juntos. Então, para cada um em tempo duplo, apenas geralmente fonte dele, e eu deixá-lo em item em resposta. Apresentador. Direto para cada item. Em resposta, o que eu vou fazer é ver se a string que contém o nome da imagem não é nula estão vazias, certo? Então eu só vou fazer isso com aqueles que têm valores. Se não
apareceres, não falas de ti. Diga que você não tem um livro sobre. Você não recebe esse tratamento especial, certo? Então, se o campo de imagem não está vazio, não significa que algo está lá, então eu vou dizer se o sistema escurece arquivo ioo dot não existe. Andi, verifique o caminho para que eles tenham o caminho da imagem passando. Item essa imagem. Tudo bem, então isso é apenas o dobro de outro cheque só para ter certeza que você sabe que o arquivo existe. Porque mais uma vez, vamos abrir uma exceção. Se tentarmos converter nada no reboque, Obedeça a Rua 64 imediatamente. Então essa conversão seria exatamente como com o livro de obter onde nós só precisamos de nossa mordida. Apresse-se. E eles estavam indo para converter sua única apenas fazer isso rapidamente para que isso não seria resposta que longe Respostas O partido lista seria itim dot arquivo certo. Então, mais uma vez para cada item dentro da resposta, vamos verificar se há um Imagine se há uma imagem, um arquivo realmente existe, certo? Porque lembre-se que se eu estiver usando o mesmo banco de dados, um, ou o mesmo p I que usamos para o servidor Web. Esses registros vão ter imagens, mas com base no novo caminho, eles não querem existir. Então temos que verificar se eles existem, e então se eles existem, então nós vamos ler os dedos. Ok, então deixe-me fazer algo aqui em vez de chamar disfunção duas vezes porque eu preciso disso. Não Aqui também, eu vou apenas salvar o nosso caminho I am G é igual à chamada de função. Tudo bem, em
seguida, eu fui verificar. Se ele existe em se ele existe, então ele será usado lá. Tudo bem, então vamos modificar a listagem. Tudo bem, então as partes onde nós mostramos a imagem, que é apareceu imagem SRC mais uma vez, eu só vou mudar esse dedo do pé. O tipo de curso que tínhamos para a vista, entendeu? Copie isso. Índice avançado baseado na seção SRC sobre isso não seria modelo uma bola de fogo. Agora é um livro sobre arquivo. Tudo bem, no DSO para cada registro que tem na imagem, deve mostrar que não haverá terra. Vamos ver as mesmas imagens quebradas que estamos vendo. Não. De qualquer forma fora do curso, você provavelmente iria querer colocar como, uma imagem padrão. Ou você pode, você sabe, verificar se é não e colocar nenhuma exibição de texto são nenhuma exibição de imagem ou algo assim, mas vamos apenas testá-lo como ele é. Tudo bem? Então, quando a página carrega vai ver que temos nossa imagem sendo exibida com sucesso, tudo bem, eles provavelmente podem passar por qualquer um dos outros. E mais uma vez, estou tendo essa era. Estarei fresco e depois prosseguirei. Escolha fora do arquivo. Deixe-me escolher outro. Aan den, Enviar alterações. Tudo bem em. Vemos que agora ele está sendo exibido corretamente? Tudo bem, então é basicamente isso para lidar com o upload de arquivos. Mais uma vez, tivemos que fazer tudo isso porque o assembly da Web não necessariamente suporta a hospedagem fora arquivos em uma máquina cliente. Tudo bem, então tivemos que confiar no servidor para isso. Então, se nós temos ido com o modelo sp dot net core hospedado,
em seguida, o servidor acima como nós temos o servidor aqui em cima que nós teríamos criado já. Então o servidor para cima teria agido como a besta na loja do servidor, os carregamentos. Certo? Então, se nós estamos indo com o host e waddle, ele teria nos dado o assembly web up, bem como o servidor já conectado em. Nós poderíamos ter facilmente aproveitado a estrutura de upload sobre os benefícios de upload de ter os arquivos
estáticos aqui. Tudo bem. Mas depois fomos com o cliente autônomo no DSO. Estamos apenas explorando todas as opções como realmente, é servidor contra tipo. Em seguida, vamos olhar para aplicações Web progressivas que eu acho que temos sido um bom trabalho até agora. Off portar ou blazer servidor até um blazer que têm montagem em nenhum lugar quer olhar para os benefícios fora do assembly Web, seja, o fato de que ele pode ser instalado nativamente ou quase nativamente em quase qualquer dispositivo.
64. Aplicativo de web progressivo: Pessoal, bem-vindos de volta. Então, nesta lição, vamos estar olhando para todo o trabalho progressivo de aplicações Web agora. Um aplicativo Web progressivo em geral é geralmente um único aplicativo de praia que usa MPs
Broza, e isso geralmente é um navegador moderno. A Andi. Eu costumo ver Google Cruel é meio fora no topo fora do escopo Andi. A maioria dos outros navegadores são baseados no motor cromado, mas ainda assim, Crume tem certas coisas que outros irmãos não podem fazer. De qualquer forma, ele usa esses olhos AP modernos. Isso é essas rosas não têm dedo do pé tem recursos como um aplicativo de desktop. Então, em outras palavras, você pode construir-nos para fora aplicação Web de página única que pode, em seguida, agir como um lado do cliente. Eles param ou aplicação nativa dedo do pé qualquer sistema. Então, se você está no seu telefone, você pode ser capaz de baixá-lo como se estivesse em cima. Ele pode enviar notificações para ele. Tem humor off-line, modo que, você sabe, sempre que tem conexão, ele se afasta. Todas essas maravilhosas possibilidades existem com aplicações Web progressivas. Agora a primeira coisa que vou fazer é mudar minha depuração Roeser. Então eu não vou usar o baile quando mudá-lo para Cume. Então, se você não tem borda cromática também é capaz. Mas certifique-se de que você está usando um fora daqueles ligados. Depois fui lançar a nossa aplicação. Tudo bem,
Então, tendo lançado em cromo, você pode ver um sinal de mais dedo neste canto direito parada aqui, e se você clicar nele, em
seguida, ele irá pedir-lhe para instalar. Então a coisa é que quando estávamos criando sobre quem enviou o projeto, nós nos certificamos de colocar a web progressiva em cima porque nós fizemos isso. Temos alguns arquivos. Esse tipo de apenas deixá-lo saber que é suposto ser teia progressiva. O navegador está detectando aqueles rápido e assim ele diz,
Oh, Oh, eu estou lidando com uma teia progressiva para cima. Bem, então você tem a opção de me instalar. Então eu vou clicar em instalar, e então o que aconteceu é que ele realmente instalou este aplicativo bem aqui no meu
cofre desktop . - Você o quê? Você não pode ver minha barra de status. Mas se você olhar para o meu menu inicial, ver que o up está bem ali se eu fechar tudo bem, isso vai me fazer sair d barco ancorado. Mas então se eu voltar para as pessoas mais, com apenas a forma como aparecemos, algo para mudar para apenas a forma como um p i me disse isso. Um começo de projetos. Tudo bem em. Não. Com apenas o Web AP eu rodando no meu desktop, eu posso ir em frente ou no Deeble More em vez disso, eu posso ir em frente e executar este aplicativo diretamente do meu desktop. Então ele está sendo executado nativamente na minha área de trabalho. Não, não
é mais um “mano” em cima. O que tínhamos em nosso projeto era o arquivo do manifesto. Então eu acho que eu dar uma escola de imagens de orientação curta e encontrá-lo Manifesto que Jason. Então, com isso, nós podemos realmente modificar a aparência e sensação fora da janela quando temos o up instalado. Tudo bem, então usando o manifesto, não Jason finalmente pode descrever, como a cor mas crescida, a cor da janela, esses tipos de coisas, tudo isso. É possível a partir deste arquivo, tudo bem, então eu posso ir em frente e entrar. Então isso significaria em livrarias. Vamos lá, minha senha padrão, e então será novamente. E então você vê o registro de presunto sendo tão Na verdade, isso é quase como uma pequena caixa de areia do navegador porque, você vê, ele ainda está se comportando como Oak Room se comportaria, perguntando se eu quero ver a senha. Sim, eu posso clicar. Salvar Sim, eu quero ativar a sincronização e qualquer coisa, então é como uma caixa de areia Broza. Mas a realidade é que ele não está quase funcionando como um aplicativo de desktop. Então blazer é como um jeito legal. Não para reconstruir. Mesmo seus formulários do Windows não são essas coisas. Aplicativos são os aplicativos que têm que ser executados quase nativamente em um dispositivo, Mas você realmente não quer ir e construir um nativo para cima. Você pode apenas usar blazer toe construir uma aplicação Web progressiva que pode instalar quase em
qualquer lugar em fazer as coisas regulares em. Lembre-se que isso não é falar diretamente com o A P I. Não está confiando em nenhum servidor no meio. Não é depender da minha máquina realmente em que eu posso. É literalmente apenas ir através da Internet para o FBI, sabe, teoricamente falando, cruzando a rede para o FBI fazendo tudo em tempo real. Mas é um aplicativo de desktop. Se olharmos para inspecionar elementos, ele diretamente pode ir para inspecionar. Eu obtenho o elemento inspetor da mesma forma que vejo todos os registros acontecendo. Posso ver toda a fonte em que posso ver a rede. Então eu fiz a rede e eu só me referi à página só para ver todo o recurso está
voltando para o papai. Em um ponto eu estava tentando aludir aos alelos D sendo carregados. Enquanto está mais,
claro, claro, não está
emprestando os traficantes. Ele os carrega na máquina. Todo o tempo de execução do documento e tudo fora, a independência da biblioteca está lá. Há o acordo são os pacotes. Há blazer, ferramentas, arquivo
de entrada, tipo
local. Todos eles que teríamos incluído em usar em nosso projeto. Há Get load on instalado com o pacote real que é este aplicativo. , Dito
isto, você quer ser muito cuidadoso e particular sobre seus modelos de hospedagem. Eu aludi o dedo do pé, você sabe, cada um tendo seu propósito em situações específicas. Em uma situação como esta, você provavelmente não quer ir a muitas coisas. Então, ao fazer o aplicativo hospedado do servidor, você tem a opção de tipo de abstrair. Muitas dessas dependências ou outra dependência mais séria está em. Tenha-os no servidor em vez de carregar na máquina cliente onde você está fazendo uma montagem
direta. Então você não tem escolha a não ser carregar tudo na máquina cliente como você vê aqui, para que você saiba que ele pode escolher e recusar. Mas neste momento, você criou seus primeiros. Acho que é sua primeira, mas sua primeira aplicação progressiva Blazer.
65. Analisar e adicionar mudanças no GitHub: Bem-vindos de volta, pessoal. Onde estão os pontos em que nós vamos apenas fazer uma revisão rápida de todas as coisas recuperadas neste modelo em, em
seguida, verificar em nosso tribunal para levantar-se. Agora, a primeira coisa que fizemos foi explorar as opções fora da montagem Blazer Web. Fomos com o assembly da Web, não o núcleo hospedado em opções progressivas de aplicativos Web. Também não escolhemos autenticação. Não, uma vez que fizemos isso, temos um projeto que era muito parecido com nossas crenças. Um projeto de servidor ligado. Eu só estou desmoronando tudo para que você possa ver a estrutura como ela waas. Então temos páginas. Temos um programa, não vemos um começo de neve sobre CS e simplesmente derrubar tudo em expandir-nos. Estes dois, que
possamos comparar enquanto tivemos que fazer realmente foi trazer a maioria dos nossos cored chamado os contratos, os modelos, as páginas e iria continuar. Os componentes já estão construídos. O status do FBI fora das coisas do provedor do estado, nossos serviços, os arquivos compartilhados, a estática tão literalmente. Tudo o que estou tentando dizer é que a maioria fora do nosso tribunal do aplicativo de servidor era reutilizável nos clientes ou versões de montagem da Web então no núcleo, o corpo gemeu. O servidor e os modelos de montagem da Web são
muito, muito semelhantes em termos fora do tribunal necessário para obter aberto executando certas diferenças. Embora o assembly Web usa um problema tp cliente, que para mim é muito mais fácil na minha necessidade de verificar se ele está realmente disponível no na versão do servidor. Mas os clientes CTP aqui a maioria dos exemplos eu acho que um apontado mostraria usando os
clientes do PIB diretamente do ponto de vista. Só estou fazendo suas ligações. Mas construímos nossos repositórios para mais chamadas para não precisarmos, você sabe, criar um cliente todas as vezes. Só fizemos isso uma vez. Colocamos isso dentro de quatro repositório Biest no que fizemos foi fator re ou ser
suposto ela usar os clientes http em vez da fábrica cliente http que tínhamos na
pessoa servidor no que fizemos foi apenas colocar em nosso token de cerveja em seguida fazer ou chamadas. Então esta biblioteca posou como Jason lidera um canto obter de Jason no DSO à direita, então isso lida com a serialização e serialização fora da caixa. Nós não tínhamos que fazer muito mais do que apenas chamar essa função em Obter a resposta. Tudo bem. Outro factoring incluído sobre re transporte fora do procedimento de upload Então nós realmente temos que
modificar mais 80 projeto I onde incluímos a capacidade de uploads no lado A P I para que
pudéssemos facilitar o fato de que esta versão de montagem web fora do nosso projeto não tem um servidor para armazenar gorduras. Então nós transformamos isso em uma p a. Toda a cidade apareceu naquele servidor para armazenar arquivos. Tudo bem, então agora vamos em frente e clique direito e frango. Então você vai ter experiência no FBI, experiência blazer de
servidor, bem como montagem na Web, um blazer com simplesmente experiência, certo? E vamos em frente nos commits, certo? E eu coloquei na minha mensagem que eu adicionei Blazer, montagem
da Web no arquivo upload toe 80 ibooks controlador. E então eu vou apenas cometer tudo e afundar quando isso for bem sucedido. Bem, você sempre pode vir ao meu repositório e fazer referência. Então tudo o que foi feito
66. Migre projeto para o projeto para . NET 5: Ei pessoal, neste vídeo vamos discutir como atualizar e obtê-lo cinco ou até mesmo instalá-lo se você nunca instalou qualquer framework dominante em tudo. So.net cinco é tudo abrangente e é realmente compatível com muitas coisas que você teria em seu ASP.net ou seu detonar core 3.1 aplicação. No entanto, se você deseja o meu concordou com o.net cinco, então este vídeo é para você. Então nossa jornada começa com uma simples pesquisa do Google para.net cinco, podemos seguir o primeiro link e então isso nos levará a uma era em que poderíamos baixar o SDK ou o tempo de execução ou bullet. Não há nenhuma limitação em qual você deve. Então você instalaria o SDK para que o Visual Studio forneça todas as ferramentas necessárias para criar um aplicativo dominante de cinco, enquanto o tempo de execução é mais define bibliotecas para que você possa hospedar o aplicativo como no iOS. Então você pode verificar o meu outro vídeo sobre hospedagem dominar aplicativos principais. E as etapas que você precisa seguir para instalar o tempo de execução, preparar os olhos e publicar seu aplicativo. Então, para o SDK, queremos baixar a versão apropriada e dizer que se você está no Mac, Linux, Windows, eles têm um pacote de instalação para você. Então você pode ir em frente e clicar no apropriado. Eu vou com o x 64. E uma vez que este download esteja concluído, você receberá este instalador, que permite que você simplesmente vá em frente e clique em Instalar. Você passa por qualquer verificação de segurança F2. E é um processo bastante rápido e
direto, então ele vai deixar você saber e foi bem sucedido. Se não foi bem sucedido, você provavelmente vai querer verificar novamente morrer. Você tem a versão McArg e estão acessíveis ao suporte da Microsoft. De qualquer forma, se você tem a tela de seda, então você está um passo mais perto. Novamente, vá em frente e clique em Fechar. E então, se você vai criar nosso novo projeto, então você pode ir em frente e iniciar o Visual Studio. Clique em Create Project 2-0 templates e vamos com um aplicativo web principal. Clique em Avançar, dê um nome a ele. Então esta é apenas uma amostra, então eu não vou ser muito formal com nada molhado e clique em Criar. E, em seguida, nesta tela você seria capaz de selecionar dot nec core 5 da lista. Se você, no entanto, pretende migrar o projeto principal API ou blazer dominante para.net cinco, então vamos fazer isso com este projeto. Então eu tenho aqui um projeto existente. Ele tem a livraria quando é chamado API livraria completamente, o que é que tem uma livraria API, TAS, livraria wi, que é o servidor blazer. E também temos um projeto blazer Web Assembly aqui. Então, na verdade, fiz muito do trabalho. O que eu vou fazer é trazer a versão existente do núcleo dominate 3.1 do código. E o código relevante muda para que você possa ver exatamente onde suas alterações precisam ser feitas. Então vamos começar com a nossa API. Então eu vou apenas escrever tickets,
ir para a minha guia de controle de fonte e comparar com a versão anterior antes de eu fazer todas as modificações. E eu vou te guiar por todas as partes mais importantes. Na verdade, há apenas uma parte
muito, muito importante neste arquivo, que é o quadro alvo. Então, se você estiver usando dominate core 3.1, isso é o que você estaria vendo, o que isso é, o que você precisa ver. Então, para a esquerda é o existente e para a direita é o novo. Certo, então precisamos mudar isso para a rede 5. Então você pode apenas dizer que não basta ir em frente e salvar. E depois de fazer esse ajuste, você precisa atualizar tudo fora do seu projeto ou Aldi da França ou biblioteca, por exemplo. Então é por isso que você vê alguns deles em vermelho porque eu já teria feito essa atualização. Alguns deles eu não fiz a atualização, então eu vou te explicar um por um. Então você Candace, clique com o botão direito, vá para o novo gerenciador de pacotes get. E o que aconteceu comigo foi que quando eu selecionei todos os pacotes e, em seguida, enviar atualizações, eu tenho alguma forma de arável e não o objeto de exceção, referência
central não são inteiramente certo por que eu estou recebendo esse livro. O consenso parece ser que, quando às vezes, quando você tentou fazê-lo em massa, você pode receber o erro. Essa foi a minha experiência que estou compartilhando com você no caso de você ter essa luta. Mas o que funcionou para mim é se eu apenas selecionar como três de cada vez e, em
seguida, clique em atualizar, então o Gerenciador de Pacotes vai apenas assumir e fazê-lo para aqueles quaisquer erros, é
claro que eu tenho que aceitar uma ou duas vezes esses erros que você pode Ignore esses. Esses são apenas erros de construção associados a todo o exercício. Mas o meu ponto é que você só queria ter certeza de que todos os seus pacotes não são atualizados para 5. Então você pode simplesmente ir em frente e fazê-los individualmente se você precisar, se o se toda a atualização em massa funcionar, então você então isso é perfeito. Então não, eu completei todos eles. Se eu voltar e olhar para as atualizações difusamente ainda mais, certo? Então qualquer coisa que foi um vendo 3.1 é não ver cinco qualquer versão anterior não é C na versão mais recente. Então é isso que você deseja fazer para atualizar seu projeto de API. Não há nada mais do que isso. Então saiba que acabamos com isso. Vamos passar para nossos atrasos,
nossos projetos, não, projetos blazer têm muito em comum. Mais uma vez, este é um servidor, este é um Assembly Web. Eles têm muito em comum em termos do que as mudanças são tão estranhas, há semelhanças. Vou mostrar-lhes lado a lado. Então você pode ver que você faz isso em ambos são o correspondente fuzzy e ambos. E há certas coisas que só faremos isso para a montagem da web. Portanto, nossa primeira alteração tem a ver com o arquivo host no servidor versus o arquivo de índice no Assembly da Web. E eu vou apenas, apenas para nossos amigos, no projeto do servidor você vai duas páginas e, em seguida, você vai ver o
arquivo CSS ponto host no projeto Web Assembly para ir para www root e você vê seu arquivo index.html. Então, no arquivo host, as principais mudanças que você vai adicionar, este pedaço de código, esta linha de aspas aqui, adicionando uma nova folha de estilo. Tudo bem, e o que você está vendo é o meme da assembléia. Então isso deve realmente ser um sublinhado porque esse é o meu nome de assemblagem. Então ele começa traço, que sublinhado. Então deixa-me só eu fazer isso. E então você vê que é uma coisa boa passar por isso juntos. Então este sublinhar e salvar. Tudo bem, então é assim que essa linha se parece com isso e torná-la um pouco maior. Então, estamos adicionando link, HRF, livraria UI, livraria sublinhado UI ou o que quer que seus assemblies nim é alguns líquidos agradáveis irritado Assembly Name é apenas para olhar para a bandeira namespace aqui em cima. E então você verá qual é o nome apropriado da solução aceita. E então dizemos um ponto styles.css, e então adicionamos a linha é igual a folha de estilo. Então nós vamos adicionar isso dentro de nossa seção de cabeça para nossos anfitriões. Tudo bem? E então nós vamos estar fazendo algo semelhante para o nosso índice. Então deixe-me apenas trazer o índice individualmente. Então vamos adicionar esta linha de código aqui. E é o mesmo princípio. Vou mudar isso para sublinhar. Então é livraria em um ponto de pontuação Watson ou qualquer que seja o nome do seu projeto, não styles.css. Enquanto eles estão aqui, você pode este eu, esta mudança também. Então deixe-me apenas ir caixas ele exatamente o que estamos mudando, onde ele mudar isso de até o div com ID up. Tudo bem, então em vez de ver uma tag nomeada, dizemos div com uma ID acima, e então o conteúdo permanece o mesmo. Então você pode ir em frente e atender a essa mudança no seu arquivo de índice. A próxima grande mudança vem em nossas importações fósseis nosso, servidor
espectivo e projetos de montagem web ambos têm importações de pontos áreas ou arquivo, ea inclusão é a mesma. Então você pode ter um erro no sangue do servidor, então você tem que ser um componente lacrimal, a fim de se livrar dele. Mas queremos ter o uso do Microsoft dot ASP.NET Core.com dot web dot virtualização e tentou colocá-lo em uma posição semelhante a onde eu tenho, que é abaixo onde, mas antes do HTTP, em que alguém ponto HTTP, tudo bem, e que seria para o nosso Web Assembly, para o servidor, ele vai no mesmo lugar. Ou, pelo menos, em Web, porque você provavelmente não teria a biblioteca HTTP Assembly da Web. Então você só tem isso embaixo do dia escuro da Web e basta adicionar virtualização de pontos. O próximo é o nosso principal Leodes, o componente da Reserva. Então essa mudança se aplica a ambos. Então eu não vou mostrar a vocês dois. É uma mudança CMNH na montagem de servidor e web onde só queremos incluir uma nova div. E nós vamos dar a ele que classe é igual a velocidades. E então todo o conteúdo que estava lá antes. Então esta é a origem aqui fora. Nós só vamos pegar tudo isso e colocá-lo dentro de um estrangeiro você div. Então vai parecer algo mais parecido com isso para a direita. E deixe-me ver se consigo reduzir a esquerda. Lá vai ele. Então é isso que o seu novo significa, LEO, que vai parecer se é Web Assembly ou servidor. Agora outra tarefa importante é que vamos adicionar um arquivo CSS a esse componente que acabamos de modificar, certo? E há uma página de classe que acabamos de introduzir, o conteúdo deste arquivo CSS. Você vai encontrá-lo nos recursos. Ou você pode simplesmente ir para o repositório e olhar para o conteúdo do arquivo que podemos copiar e colar. Não fiz nenhuma modificação fora do padrão que teria vindo com.net 5B é um projeto, mas é assim que o arquivo se parece. Então, em vez de eu tentar mostrar saquê e
datilografar, você pode ir até o recurso e entrar em si mesmo. As partes principais disso, porém, é que vamos adicioná-lo à camisa. Então você vai para compartilhado, botão
direito, clique em adicionar. E isso vale tanto para o servidor quanto para um assembly da web. Estamos adicionando um novo item. E então o nome que você está dando a este novo item é o mesmo nome que um componente significa Leodes, Dr. Razor. Então isso é principalmente velho dot navalha dot css. E então, se você notar no meu explorador de soluções, você realmente vê que ele é listado no Leodes médio. Tudo bem, então você se senta de perto e eu adicionei. Uma vez que fizermos isso, em seguida, vai realmente vir como um subarquivo fora do Leodes principal. E então nós podemos apenas colocar no conteúdo mais uma vez, que se aplica tanto para servidor e web incrível. Sem janelas CMV, e nós vamos estar fazendo algo semelhante para o menu de navegação. Então temos nav menu dot navalha, e mais uma vez para ambos servidor e montagem web, temos nav menu.html, ou vamos ser adicionando ponto menu suficiente, ponto CSS. Mais uma vez, você pode ir em frente e copiar o CSS resultante ou o CSS religioso em vez disso. E PhD em. Você não precisa entrar e tentar digitar isso, basta pegar o conteúdo e conectá-lo. Não, bem mais uma atividade CSS para concluir, e isso será para o arquivo CSS app.js no assembly da web. Então, no projeto de montagem da Web, você vai para www raiz CSS e, em seguida, uci dot CSS. Em seus projetos de servidor, você iria para www root CSS e site dot CSS. No entanto, o conteúdo para ambos os modismos continua a ser a costura. Tudo bem, então isso é mais uma vez faz o padrão que viria com.net cinco projeto blazer. Mas como estamos atualizando, estamos apenas tentando mover todos os recursos que seriam necessários por padrão. Então isso é realmente para as atividades lado a lado para o servidor e o assembly web. Apenas para retroceder um pouco para o servidor, você quer ter certeza de que seu quadro de destino funciona. Então isso é para o servidor blazers, apenas para ser claro, seu quadro alvo onde ele precisa ser como Kelly diz, a mesma coisa que as estruturas de destino API Web. E assim você pode realmente apenas copiar isso a partir da API web, um projeto, e certifique-se de que seu blazer, você desculpe, ou blazer server UI Project também diz target framework net 5. Então eu vou até focar um pouco nos projetos de servidor. Então o que eu vou fazer é descarregar isso para que eu veja menos flechas. E só queria ter certeza que estou lidando com o projeto do servidor. Você provavelmente não tem que fazer esta parte, mas o próprio vendo os erros. E você quer se certificar de que está isolando suas atividades de projeto de servidor, então você pode fazer isso. Então eu vou fazer uma construção só para ver o que está errado. Tudo bem, então você vê aqui eu estou recebendo alguns erros de barcos, meus projetos para que eu possa ir para o novo get. E então vejo que tenho algumas atualizações que recebem. O recurso de atualização em massa funcionará para mim. E ele fez. Então deixe-me tentar construir de novo. Não, ainda estou recebendo alguns erros aqui. E isso é, na verdade, devido a um problema de ambiguidade. Portanto, este erro está dizendo que o arquivo de entrada da função é o alternar ou componente. Em vez disso, o arquivo de entrada é ambíguo porque eu tenho uma biblioteca chamada arquivo de entrada blazer. E há um que vem embutido com blazer, pelo menos, certo. Sei que há. Então esse é o problema de ambiguidade dele. Eu só vou comentar este velho porque se você não estiver usando o arquivo de entrada, então você não tem esse problema. No entanto, eu vou fazer outro vídeo onde eu refatorar o código em torno da Blizzard, ou ele é realmente apenas ir para encontrar todas as referências a esse arquivo de entrada e apenas ir em frente e comentá-los para se livrar de qualquer erros apenas para ter certeza de que não temos mais nada. Então, vemos uma compilação bem-sucedida. Então, isso é bom. Tão velha triste fora desta ambiguidade que é provavelmente única para atender. De qualquer forma. Se não for, vamos trabalhar mais tarde. Sem problema. Certo. E todos nós atualizamos nosso aplicativo de servidor blazers para.net cinco. Agora vou mudar para a montagem da web. Então eu estou indo apenas para recarregar o projeto Web Assembly. E eu fui descarregar o projeto do servidor apenas para ter certeza de que estamos olhando para apenas uma coisa. E então a primeira grande mudança, eu vou apontar tudo o que tem a ver com o arquivo do projeto. Então, se eu comparar isso com o original, eu vou mostrar a vocês as mudanças que encontramos. Então um, mudamos o projeto SDK de Microsoft.NET dot dk dot web para Microsoft.NET dot SDK ponto blazer Web Assembly. Outra coisa é que nós removemos essas duas referências Framework alvo em. Mudamos tudo para a rede 5. Tudo bem. E então vamos continuar com a atualização de referências de semáforo. Então, outra coisa é que removemos essa referência de bolso para que um balde ou amigos de componentes que foram simplesmente adotados construídos, nós apenas removemos. Então isso é nulo faltando na nova versão. Agora, neste ponto, sinta-se livre para tentar e D2 ainda não está pronto, mas você queria ir para gerenciar pacotes e ver se você pode executar uma atualização para tudo. Então vamos tentar isso. E isso está feito, bom. E então queremos ir para o nosso program.cs. Alguém comparou este para que possamos ver exatamente as linhas que precisam ser modificadas. Então a primeira linha é que nós vamos estar atualizando essa referência para hub, uma hashtag na frente dele. Veja, isso é realmente tudo o que fizemos. Ele disse construtor, componentes rudes que se somam. E então, entre aspas, estamos apenas adicionando hashtags. Tudo bem, a divisão no que é um sinal de libra ou um sinal de número ou hashtag na frente da palavra. A outra mudança é que estamos mudando. Bem, nós já tivemos, se você já teve isso como um escopo estranho, então tudo bem. Algumas pessoas usam um transitório, mas a maneira recomendada seria escopo. Tudo bem, então você deseja adicionar escopo seu cliente HTTP. E a única razão pela qual ele está mostrando toda a linha destacada, porque uma correção algum espaçamento ou grelhado vivo. Mas, essencialmente, essa é a grande mudança aqui, tendo certeza que isso diz na escola. Mas depois de fazer tudo isso, podemos fazer uma compilação e ver se temos algum erro. E o erro que estou recebendo é a mesma área que tivemos com este servidor. Então eu vou apenas comentar estes velhos para nulos apenas para ter
certeza de que podemos relatar uma migração limpa. Embora os olhos, por isso, se eu fizer uma compilação e, em seguida, eu vejo um projeto bem-sucedido, então quase fazendo para recarregar os outros projetos. Assim, clique com o botão direito recarregar, clique com o botão direito recarregar
e, em seguida, fazer outra compilação e não tem erros para relatar. Então deixe-me fazer uma corrida rápida só para ter certeza de que tudo funciona. Então o que acontece é que você tem que se certificar de que eles são APIs em execução e seus e seus clientes. Então, quero dizer, todos eles começam em um “se “no caso de você não saber como fazer isso, você apenas clicar com o botão direito. Vamos fazer propriedades e certificar-nos de que todas elas estão em início. Pelo menos se você é um projeto loops que em mente. Se você tivesse, se você Sardinia Server hospedado blazer e provavelmente não tem esse problema. Então eu não estou vendo meu lado e deixe-me apenas ir em frente e inspecionar e ver qual pode ser o problema. E aqui estou vendo que eu sou um erro 404, então ele está falhando ao carregar o recurso ou o arquivo CSS que eu adicionei. Certo, então eu só suspeito que talvez eu devesse ter usado um traço, deveria enviar uma pontuação do Fonda. Então deixe-me voltar e verificar. Então aqui eu estou indo para mim, isso são ajustes. Então eu vou tentar o traço em vez do sublinhado. E tudo o que queremos fazer é,
e esta é minha topologia masculina em nossa viril tudo para querer colocar nossa barra lateral dentro de nossos PhDs. Então pule esse passo. Escapado para ele porque de todo o fogo era de tudo. Mas nossa barra lateral também deve estar dentro desta página div. Então vamos em frente e recomeçar. E isso se parece mais com ele. Então lá vamos nós, lá temos nosso aplicativo blazer UI sendo processado. Este fato enquanto ele estava sendo processado inicialmente, mas nós fizemos algumas coisas, então sabemos pelo menos saber onde correr em.net cinco. Bem, isso é tudo para este vídeo. Tenha uma boa.
67. Fix de arquivos - Remover o BlazoredInputFile: Ei pessoal, bem-vindos de volta. Agora, saindo dos calcanhares de nós atualizar nosso blase ou aplicações que.net cinco, tivemos alguns problemas com nossos campos de entrada, então vamos apenas colocar isso na cama. Então, o que acontece é que inicialmente nós tivemos que confiar em uma solução de terceiros para facilitar o upload de arquivos. Mas Glaser desde então implementou um controle de entrada mais nativo, e então vamos começar a usar isso. Então, a primeira ordem do dia, e eu vou mostrar a vocês as mudanças lado a lado com o servidor blazer up, bem como o assembly web porque o código será praticamente o mesmo entre os dois com alguns modificações aqui e ali. Então, a primeira coisa que queríamos fazer em ambos os arquivos de importação é remover a referência à entrada blazer rapidamente para que possamos simplesmente ir em frente e clicar nele e removê-lo e salvar, e então você pode ir para a sua criação. Então eu tenho um monte de aberto aqui, então eu vou tentar e reduzi-lo para aqueles que absolutamente precisamos para este exercício. Então o que queremos fazer é voltar para a nossa criação e podemos descomentar aquele leão. Então eu fiz um pouco do trabalho. Estarei nos guiando sobre o que você precisa fazer, certo? Então ele pode ir em frente e descomentar esta linha de entrada. Na verdade, me levou um pouco mais fácil. Eu só vou trazer a vista de comparação que usamos quando estamos fazendo nossa grade para que você possa ver exatamente as linhas que eu estou mudando. Então nós descomentar esta linha de controle de entrada. E então temos que ver, e alguns são para tipos de dados. Então inicialmente estávamos usando a entrada de lista de arquivos IFF. E nós chamamos esse arquivo vai manter esse nome, mas vamos chamá-lo sobrancelhas são arquivos. Então esse é um novo tipo de dados. Também não estavam usando memória stream livro apenas stream. Tudo bem, então você pode ir em frente e atender essas duas mudanças nos tipos de dados. Agora movendo-se dentro da parte em que teríamos feito todo o processamento. Então este é o identificador criar o nosso, deixe-me, deixe-me fazê-lo no fluxo exato. Então isso é centenas de seleção de arquivos, que é o evento que é chamado quando o arquivo de entrada é alterado, certo? Então lidamos com a seleção. Então, queremos alterar esse parâmetro mais uma vez de entrada de lista
IFIs IRI para arcos de evento de alteração de arquivo de entrada. E eu só estou chamando esse E. Certo, então isso parece um pouco mais como se você ganhasse formulários ou
haveria se isso é o que você meio que vê para os eventos, certo? Então E vai incorporar o arquivo ou arquivos ou o objeto com os arquivos que foram selecionados pelo nosso seletor de entrada. Apenas denotar que também poderíamos colocar em vários aqui se quiséssemos Tableau para seleção múltipla, é assim
que nós apenas anexaríamos esse atributo lá, múltiplo. Nesta situação, só queremos um. Então eu só estava fazendo esse ponto porque E, usando esse E ou usando esse objeto, nós podemos obter vários arquivos apenas para ver, você sabe, uma vez que fizemos essa mudança para, você sabe, arquivo principal B igual ao arquivo E ponto? Não, eu poderia ter dito ponto E e obter vários arquivos que me permite dizer quantos arquivos, até dez. Nosso poço, até o número que eu conseguir, certo? Então eu acho que por padrão será dez, mas eu poderia especificar dois, eu poderia especificar um. Depende de mim, o desenvolvedor, mas não consigo vários arquivos. Mas nesta situação eu só quero um arquivo, então é o arquivo E dot. E então eu introduzi esta declaração se anteriormente, então eu apenas me certifiquei de tê-lo todos os lugares onde em vez de verificar o nome inteiro para a extensão, eu estou realmente recebendo as extensões de nossa extensão é igual a caminho, mas ainda assim a extensão um nome de arquivo. E então verificamos se a extensão corresponde ao que você quer. E depois de fazermos isso, queríamos então inicializar nossos fluxos. Então, inicialmente tivemos que ser arquivo MS é igual a fluxo de memória
nu e, em seguida, copiamos para o fluxo de memória. Bem, não, podemos apenas ver o arquivo MS é igual a file.js aberto ler Street. E então nós apenas lemos o arquivo diretamente em nosso objeto de fluxo. Não. Algumas coisas adicionais e realmente achei isso bastante útil. O que podemos fazer aqui é redimensionar nossos arquivos. Então deixe-me reduzir o código antigo e mostrar o que eu introduzi aqui. Então, você sabe, estamos mostrando uma prévia do arquivo. E quanto maior for o arquivo em qualquer situação, menos eficientemente ele carrega,
é manipulado por um aplicativo. Então o que fazemos aqui é apenas redimensionar os arquivos. Então dizemos que o arquivo de imagem redimensionada é igual a e aguardamos file.js solicitar o arquivo de imagem uma sincronização. Nós especificamos o tipo de arquivo que queremos. E depois dizemos o tamanho. Então agora eu estou apenas redimensionando qualquer arquivo foi carregado para 100 por 100 pixel arquivo. E depois disso, nós o carregamos em um buffer. Então nós dizemos var buffers iguais a nova matriz de bytes com o tamanho de ponto do arquivo de imagem redimensionado. Então é uma matriz de bytes para o tamanho de nossa nova imagem redimensionada. E então aguardamos o ponto de imagem redimensionada abriu o fluxo de arquivos ou abriu o fluxo, ler e ler no buffer. Então é aqui que nós copiá-lo para a matriz de bytes e, em seguida, convertido para os dados base-64, e então nós temos a mesma URL de imagem. Tudo bem, então isso é bastante útil se você quiser redimensionar suas imagens no meio. Bastante fácil. Tudo bem, então é isso por como lidamos com o fascínio. Porque lembre-se que a seleção de arquivos mostra apenas a visualização do arquivo. Eu sei olhar para o que fazemos quando estamos lidando com a submissão do formulário real. E a mudança aqui é realmente pequena mudança cosmética. Então eu meio que refatorou nosso serviço de upload de arquivos, onde eu tenho uma função ou método, mesmo nome, mas eu removi a dependência do arquivo. Em retrospecto, não usamos o arquivo e passamos para o arquivo de upload. O que eu tenho é um objeto de fluxo e o nosso nome para a nossa imagem. Então deixe-me pular lá e mostrar as mudanças que foram feitas. Então, dentro do nosso contrato de upload de arquivos de olho. Então eu vou começar com a interface novamente como calor que é adicionado um pouco de uma limpeza porque adicionar mais de um método faz fora do refator que fizemos anteriormente. Mas é sempre bom remover código antigo, especialmente se você estiver usando o controle de código-fonte porque você tem o histórico de versões de qualquer maneira. Então eu removi o código antigo e sei como este novo método, que é arquivo de upload de tarefa pública. Ele nos leva parâmetro de fluxo e um nome de string. E então, para a implementação real disso, deixe-me apenas rever e comparar. Bem, provavelmente não faz, já que eu fui burocratas como quase um novo método. Mas vamos passar por isso de qualquer maneira. Então este é um AsyncTask tomando esta árvore e chamar arquivo MS e um nome de string, nós removemos um monte de outras coisas. Então eu provavelmente preciso colocar comprado aquele bloco try-catch. Você pode colocá-lo lá quando você está fazendo isso, mas deixe-me apenas reduzir o velho resfriado e focar no novo código. Então, o que fazemos, eu mantenho esse buffer direito por ele é vermelho até uma identificação de caixa. E inicializo meu fluxo de arquivos, certo? Então eu acho que, essa linha é quase a mesma, exceto que eu fiz uma declaração usando bem ali e então eu escrevi no fluxo de memória. Então, renunciando a toda essa palavra, apenas inicializando isso. E então eu estou vendo Wild por seu vermelho é igual a, Eu vou esperar arquivo MS, que é o meu fluxo pontos ler buffer assíncrono. Então, transmita ler o que está contido dentro do buffer. E enquanto isso não é igual a 0, mais
uma vez, deixe-me reduzir este secante, ver a imagem da flauta. Então, enquanto por fio é igual a, eu não sei onde estamos batendo? Lendo o conteúdo? Onde apenas fazendo alguma matemática aqui, total ou ele está acumulando para os bytes lidos. Só para que saibas, enquanto está a ler, está a somar. E para todo esse período é apenas escrever de forma assíncrona ou buffer ari. Tudo bem, e praticamente é isso, certo? Isso lida com nosso upload de arquivos. Então, isso é realmente o código necessário para ou criar no, Eu acredito que foi o nosso projeto de servidor. Certo? Então vamos apenas dar uma olhada rápida no que fazemos para a nossa Web Assembly. Porque você sabe o que o Assembly da Web onde realmente carregando para o servidor, o servidor de API em vez de manipulá-lo localmente como estamos fazendo com um projeto de servidor. Então é praticamente a mesma coisa, exceto OnCreate. Então desculpe, a seleção Honda é praticamente a mesma coisa onde fazer a mesma coisa aqui estamos pegando o arquivo de entrada e exibindo-o. Então você poderia literalmente simplesmente copiar e colar a seleção
do identificador do servidor para o assembly da Web. Mas então para nossas criações manipuladas, nós fazemos algo um pouco diferente aqui, onde eu inicializar o buffer para o tamanho do arquivo real. Certo, então abrimos e enviamos a barra de ferramentas como uma base de 64 cordas. Certo, então essa é a única diferença. Então apenas mais quatro contextos que podem trazer à tona as comparações. Eles podem ver exatamente o que são, pelo
menos ver o que estava lá antes. Então vamos fazer as mesmas mudanças de tipo de dados, certo? Mas não ouças que tudo o que fizemos foi converter o ficheiro MS ou a nossa rua da memória até ao IRI, foi tudo o que fizemos. Então estamos adicionando mais duas linhas ou estamos inicializando esse Bytes, desculpe, e então lendo o conteúdo dos arquivos na bateria. Então vamos convertê-lo para o básico do Drew, e é só isso. Tudo o resto, mais uma vez, é bastante semelhante ao servidor. Para a nossa edição. Não muito diferente. Mais uma vez, é praticamente a mesma coisa. Então, uma vez que você tem essas mudanças, você pode ir em frente e testá-lo por si mesmo. E você vê que nosso upload de arquivo não está funcionando.
68. Fixação de código essencial e configuração: Ei pessoal, bem-vindos de volta. Então, neste módulo, queremos realmente implantar nosso aplicativo para o Azi, sua nuvem. Então eu estou usando como lá porque são apenas feitos antinaturais. O Visual Studio já está ajustado para a implantação do Azure. E bem, tudo é Microsoft. Tudo funcionará perfeitamente. Pode haver alguns soluços ao longo do caminho, mas qualquer soluço que encontramos, Certifique-se de orientá-lo através de por que eles encontram encontrámo-los e como obtemos o nosso próprio eles. Mas antes de começar a olhar para 0, temos que olhar para o nosso código porque há algumas mudanças de configuração no arquivo essencial, mudanças que precisamos fazer para ter certeza de que temos uma transição suave. Enquanto gravamos em nossa máquina, estava
quase certo o suficiente para codificar alguns desses potes. Mas o problema é que esses bots não existem em outro servidor. Não há usuários visíveis e essa estrutura de pastas onde quer que estejamos implantando nosso aplicativo. Então eu quero fazer é torná-lo um pouco mais dinâmico. Então este arquivo em particular que eu tenho aberto é para as APIs da livraria, o arquivo de projeto real. Então você pode simplesmente clicar duas vezes no arquivo do projeto. Você conseguiria este XML. E então o que queremos fazer é colocar em um novo nó, o grupo de propriedades. Queríamos dizer gerar arquivo de documentação, verdadeiro. Tudo bem, então por diante, e então nós precisamos mudar o caminho do arquivo de documentação real. Então o que eu vou fazer é remover tudo
até que o nome real ou o lodo possa pagar um nome de arquivo. E depois fui substituí-la por lixeira. Em seguida, corte o sinal de dólar, abra a configuração de parênteses e, em seguida, feche parênteses. Então isso o tornaria mais dinâmico e ele realmente vai dizer janeiro, este arquivo na pasta bin. Então, a pasta bin é basicamente universal para qualquer estranho que a nossa aplicação. Então para mim e essa mudança para evitar qualquer conflito no servidor Azara quando ele começa a ver oh, o que é que eu não sei onde colocar o arquivo porque eles me disseram para colocar o arquivo não existe. Então isso vai ignorar tudo isso. A próxima grande mudança seria para o arquivo n log config. E é uma situação semelhante aqui onde teríamos codificado, nós queríamos que os arquivos visassem. Então, em vez disso, eu vou definir tudo isso para ser o diretório base. Então ele vai literalmente ler cifrão a.C., querida. Tudo bem, e então, bem, eu preciso ter minha pasta de logs barra logs slush. Então o que vai acontecer é que o nosso n log seria diretamente para a nossa pasta de logs que existirá em nossa solução. Queremos fazer a mesma coisa para o registro interno. Não quero que isso acabe em lado nenhum. Eu só não quero isso na unidade C. Eu queria apenas no diretório base e apenas ter uma pasta de lotes AGORA com tanto log interno e o log de atividades diárias. Então agora podemos passar para nossos arquivos blazer e todas as configurações aqui não são muito. É só que nós realmente, realmente, realmente gostaria que o arquivo de endpoints fosse um pouco mais dinâmico porque retinal e eu codificamos o BaseURL, que para fins de desenvolvimento foi perfeitamente bom. No entanto, quando realmente implantamos, nossa API ou API não estará mais localizada neste local. Esse local só existe quando nossas APIs estão sendo executadas. Quando ele está na web, precisamos do endereço para que possamos fazer o baseURL são relativos a esse endereço. Então, o que eu vou apresentar aqui é uma declaração rápida se. Então ele vai da hashtag de NYC se. E então nós estamos verificando se ele está no modo de depuração, então nós sabemos que podemos usar este URL base, certo? Se é depuração, então tudo bem. No entanto, o que significa que não está no modo de depuração e eu vou terminar aqui. Então, e se assim for, então nós podemos saber, introduzir este URLS, algo mais aqui, eu não sei o que ele vai ser porque nós ainda não implantamos ou livraria APIs ainda. Mas queremos isso aqui para que quando formos um barco para implantar nossos blazer ups, não
tenhamos muito mais a fazer a não ser preencher o espaço em branco com o endereço nulo da propriedade da API. Então eu vou fazer essa mudança para ambos os projetos de blazer. Certo? Então nós temos nosso projeto de montagem web procurando depuração versus não a lâmpada. E então temos nosso projeto de servidor fazendo o mesmo. E em nossa livraria, a EPA é agora um pouco mais dinâmica com suas configurações. Então, quando voltarmos, iniciaremos a implantação de nossa API.
69. Crie uma conta do Microsoft Azure: Ei pessoal, neste vídeo estaremos criando nossa Microsoft como 0 cones. Como eu disse antes, podemos começar de graça. Para chegar a este sites, vamos para absorver ponto Microsoft.com e, em seguida, eu acho que as estradas que você de acordo com sua região ou seu idioma. Mas isso é o que o site parece deve ser parecido. E você pode ler através dele para ver exatamente o que 0 são todos os barcos. Trata-se de ser futurista, permitir mais colaboração e operar de forma mais integrada em um espaço fechado, certo? Eles estão em todo o mundo e você geralmente escolheria a região mais próxima de você. Então eu estou na região do Caribe. Então meu Joel diz, região é leste para nós ou leste dos EUA dois. Mas não para este vídeo. Este vídeo estamos apenas criando as colunas não estavam sentando nada sobre razões ainda. E então, para começar, enfraquece-os. Bem, se você já tem uma conta real, então você pode apenas ir em frente e entrar com aquele vivo de cones. Mas você pode simplesmente clicar em Iniciar gratuitamente. E aqui eles dizem que você pode criar um livre ter ido hoje e você pode começar com 12 meses de serviços gratuitos. Então isso é um bom negócio para mim. E se você rolar para baixo, você verá 12 meses de serviços gratuitos, populares e
gratuitos mais US $200 de crédito que expirarão em 30 dias. Então eles dão a você $200 a pode criar máquinas virtuais V, novamente, criar recursos na nuvem e experimentar até que o dinheiro é o. E isso é realmente apenas por um mês. Mas, em seguida, há certos serviços que você só recebe gratuitamente pelo resto do ano, e então você terá alguns outros serviços que são sempre gratuitos. Tudo bem, então o que vamos fazer é ir em frente e clicar em Iniciar grátis. Depois vão pedir-nos para entrar com o nosso vivo de cones. Se você tem uma conta real mais uma vez, ele pode ir em frente e usar isso. Se você não tem outro cone, então você pode ir em frente e criar um. E esta é uma opção muito recente para entrar com o GitHub. Então eu tenho um cone vivo que eu uso, mas eu vou apenas orientá-lo através do criar 1 primeiro. Saiba que o ícone ao vivo não precisa necessariamente estar ao vivo ou em all.com. Não precisa ser uma conta tradicional do Hotmail, pode
ser uma conta do Gmail. Então eu posso realmente usar o mesmo endereço de e-mail que eu usei para o GitHub ou endereços de e-mail que eu uso quando estou inscrevendo para coisas que eu posso usar que seja Yahoo, Gmail, Hotmail, seja lá o que for. E basta clicar em seguir. E aqui está ele, ele está me dizendo que eu já tenho um ponto da Microsoft desaparecido. Então isso faz isso dirigindo meu ponto no entanto, que uma vez que você tem um endereço de e-mail, ele não tem que ser um Hotmail ou um tradicional barco vivo AECOM lá, criando
assim um Microsoft ou Collins para você com esse endereço de e-mail. Então você pode ir em frente e se inscrever. É um processo bastante simples. Agora eles são Conda decidiu que já existia. Essa é uma conta que eu estava usando para me inscrever nos dois pontos grátis. Então. Eu realmente só fui em frente e logado e porque eu realmente não resolver muito mais, eu acho que o seu processo de registro vai realmente parecer muito semelhante a este independentemente, assim por diante para superar o obstáculo de colocar em seu endereço de e-mail e prosseguindo, então você provavelmente vai acabar em uma tela como esta, onde você vai ser solicitado para suas informações demográficas apenas para seu registro, mantendo as energias do meu país em sua Jamaica. E eu estou citando meu número de telefone que eu clique em Avançar. E então eles dizem, você
quer verificar sua identidade por telefone ou o desejo por cartão? Ou é que eu vou escolher me leva por telefone e eu acabei de receber a mensagem. Não demorou muito. Então eu só vou colocar esse código e depois verificar. Agora, aqui está a parte que pode impedi-lo se você não estiver preparado para isso, eles vão querer verificar sua identidade por
cartão para que você não seja cobrado a menos que você atualize, significa que eles têm um plano de assinatura da cláusula VOCÊ diferente, então certo. Não, você está se inscrevendo para o plano de assinatura gratuito. Uma vez que as assinaturas gratuitas no plano é feito, então você não será capaz de fazer muito
na plataforma até que você envie nossas novas assinaturas na marca, que coincide com essas atualizações. Então, como eu disse antes, há “P “Como você vai e então há “pay as you-go Dev Slash Test , que é como metade do preço fora do normal PICU legal. Então eu realmente forneci meu cartão de inflamação quando eu me inscrevi. E tendo feito isso, você pode clicar faz com que eles clique em acordo se você não tem um cartão ou você não está confortável em fornecer os detalhes do nosso cartão, então. Gostoso, e você pode parar aqui, tudo bem. Mais tarde, quando realmente estamos implantando no Azure, você ainda pode ver como ele será exibido e ver como ele é benéfico para você. O que, se você quiser, então você pode ir em frente e fornecer suas informações e, em seguida, clique
no contrato e aceitar os termos do contrato e, em seguida, você estaria na plataforma. Então eu só vou assinar meus cones Rayleigh, posso citar um cone Rayleigh, mas um que eu uso e mostro como um 0 se parece. Bem, na verdade eu só digitei em Porto ponto 0.com esperando que eles me pediriam para entrar, mas eu fiz isso e ele apenas reescreveu e mus em parecer um cone que eu estava apenas configurando George Williams em gmail.com. Então este painel, então este é o painel no nível muito básico, eles têm um painel ao lado aqui listando ODE. Alguns serviços que você pode obter. Mas então, porque nós não completamos o conjunto de quatro porque eu não completei o estabelecido, pelo
menos quando eu for para assinaturas, eu vou ver que eu não tenho nenhuma assinatura, certo? Então, como eu vou ver na assinatura é como a taxa que você como um cliente com AARP como você ir empresa ou o que quer. Então, se mais tarde eu decidi que eu queria fornecer minhas informações, eu posso apenas voltar e clicar em adicionar. E então isso me levará a concluir o procedimento de inscrição onde eu realmente adicionar a assinatura. E então este é um teste gratuito sobre essa guerra sentado, apenas saiba que você tem suporte para desenvolvedores pay-as-you-go. Uzias de alguns deles. Tudo bem, então eu provavelmente iria com o pagamento como você vai. Mas isso sim, tudo isso está nos passos de se inscrever para Azur, e isso é se você quiser continuar com isso. Mas então para este desvio, realmente e verdadeiramente, eu só queria que você chegasse até o painel para que você possa ver que este é um 0, parece que este é um portal de gerenciamento de carga de trabalho lentamente. Você pode configurar suas máquinas virtuais. Mas para este curso, vamos estar olhando para cima serviços.
70. Implementar a API e banco de banco de dados de livros: Muito bem, pessoal, bem-vindos de volta. Então, vamos realmente implantar nossa ferramenta de projeto de API web ou hospedagem Azur. Presumo que já tenha criado a sua conta. Você precisa apenas ir com o botão direito do mouse no projeto e, em seguida, você vai ver publicar e está escapando. Lá vamos nós publicar. Depois que ele clicou nisso, se você ainda não estiver conectado ao Azure, vá em frente e faça isso. Então veremos os alvos aqui. Então, se quiséssemos publicar para o nosso servidor local escolheria sim ou, você sabe, escolher aquele que funciona de acordo com a nossa situação. O que estou facilitando um 0 aqui. Então, como você está, nós clicamos em seguida. E então queríamos fazer um Serviço de Aplicativo, certo? Então, vamos em frente e clique em Avançar. Poderá ser-lhe pedido para iniciar sessão neste momento, se ainda não tiver iniciado sessão com os seus cones são a sua conta Microsoft. Mas neste ponto, o que queremos fazer é criar alguns olhos suas instâncias. Então minha assinatura aqui é porque você faz teste de desenvolvimento e você pode não necessariamente ter esse ou você pode ter um diferente, mas como IZ obter acesso, então você deve ficar bem. Então eu vou ir em frente e clicar no sinal de mais porque eu não tenho nenhum recurso ou grupo de recursos, ou se eu tenho alguns grupos de recursos aqui de experimentos anteriores. Mas o que vou fazer é criar um novo. Então esta vai ser a Livraria RG, certo? Então eu clique em OK e então eles estão me pedindo para as plantas de vapor inteiro. Então eu vou clicar em novo e eu vou escolher, eu gosto de usar East US, mas então você usa o que está mais próximo da sua razão. Então eu escolho o Leste dos EUA dois, que é o recomendado pela minha razão, que é o Caribe. E então meu tamanho será livre. Então você tem livre e você tem outros que você terá que pagar. Então, você sabe, para ser o mais econômico, nós vamos apenas escolher gratuitamente para que possamos fazer essa operação bem, você sempre pode aumentar a escala, essa é a beleza do Azure e a roupa geralmente pode aumentar se você precisar. Então temos o plano de hospedagem. Vou ligar para esse plano de blazer API da livraria. Tudo bem? E então eu estou apenas renomeando. Você realmente não tem que fazer isso. Clique em OK e, em seguida, clique em Criar
e, em seguida, você realmente tem que dar isso em algum momento. Agora, uma vez que essa operação é feita, você pode ir em frente e clicar em Concluir. E então teria feito as preliminares resolvidas para o nosso pacote de publicação. Tudo bem, então vamos apenas, eu só vou te mostrar algumas coisas aqui e nós temos essas pequenas precauções e então nós precisamos apenas apenas verificar novamente tudo. Então eu vou apenas clicar em Editar em qualquer pensamento publicado. E o que ele está me mostrando aqui é que ele vai
criar um servidor ou o servidor que acabou de criar para o serviço AP é chamado que o nome do site será Bookstore dash API. Então isso seria estranho. O EPI será implantado. Eu provavelmente, você sabe, ele provavelmente pode clientes é um pouco Berlim nome plutônio ou algo assim. Você não quer durão também. A URL de destino será determinada pelo nome ST ish, certo? Então você pode escolher os URLs de destino, eu posso dizer. Livraria, API, curso de traço. Tudo bem, então essa URL agora será tomada pela Assíria. Deus usou esse URL pelo menos até que eu não publiquei, meu tribunal é inédito faz diminuir sua corrente. Tudo bem. Então eu posso dizer API livraria. E vou colocar o meu nome. Certo, então essa é a Sociedade e depois a API da livraria. E deixe-me dizer uma guerra de território. Lá vamos nós. Então, se eu tentei validar a conexão, ele vai apenas tentar verificar se ele pode realmente entrar em contato com o site. E um carrapato verde significa que estamos prontos. Se olharmos para as configurações, você veria que a estrutura de destino, que é net five, sobe para atualização recente. E então temos as opções de publicação de arquivo para que você possa remover todos os arquivos que já estão lá. Você adora fresco, aplaude todas as vezes. Você pode olhar para a divindade BASECASE. Sim, a conexão padrão aqui, esta é nossa conexão local de banco de dados. Você tem por concorda evita que eles podem fazer. E você também pode instalar serviços de log estendidos. Então você pode não querer, você quer ter cuidado com o que você marca, porque essas coisas custam dinheiro. Então, você sabe, quanto menos coisas que marcam é, menos dinheiro valor teórico, mas gastar, mas apenas para ter muito cuidado. Então, estou apenas a passar por isto. Entenda o que está olhando. Então eu posso ir em frente e ver se isso é e então você verá que meu novo
URL do site seria que quando ele for publicado, nós não publicamos nada ainda. A próxima coisa que precisamos fazer é configurar o banco de dados. Agora este vai custar dinheiro. Não há banco de dados gratuito, ou pelo menos no momento desta gravação não há livre. Então, eu vou apenas ir em frente e clicar em Configurar, escolher o banco de dados SQL do Azure. E a menos que você seja um desses switches de configuração híbrida geralmente facilitados por grandes corporações e talvez você não consiga fazer no banco de dados local. Local significa onde você está versus no código. Se tudo estiver no código, tudo é acessível. Se for no local, você precisará de algumas redes avançadas e boas maneiras. E como eu disse, cooperações maiores tendem a apoiar isso. Eu não sou um suporte de cadeia que é mais barato para mim apenas criar o banco de dados SQL e local. Então eu fui para ir em frente e clique mais para adicionar um banco de dados. Então pergunta-me qual é o nome do DSMB S? Isso é que eu quero livraria traço API sublinhado DB. Assim, o nome padrão está dando por causa do nome do projeto e que é dele. Quero dizer, é óbvio, tudo bem. Escolho o grupo de recursos que acabei de criar. Portanto, é sempre bom, especialmente em fechado para manter tudo dentro do mesmo grupo de recursos. E tudo pode estar em um recipiente. Isso é o que o grupo de recursos significa. O servidor de banco de dados. Não falo no servidor ativo. Portanto, porque não quero ter um serviço ativo para banco de dados, para SQL do Azure. Tenho que criar um servidor. Então eu fui criar um novo aqui. E então ele vai girar um servidor inteiro. Ele vai me pedir o nome de usuário e eu vou apenas colocar uma senha que eu sei que eu posso lembrar. Portanto, isso é muito importante. Certifique-se de que você pode se lembrar do analisador porque você precisa dele para fazer login mais tarde. Você clica em OK e, em seguida, ele irá
preencher o resto para você e eles vão em frente e clique em Criar. Então isso vai criar o servidor e configurá-lo para conectividade. E bem, esse processo pode ter demorado algum tempo, mas uma vez finalmente feito, você pode ir em frente e clicar em Avançar. Ele irá mostrar-lhe a cadeia de conexão. Então ele sabe que estamos procurando conexão padrão em nosso projeto. Então, ele só vai chamá-lo de conexão padrão. Não pede que você forneça seu nome de usuário e senha que você acabou de criar. Então eu vou fazer isso. E o que acontece é que ele vai realmente apenas colocar isso nesta cadeia de conexão. Então você pode realmente simplesmente copiar essa cadeia de conexão. Pode ver se quiser. Mas você pode ter cuidado com isso porque ele vai
ter o nome de usuário e senha que você acabou de digitar aqui. Você também pode optar por usar as configurações do aplicativo são o Cofre de Chaves. Key Vault é mais seguro, mas mais uma vez, isso custa. Então eu vou deixá-lo nas configurações do aplicativo e, em seguida, basta clicar em Avançar. E qualquer outra coisa que nos pede que acabamos de clicar Concluir como seu e Microsoft nem melhor assim qualquer coisa que eles sugerem que ele faz clique em Avançar e deixá-lo saber que você está interessado e, em seguida, podemos fechar para que o botão de precaução se foi. A nossa base de dados desapareceu. Imaginei, vamos tentar fazer um publicado. Então eu vou apenas clicar em publicar. E ele só vai em frente e fazer algumas, algumas operações no meio. Certo, então quando nossa operação publicada terminar, tentará lançar tudo chateado e isso é o que estou recebendo no momento. Então deixe-me tentar chegar aos meus cones. Tudo bem, então eu estou logado em meus cones xhr e eu queria ir e tentar e olhar para todos os recursos. Eu vejo aqui. Tenho a Web, o Serviço de Aplicações, certo? Em seguida, você tem o próprio banco de dados SQL. E então conhecida área do plano de serviço, que é basicamente apenas uma maneira chique de dizer o server.js que hospeda o serviço, bem
como o servidor de serviço SQL, certo? Então deixe-me olhar em nossa aplicação web. Então, às vezes, tudo nó porque está faltando uma configuração. Acho que sei o que é, mas só queria mostrar a vocês como podem fazer espécie de depuração e descobrir o que está acontecendo. Então o que queremos fazer é ir para ferramentas avançadas. E então essa ferramenta avançada chama-se Khufu, certo? Assim, ele nos dá algumas operações no mais baixo realmente interrompido o serviço ou os arquivos subjacentes ou infra-estrutura. Então eu queria ir para o console de depuração e eu vou navegar para o site www root. E então podemos ver todos os arquivos que teriam sido publicados dessa perspectiva, certo? Então, a partir daqui eu vou do.net e livraria dash api dot DLLs. Então este não sou eu. Iniciando o aplicativo lá está, Bookstore dot DLL. E aquela consola só me dá uma revelação completa. Então vamos voltar para cima e ver. Então isso é um aviso. Ok, eu posso ir por esse, mas então aqui você vê o fracasso. Então, desculpe, ele continua pulando. Então, neste ponto diz falhar e está reclamando que ocorreu uma exceção para o contexto. E então ele dizendo que ele não pode encontrar é B regras líquidas agora então se é empresa permite, Em outras palavras, ele pode encontrar o banco de dados. Tem algo acontecendo com as tabelas de banco de dados. Então deixe-me levar o Azur para o banco de dados e então podemos olhar para ele. Bem, bem, é um realmente querer que ela conecte cordas. Então só queria saber como eu me conecto a este servidor de banco de dados que eu
possa realmente usar minhas ferramentas locais. Por isso, já tenho o meu Management Studio instalado. E então eu realmente quero me conectar a este servidor usando meu, meu, meu servidor local ou minhas ferramentas locais. Então eu posso selecionar este servidor é igual a parte, basta obter esse TCP. Então o número da porta que diz o meu servidor. Então, para a escola com estúdio de gestão de demanda e conectar. E então eu estou usando a autenticação do servidor porque eu preciso usar as
mesmas credenciais que eu tinha acabado de resolver ao criar o servidor para usá-los para se conectar. Conhecer as tendências de conduta vai dizer que
você não tem acesso porque você precisa realmente configurar algumas regras de firewall ou uma baixa para que o firewall para tráfego externo chegue ao seu servidor. Então, a partir daqui eu posso entrar e, em seguida, habilitá-lo. Então vou em frente e fazer isso e deixar você ver. Assim que verificar se eu sou YM, vamos perguntar se eu queria adicionar meu endereço IP do cliente, outra torção de venda, porque eu não preciso de toda a internet para chegar a este banco de dados. Não preciso da minha máquina. Assim que eu estiver aqui eu posso olhar e ver minha idéia para A.C. E isso é meio
que, então deixe-me ampliar um pouco para você. E então eu posso expandir meu banco de dados e olhar para as tabelas. E quando é preciso fundos, o que você não vê? Então esse é o nosso problema. Não há bancos de dados. Então sim, ele criou o banco de dados, mas uma vez que ele não conseguiu fazer foi realmente realizar qualquer uma das migrações. Então deixe-me voltar para os alunos visuais, ver qual era a configuração para isso. Então eu acredito que se eu for para Editar, ir para configurações, e então ele vai tirar para descobrir os bancos de dados lá. Tudo bem, então eu posso deixar isso, não, mas, e eu vejo essa migração inédita, ou seja, quando eu estou publicando para
isso, eu, o que eu posso aplicar? Certo? Então eu posso apenas dizer salvar e depois fazer outra publicação. Então, uma vez que verificamos novamente o nosso banco de dados
que a última implantação verá a migração feita. No entanto, ainda não estamos concluídos porque não temos nossos livros e tabelas de autores. Então o problema é que lembre-se que fizemos o Banco de Dados Primeiro, abordamos todo esse projeto a partir da premissa de
que o banco de dados já existia e estava se conectando a ele. Então não temos arquivos de migração para aqueles que devo dizer, essas tabelas, certo, esses arquivos. Então o que eu vou fazer é apenas criar uma migração. E então podemos tentar. Isso é outra vez alguém apenas dizer adicionar migração. E nós vamos dizer adicionar palavras existentes de forma diferente se você quiser tabelas. Então vamos apenas criar essa migração. E então essa migração, Não, vamos levar em conta o fato de que temos a tabela de autores que precisamos criar, uma tabela de livros que precisamos criar. E à medida que você adicionar a ele, você pode ter outras tabelas e assim por diante. Então, agora que estamos publicando novamente onde ele disse que deveria adicionar a migração. Deixe-me apenas verificar se essa opção está lá. Tudo bem, então aqueles dizem aplicar migração. Então, tudo bem. Deixe-me ir em frente e publicar o que eu entendo. E quando olhamos em nosso Management Studio ou sem CO, duas tabelas que estavam faltando. Então autores e livros estão lá. Então nós sabemos que cada vez, e esta não é necessariamente a melhor prática, isso somos nós fazendo isso, mas estrangeiros para mim, filho doente em um ambiente real, em um ambiente de produção, você nunca teriam migrações automáticas. Tudo bem, melhor prática seria que você seria que usar cripta, não o banco de dados com todas as tabelas e artefatos e qualquer coisa que precisa ser criado. Você entrega para o seu sênior, seja um DBA ou seu desenvolvedor sênior, e então você o coloca no sistema. Mas nunca, nunca é uma boa prática automatizar sua migração. Tudo bem, então onde Buck com golpe depois que fizemos os dois últimos, publica para saber que você ainda está vendo o erro 500, o erro que vimos inicialmente. Então vamos tentar isso novamente onde dizemos um.net livraria api dot DLL. Vamos ver o que está acontecendo desta vez. Tudo bem, então nossa aplicação não está tendo nenhum problema, tanto quanto isso está indicando. Mas, mais uma vez, ainda
estamos tirando esse URL. É ser capaz de encontrar o nosso site. Pelo menos sabemos que tiramos certas coisas. Então, qualquer um que publicou, temos que ter certeza de que o banco de dados está funcionando e funcionando. E podemos ver que é isso que está acontecendo aqui. Então vamos voltar para a porta traseira e ver quais outras configurações podem estar lá. Como eu não estou fora, eis o que vamos fazer. Então, como você realmente sente muito, dominar core realmente nos dá a capacidade de visualizar logs com base em coisas que podem estar dando errado em nosso site. Então eu vou para o site,
voltar para w, w roots, trazer nosso arquivo web config para que eu possa realmente editar este arquivo aqui. E eu vou mudar este registro de DST, habilitando-os a mudar isso para verdadeiro. Então o que isso vai fazer é realmente produzido muito porque às vezes a obrigação está em execução, mas há algo mais na infraestrutura subjacente que está fazendo com que ela falhe. Então, habilitando esse log, agora
podemos ver um arquivo de log físico e já
estabelecemos as importações TO em arquivos de log são. E o local para o arquivo de log seria insight em conhecidos que são arquivos de log raiz e devemos vê-lo aparecer aqui. Então deixe-me tentar executar o aplicativo mais uma vez, algumas vezes e ver se alguma coisa, se algum arquivo de log aparece para mim. Tudo bem, então nada apareceu na minha pasta de registros. Deixa-me voltar para Uzziah e certificar-me de que está tudo bem. Então Buck na web e eu estou vendo aqui que o URL, o URL redefinido, o euro, foi redefinido para esses valores. Então essa é a nossa URL. Todo esse tempo eu estava tentando ir para o URL que digitou, que é traço prêmios da indústria EPA. Então vamos tentar este URL e ver o que está acontecendo. E voilá, bela, bela visão que estamos vendo são API arrogante, como sabemos que deveríamos estar vendo. E a exceção é que isso não está sendo executado em nossa máquina local. Isto não é carga. Tudo bem? Então, se você usar dinheiro postar deve ser capaz de ir através da internet e acessar sua API que você construiu. Observe que temos nossa API hospedada. O que queremos fazer é publicar nossos blazer ups, mas para ter certeza de que eles estão apontando para esta API
hospedada em vez de tentar ver a local. Então faremos isso quando voltarmos.
71. Implementar o Blazor Server para serviço de aplicativos web: Ei pessoal, bem-vindos de volta. Agora que temos a nossa API, precisamos imprimir as nossas aplicações blazer para toda a vida no Azure. Portanto, temos nossa API sendo hospedada neste endereço. Então precisamos atender a isso, a URL base em nosso final, 0.5 para o assembly web e o servidor estará fazendo servidor, certo? Não, o quê? Queríamos vê-lo dez, então não esqueça o que é. Nosso URL base para nossa API hospedada exibida. Então nós estamos indo para ir em frente e são atividades publicadas, botão
direito, clique, Publicar. Escolhemos um 0. A web, o Azara observar é o que podemos reutilizar o mesmo serviço que já temos. Só sobrescreveria, certo? Então eu preciso apenas adicionar um novo serviço, e este é para a interface da livraria. Então eu não vou mudar nenhum nome. Podemos reutilizar o mesmo grupo de recursos e posso colocá-lo no mesmo plano de hospedagem. Então tudo isso está bem. Mas o serviço em si é o contêiner real para os arquivos para o aplicativo web. O plano de hospedagem, mais uma vez, é mais do que a máquina que vamos hospedar. Então eu posso ir em frente e clicar em Criar. E aqueles que a atividade de criação é feita, você pode ir em frente e clicar em Concluir. E então ele vai nos trazer para esta tela familiar, exceto que ele vai nos dizer algo sobre o que são sinais e configuração. Mas se eu clicar em Publicar, ele vai me pedir para ter que configurar o sinal r. Então lembre-se que este é o servidor que o servidor blazer que estamos implantando. E eu acredito que eu já tenho os serviços sigma aliased habilitá-lo. Então eu não recebi as balas prontas. Se você receber o prompt, eu os carrego para instalar o sinal. Nossos serviços e tudo isso será apenas Bootstrap para você e eles serão para sua referência de projeto em conformidade e publicar seu site. Então aqui está o nosso aplicativo de servidor blazer em execução. Então vamos testá-lo. Então, se eu tentar fazer login e lembrar que já teria fundo do mar. Alguns usuários padrão ainda têm admin, bookstore.com, Piazza e Na. E, em seguida, se eu login sucesso com anual para abreviar, falando com a API, lá estou eu. Se eu for até os autores, ele vai girar embora. Os autores, não há nenhum autor para carregar. Posso criar um novo. Eu só estou lá vamos nós. Agora sabemos com certeza que nosso blazer está falando com nossa API.
72. Implementar o blazor WebAssembly no Serviço de aplicativos no Azure web App: Ei pessoal, bem-vindos de volta. Então, publicamos nossa API e publicamos nosso servidor blazers. E se você olhasse de perto entre os dois, veria que não havia muita diferença em termos de publicação no Azure. Sim, o melhor exigiu algum trabalho adicional com o banco de dados. Mas ambos o aplicativo funcionou de forma bastante semelhante ao publicar para saber para o assembly da web, é um pouco diferente porque isso não é baseado em servidor. É uma aplicação estática. Assim, o Azure tem um contêiner estático para esse tipo de site. Então vamos fazer passos ligeiramente diferentes para a nossa montagem web. Antes de irmos para a parte de publicação, porém, eu só tenho algumas alterações de código que eu queria apontar para o nosso arquivo program.cs. Então, o arquivo program.cs em nossa assemblagem web, vamos fazer os seguintes ajustes. Inicialmente, teríamos uma linha que teria nos dado o ponto construtor adicionar serviços. Então eu tinha uma linha aqui para adicionar manipulador de token de segurança JWT com escopo. Vamos remover essa linha. Foi provado ser buggy. E alguém apontou que temos que fazer isso um pouco diferente. Então o que vamos fazer em vez disso é abaixo de onde inicializamos nosso cliente HTTP. Vamos ter apenas duas linhas que se parecem com isso. Então isso é um sublinhado. Aqui, é um sublinhado. Lá vamos nós. Será que OUT cabeçalho e sublinhado é igual a nova carga JWT. E então temos que fazer ajustes semelhantes ao nosso manipulador de autenticação, ou mais especificamente o API Authentication StateProvider. E o que vamos fazer é remover o, antes de remover, vamos inicializar o manipulador de token de segurança JWT no próprio arquivo. Então, em vez de injetá-lo, vamos ter um manipulador de token de segurança JWT privado somente leitura. E, em seguida, manipulador de token é igual ao manipulador de token JWT. Então, inicialmente no trie, começamos com esta linha var Tolkien manipuladores igual ao novo token JWT sob. Então você pode remover isso e apenas inicializar o objeto no topo aqui. E então na função amada, nós também tivemos essa linha para que possamos removê-la também. Certo, então nosso objeto manipulador Tolkien é conhecido global para toda a classe. Não está sendo injetado. E então podemos usá-lo de acordo para que você possa fazer esses dois ajustes. E então vamos entrar nas coisas divertidas, que é a implantação real do nosso aplicativo. Então entre no portal e enquanto estiver lá, quero que crie um recurso. Então, a partir do mercado que vamos procurar, eu vou apenas digitar estática. E então eu quero um aplicativo web estático. Ainda está em pré-visualização, mas é estável o suficiente para competirmos nossas tarefas. Então vamos em frente e dizer Criar. E isso vai nos dar um pequeno formulário para preencher para que nosso recursos usasse o mesmo grupo de recursos para tudo o resto. Só vou dar a esta web o nome Blazer Dash foi uma razão para mim, US East, US 2. Em seguida, eles exigirão que você entre com o GitHub. Então, o que acontece é que a configuração padrão para isso vai configurar implantação
contínua e pipeline de integração usando ações do GitHub. Portanto, eles exigem que você entre com o GitHub. Então, desde o início,
eu encorajaria você a obter, para chegar aos cones de Hobart para estar verificando seu código no GitHub. Bem, aqui é onde tudo se torna integrado. Então, vamos avançar e entrar com o GitHub. Isto autoriza-o. E depois vão fazer-te algumas perguntas. Então eu não tenho nada especial para colocar aqui, o repositório ou difícil todos os seus repositórios positivos no GitHub. Vou escolher a API da minha livraria. E então o ramo é mestre. Então vamos até os detalhes do acúmulo, sobre os quais eu não tenho que fornecer nenhum detalhe. Não é necessário. Então você sempre verá o asterisco quando algo é necessário para que ele
possa ir em frente e rever e criar. A próxima tela é apenas a olhada. Você tem certeza? E então eu vou dizer vá em frente e crie. Então, o que isso realmente vai fazer é configurar meu bom para Bob cólon com a configuração de implantação rápida como ele pode ver, ele está realmente tentando é realmente fazer a implantação, certo? Não. Certo. E então criará o transtorno. Se eu ir para Resource, Então eu realmente ou deve realmente ser capaz de chegar ao recurso ou o aplicativo a partir daqui. Então, quando eu clico nesse link, bem, eles só estão vendo que seu aplicativo web estático está em tempo real e aguardando conteúdo. Então temos que fazer algumas modificações. Se você é um veterano, então parabéns para você, não há problema. Você já fez isso. No entanto, se você não está vendo o acima, então apenas fique por perto um pouco porque estamos prestes a entrar nele. Então, para o histórico de implantação, eu vou apenas clicar em estão bem, eu posso editar o fluxo de trabalho. Então, é realmente o arquivo de fluxo de trabalho, que é apenas um arquivo de configuração que gostaria que eles tivessem acabado de
criar dentro do meu repositório GitHub para este projeto. Tudo bem? E há uma parte chave neste arquivo onde ele está falando sobre o aplicativo. Então, o aplicativo aqui significa que quando eu olho neste repositório, onde eu encontrar o Web Assembly up? Então, quando olhamos em pelo menos o meu próprio e se você está em foi configurado da maneira que eu tenho o meu configurado, então você vai ver são, em seguida, você iria tê-lo na pasta Web Assembly. Então você precisa se certificar de que você sabe qual pasta ano Web Assembly está em. Então eu vou voltar para os fluxos de trabalho e Mackenzie, eu tenho que porque em cento nasceu antes, mas nós estamos focando neste aqui. Anos não terão o mesmo nome que o meu. Isso é bom. Apenas bem. O único e nós podemos apenas a partir daqui no GitHub. E eu vou atender a este ajuste aqui. Então, para o local para cima, eu vou colocar a pasta no repositório que o OP pode ser encontrado em, que é Livraria traço ponto branco foi. E então eu posso ir em frente e cometer essas mudanças. Agora, o legal é que quando fazemos um commit, ele realmente vai iniciar uma implantação toda vez que nós confirmamos alterações iniciando implantações. Então, onde vemos essas implantações? Se clicarmos em opções, então seríamos capazes de ver todos os fluxos de trabalho. Então, sempre que fizermos um comitê, Candace, vamos a leilões e você verá que ele está configurando sua configuração com o pipeline CIC e este está em andamento, e se eu clicar nele, ele me mostrará os trabalhos em andamento. Eu clico, clique em construir e implantar e ele vai me mostrar que, ok, ele está fazendo um construtor no No. Então você tem que dar alguns momentos a isso. Então você vê que estamos tendo alguma opção. Tudo bem? E se você não estiver recebendo essa ação e apenas certifique-se de que você tem um caminho de pasta do carrinho,
caso contrário, ele falhará. Se você olhar para trás para as minhas ações, você veria que algumas falharam e isso foi principalmente devido a eu não ter o caminho correto. Então, com o caminho correto, você não estaria vendo melhores resultados do que isso. E vai passar. Tudo bem, então você vê, não, ele está executando essas ações e sabe que está na construção e implantação de medos. E meu axônio Phil eventualmente. Mas, em retrospectiva, eu realmente não verifiquei todas as mudanças maravilhosas que acabei de fazer. Ainda está tentando publicar o código antigo para o qual tivemos correções. Então eu vou apenas ir em frente e fazer um commit onde eu chegar rapidamente, desculpe, eu tenho que obter mudanças. Por causa do novo Visual Studio, certas coisas têm queixo, então estamos em boas mudanças e eu tenho minha mensagem e apenas pensei confirmar tudo e sincronizar. E uma vez que nós fizemos isso e isso é voltar para o git hub e verificar novamente o nosso processo. Então, se eu clicar em Ações novamente, então você veria que eu acabei de fazer aquele check-in e não é fazer a implantação. Então vamos dar alguns que eu recebo. E este campo de novo. Então talvez estejam tendo melhor sucesso do que eu. Mas isso é bom porque pelo menos quando essas coisas falham, é bom saber e entender o que procurar quando elas falham. Então eu suspeito que pode haver algo errado com o meu arquivo YAML que é a implantação para alguém ir até o código, olhar para os fluxos de trabalho novamente e verificar através. E acho que vejo qual pode ser o problema. Então a coisa boa é que na verdade tem dois desses arquivos. Um não tenho certeza que funcionou e outro que não funcionou. Não está funcionando. Então o que eu vou fazer é olhar para eles lado a
lado e comparar e ver o que eu poderia precisar para mudar. Então eu vou ter um grande criativo aqui com o meu Leodes. Então eu vou ter cópias deste tipo de arquivo em ambos os lados. Então este lado é o que precisamos para começar a trabalhar. O Islã de esquerda não está funcionando e à direita é aquele que trabalhou para mim no passado. Então eu estou apenas olhando através para ver o que poderia ser diferente em termos
dessas configurações como o aplicativo é o mesmo em ambos os lados. Up localização é livraria, a livraria UI.R. Guassian em ambos os lados, em seguida, ter elevador API. Eu mantive um em um conjunto e comum E outro. Deixe-me normalizar isso. Também tem www Rutan aqueles que não estão do outro lado, mesmo que ele diga opcional, mas neste momento eu não estou inteiramente certo do que não está funcionando. Então eu só queria ter certeza de que eu tenho tudo contabilizado. Então, com essas mudanças, não
estou vendo nada que pudesse ser diferente. Certo? Então eu vou apenas ir em frente e salvar. E, claro, esse salvamento irá desencadear outra compilação. Então vamos ver os leilões e ver o que acontece desta vez. E essas mudanças parecem ter feito o truque para mim. Então, o que é uma implantação bem-sucedida pelo menos de acordo com o github? Então eu vou voltar, atualizar meus sites e carregar, descarregar. Lá vamos nós. Tudo bem, então este é o nosso aplicativo Web Assembly executado a partir do Azure para fazer com que o nosso bowl, finalmente
chegamos lá. Então, se eu apenas fazer um login apenas para verificar se ele está falando com as APIs. Então isso é o livro de administração store.com e ser que um ponto. E então tentamos fazer login. E lá vamos nós, onde logado com sucesso. Se eu clicar em autores, é quando trazer sobre os autores que eu teria criado
anteriormente a partir deste aplicativo servidor. Ambos estão a falar com a mesma API, ambos alojados no Azure. A Epa está no Azure. Tudo foi implantado sabendo saber como implantar um servidor de blazer API e conhecer nosso sub-conjunto. E o melhor de tudo é que estes são os aplicativos web progressivos. Eu posso realmente apenas instalar isso diretamente do navegador e será um aplicativo real no meu computador, não. Tudo bem. Portanto, este é um aplicativo real em execução a partir do computador, mas falando com a EPA, sendo hospedado no Azure.