Prévia do material em texto
Você acertou 1 de 10 questões Verifique o seu desempenho e continue treinando! Você pode refazer o exercício quantas vezes quiser. Verificar Desempenho A B C 1 Marcar para revisão Um sistema está sendo construído para as lojas XPTO, e será necessária uma funcionalidade de busca de lojas por estado, a partir de um recurso visual de seleção. Como os clientes podem acessar o sistema a partir de ambientes móveis ou via Web, o engenheiro de software exige que os dados sejam fornecidos via Web Service RESTful. Qual seria uma assinatura adequada, em Python, para o fornecimento das lojas a partir da UF, obedecendo o padrão REST? Questão 1 de 10 Corretas �1� Incorretas �9� Em branco �0� 1 2 3 4 5 6 7 8 9 10 Exercicio Web Services Em Python Sair Feedback D E Resposta incorreta Opa! A alternativa correta é a letra A. Confira o gabarito comentado! Gabarito Comentado Ao utilizarmos uma anotação app.route, devemos informar a rota e os métodos HTTP aceitos para acesso ao endereço, e se nenhuma informação acerca desses métodos estiver presente, será utilizado o método GET por padrão. Segundo a arquitetura REST, devemos adotar o DELETE para exclusão, PUT para alteração, POST para inclusão e GET para consulta, e no caso de uma pesquisa filtrada, a chave de pesquisa deve ser fornecida no último segmento da rota. Para o fornecimento da rota em app.route, o parâmetro de pesquisa deve ser colocado entre os sinais de menor e maior, sendo capturado em um parâmetro de mesmo nome na função. Logo, a assinatura, no padrão REST, seria 2 Marcar para revisão Com o avanço das tecnologias, ocorreu o surgimento de diversas plataformas e ambientes de desenvolvimento, bem como necessidades intrínsecas à heterogeneidade atual. Ao adotar o formato JSON, um servidor A B C D E REST busca garantir qual fator relevante para as novas plataformas? Responsividade Usabilidade Reflexividade Jogabilidade Interoperabilidade Resposta incorreta Opa! A alternativa correta é a letra E. Confira o gabarito comentado! Gabarito Comentado A usabilidade sempre foi uma necessidade para qualquer sistema, pois define o nível de ergonomia e simplicidade de uso. No contexto de jogos, essa usabilidade é traduzida como jogabilidade. No que diz respeito às interfaces de usuário, elas devem ser construídas para se adaptarem às mais diversas plataformas, o que define o conceito de responsividade. O termo reflexividade, embora não seja uma necessidade decorrente da heterogeneidade, refere-se à capacidade de um objeto, em linguagens como Java, de reconhecer sua própria estrutura interna. A adoção do formato JSON por um servidor REST tem como objetivo principal garantir a interoperabilidade, ou seja, a capacidade de comunicação entre A B C D E servidores que utilizam tecnologias distintas. Isso se deve à neutralidade do formato de dados JSON, que permite essa comunicação eficiente e eficaz. 3 Marcar para revisão Quando trabalhamos com ambientes interoperáveis, uma necessidade básica é a definição de um padrão aberto para a descrição dos serviços que serão expostos para outras plataformas. Para os Web Services do tipo SOAP, qual foi o padrão definido? WSDL IDL OMG�IDL WADL UDDI Resposta incorreta Opa! A alternativa correta é a letra A. Confira o gabarito comentado! Gabarito Comentado Em ambientes interoperáveis, é crucial definir um padrão aberto para descrever os serviços que serão disponibilizados para A B C outras plataformas. No caso dos Web Services do tipo SOAP, o padrão definido é o WSDL �Web Services Description Language). Este padrão é usado para descrever a funcionalidade oferecida por um serviço web. Além disso, é importante mencionar que o UDDI é utilizado para o registro desses serviços. Para os Web Services RESTful, o formato WADL é adotado para a descrição dos serviços. Já o RPC utiliza o IDL e o CORBA trabalha com o OMG�IDL. 4 Marcar para revisão O banco de dados PostgreSQL é amplamente utilizado no mercado de desenvolvimento, pois apresenta ótimas características como repositório de dados. Entre as opções apresentadas, qual delas define corretamente uma característica do banco de dados PostgreSQL? Segue o modelo NoSQL documental, com armazenamento no formato JSON. Não oferece suporte a transações, sendo gerados apenas logs de execução. Permite apenas uma instância de banco por servidor. D E Oferece uma ferramenta gráfica de administração denominada pgAdmin. Segue o modelo NoSQL baseado em grafos. Resposta incorreta Opa! A alternativa correta é a letra D. Confira o gabarito comentado! Gabarito Comentado O PostgreSQL é um sistema de gerenciamento de banco de dados relacional, o que contradiz diretamente os modelos NoSQL. Ele possui um excelente suporte para transações e permite o gerenciamento de várias instâncias de banco de dados no mesmo servidor. Além disso, para facilitar a administração e aumentar a produtividade, o PostgreSQL oferece uma ferramenta gráfica chamada pgAdmin. Portanto, a alternativa que define corretamente uma característica do banco de dados PostgreSQL é a alternativa D� "Oferece uma ferramenta gráfica de administração denominada pgAdmin". 5 Marcar para revisão A biblioteca Zeep permite criar clientes SOAP de forma extremamente simples no Python, com grande ganho de produtividade. Considerando as opções seguintes, qual a informação correta acerca dos clientes construídos com Zeep? A B C D E Os stubs são gerados com a passagem do endereço do WSDL no construtor do cliente. É necessário especificar uma biblioteca de validação XML, como o lxml. Precisa ser hospedado em um servidor Web, como aqueles criados com Django. O resultado de uma chamada deve ser interpretado por um parser XML. Obriga a definição dos envelopes SOAP em variáveis de texto do Python. Resposta incorreta Opa! A alternativa correta é a letra A. Confira o gabarito comentado! Gabarito Comentado A alternativa correta é a A. A biblioteca Zeep, ao receber o endereço do WSDL �Web Services Description Language) no construtor do cliente, gera automaticamente os stubs. Esses stubs permitem que as chamadas aos métodos expostos sejam feitas de maneira semelhante a chamadas locais, mesmo que estejam sendo transmitidas via protocolo HTTP. Todo esse processo é realizado de forma automática, sem a necessidade de incluir validadores e interpretadores XML, ou de especificar no código o envelope SOAP. Isso torna o processo extremamente A B C D E simples e produtivo. Além disso, por ser um aplicativo cliente, não há necessidade de hospedagem em um servidor. 6 Marcar para revisão Um sistema de boa complexidade, na área financeira, é composto de módulos CORBA, criados em C��, módulos EJB, da plataforma Java, com acesso ao banco de dados DB2, e interfaces gráficas criadas em Delphi. Os serviços são expostos e consumidos no formato SOAP, além de orquestrados na sintaxe BPEL. No caso descrito, qual arquitetura estaria sendo adotada? MVC Pipeline SOA PAC Broker Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado O sistema descrito na questão é caracterizado pela arquitetura SOA �Service Oriented Architecture). Esta arquitetura é adotada quando se trabalha com diferentes plataformas, incluindo sistemas legados, que se comunicam através da exposição de serviços com formatos padronizados. Um componente importante da arquitetura SOA é o ESB �Enterprise Service Bus), onde ocorre a combinação dos serviços via BPEL. É comum o uso dos modelos SOAP ou REST para fornecimento dos serviços na arquitetura SOA. Embora a arquitetura Broker seja evidente para os objetos distribuídos, incluindo EJB e CORBA, isso não define a arquitetura do sistema como um todo. Da mesma forma, não é possível afirmar se os componentes internos utilizaram arquiteturas baseadas em camadas,como MVC ou PAC. O modelo Pipeline, por sua vez, apenas define a saída de um programa alimentando a entrada seguinte, dentro do fluxo de execução, sem a definição de serviços. Portanto, a alternativa correta é a SOA. 7 Marcar para revisão Suponha uma classe DAO, implementada em Python, com acesso ao banco de dados através do SQL Alchemy, onde as entidades utilizam o modelo declarativo do framework. Ao construir um Web Service RESTful, com base no Flask, quais seriam os passos de codificação necessários para definir um processo de inclusão via HTTP? A B C Definir uma função tendo a entidade como parâmetro, anotada para uma rota parametrizada, via app.route, com base no método PUT do HTTP; e invocar o método de inclusão do DAO, com a passagem da entidade obtida a partir da rota. Definir uma função sem parâmetros, anotada para a rota de base, via app.route, com base no método POST; obter os dados, com request.get_ json; instanciar a entidade com os dados JSON obtidos; e invocar o método de inclusão do DAO com a passagem da entidade. Definir uma função tendo a entidade como parâmetro, anotada para uma rota parametrizada, via app.route, com base no método POST do HTTP; transformar para o formato JSON via função jsonify; e invocar o método de inclusão do DAO, com a passagem dos dados no formato JSON. D E Definir uma função sem parâmetros, anotada para a rota de base, via app.route; obter uma entidade com json.loads; e invocar o método de inclusão do DAO com a passagem da entidade. Definir uma função sem parâmetros, anotada para a rota de base, via app.route; obter uma entidade no atributo content de requests.get; transformar para o formato JSON via jsonify; e invocar o método de inclusão do DAO, com a passagem dos dados no formato JSON. Resposta incorreta Opa! A alternativa correta é a letra B. Confira o gabarito comentado! Gabarito Comentado De acordo com o padrão REST, a inclusão de dados é realizada na rota de base, utilizando o método POST do HTTP. Isso implica na criação de uma função de tratamento que não possui parâmetros, a qual é anotada com app.route para as características mencionadas. Dentro do corpo desta função, os dados da requisição, que são fornecidos no formato JSON, devem ser recuperados utilizando request.get_ json. No entanto, o DAO opera apenas com entidades, portanto, é necessário instanciar uma entidade com os dados recuperados. Finalmente, o método de inclusão do DAO é invocado, passando a entidade como argumento. Portanto, a A B C alternativa B é a correta, pois descreve corretamente este processo. 8 Marcar para revisão Ao contrário dos Web Services, que apenas fornecem dados, a partir da exposição de serviços, sem a definição de uma interface de usuário, nos aplicativos Web temos o retorno de conteúdo HTML para cada requisição efetuada, permitindo a interação com o usuário através de um navegador, como Chrome ou Edge. No caso do Django, podemos tratar a requisição através de uma função Python, direcionando os resultados para um template HTML, como no trecho de código apresentado a seguir. Qual a informação correta acerca da função apresentada? Não é necessário mapear a rota, sendo assumido o nome da função de forma automática. Os dados serão enviados para um template com o nome index.html, no diretório templates, através de um dicionário que é associado ao parâmetro context. Para que seja criado o conteúdo HTML de saída, é utilizado um cliente zeep, apontando para o descritor de um serviço. D E O parâmetro request é opcional, colocado aqui apenas para facilitar o entendimento. Para os dados obtidos do Web Service SOAP via cliente zeep, será necessário utilizar um parser XML ao nível do template HTML. Resposta incorreta Opa! A alternativa correta é a letra B. Confira o gabarito comentado! Gabarito Comentado Uma função de tratamento tem obrigatoriamente um parâmetro request, para receber a requisição HTTP, e deve ser mapeada para uma rota no arquivo urls.py. Podemos obter os dados a partir de um Web Service SOAP, de forma simples, com base em um cliente zeep, sem a necessidade de parsers XML, e os dados obtidos serão transmitidos para o template através de um dicionário Python. Ao final da função, ocorre o retorno do conteúdo HTML, com base na chamada para render, onde é utilizado o elemento request, e os dados são enviados para o template correto (index.html), associando o dicionário gerado ao parâmetro context. 9 Marcar para revisão Ao trabalharmos no ambiente Python, qual biblioteca permite a definição de Web Services do tipo SOAP, entre outros serviços no estilo A B C D E RPC, de forma simples, com base em um pequeno conjunto de anotações e seguindo o paradigma orientado a objetos? django lxml zeep pandas spyne Resposta incorreta Opa! A alternativa correta é a letra E. Confira o gabarito comentado! Gabarito Comentado A biblioteca correta é a spyne. Ela permite a definição de serviços SOAP, com base em classes que descendem de ServiceBase. Os métodos expostos nessa biblioteca devem utilizar a anotação rpc. Para que os Web Services sejam executados, eles são hospedados em um servidor Web, que pode ser definido via Django. A validação do formato XML é realizada através de bibliotecas como o lxml. Quanto ao zeep, ele é utilizado no cliente, enquanto o pandas é utilizado para análises estatísticas. Portanto, a alternativa correta é a spyne, que permite a definição A B C D E de Web Services do tipo SOAP de maneira simples e orientada a objetos. 10 Marcar para revisão Em comparação com a abordagem tradicional de desenvolvimento, com todos os módulos e funcionalidades em um bloco único, a abordagem baseada em microsserviços prega que as aplicações sejam desmembradas em componentes mínimos e independentes, os quais precisam trabalhar juntos para realizar tarefas. Existem múltiplas vantagens nessa nova abordagem, mas ______________________ NÂO É uma delas. Qual opção completa corretamente a lacuna? Compartilhamento de Funções e Processos entre várias Aplicações Grande Escalabilidade Garantia de Responsividade Maior facilidade na criação de Testes Unitários Alta Disponibilidade Resposta incorreta Opa! A alternativa correta é a letra C. Confira o gabarito comentado! Gabarito Comentado No que se refere ao compartilhamento de funcionalidades, Interoperabilidade é a característica primordial do novo modelo. Além da interoperabilidade, com a fragmentação do sistema temos melhorias em termos de Escalabilidade e Disponibilidade, além de facilidades no projeto e execução de Testes Unitários. A única característica que NÃO É uma vantagem do novo modelo é a Garantia de Responsividade, já que trata de elementos de back-end, com o simples trânsito de dados, sem qualquer interface gráfica para interação com o usuário.