
Repositório do Spring Cloud Gateway demonstrando a exploração da CVE-2022-22947 para testes de segurança de API e análise de vulnerabilidades.
//// NÃO EDITE ESTE ARQUIVO. ELE FOI GERADO. As alterações manuais neste arquivo serão perdidas quando ele for gerado novamente. Edite os arquivos no diretório src/main/asciidoc/ em vez disso. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master"] image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"]
Este projeto fornece um API Gateway construído sobre o Ecossistema Spring, incluindo: Spring 5, Spring Boot 2 e Project Reactor. O Spring Cloud Gateway tem como objetivo fornecer uma forma simples, porém eficaz, de rotear para APIs e fornecer a elas preocupações transversais, tais como: segurança, monitoramento/métricas e resiliência.
== Recursos
DiscoveryClient do Spring Cloud para configurar rotas== Compilação
:jdkversion: 1.8
=== Compilação e Testes Básicos
Para compilar o código-fonte, você precisará instalar o JDK {jdkversion}.
O Spring Cloud usa Maven para a maioria das atividades relacionadas à compilação, e você deve conseguir começar rapidamente clonando o projeto de seu interesse e digitando
NOTE: Você também pode instalar o Maven (>=3.3.3) por conta própria e executar o comando mvn no lugar de ./mvnw nos exemplos abaixo. Se fizer isso, talvez seja necessário adicionar -P spring se as configurações locais do Maven não contiverem declarações de repositório para artefatos de pré-lançamento do Spring.
NOTE: Esteja ciente de que talvez seja necessário aumentar a quantidade de memória disponível para o Maven definindo a variável de ambiente MAVEN_OPTS com um valor como -Xmx512m -XX:MaxPermSize=128m. Tentamos cobrir isso na configuração .mvn, então se você precisar fazer isso para que uma compilação seja bem-sucedida, por favor abra um ticket para que as configurações sejam adicionadas ao controle de versão.
Os projetos que exigem middleware (ex.: Redis) para testes geralmente exigem que uma instância local do Docker esteja instalada e em execução.
=== Documentação
O módulo spring-cloud-build tem um perfil "docs" e, se você o ativar, ele tentará compilar as fontes AsciiDoc de src/main/asciidoc. Como parte desse processo, ele procurará um README.adoc e o processará carregando todos os includes, mas sem analisá-lo ou renderizá-lo, apenas copiando-o para ${main.basedir} (que, por padrão, é ${basedir}, ou seja, a raiz do projeto). Se houver alterações no README, elas aparecerão após uma compilação Maven como um arquivo modificado no lugar correto. Basta fazer o commit e enviar a alteração.
=== Trabalhando com o código Se você não tiver preferência de IDE, recomendamos usar https://www.springsource.com/developer/sts[Spring Tools Suite] ou https://eclipse.org[Eclipse] ao trabalhar com o código. Usamos o plugin https://eclipse.org/m2e/[m2eclipse] do Eclipse para suporte ao Maven. Outras IDEs e ferramentas também devem funcionar sem problemas, desde que usem Maven 3.3.3 ou superior.
==== Ative o perfil Maven do Spring Os projetos Spring Cloud exigem que o perfil Maven 'spring' seja ativado para resolver os repositórios de milestone e snapshot do Spring. Use sua IDE preferida para ativar esse perfil, caso contrário você poderá enfrentar erros de compilação.
==== Importando para o Eclipse com m2eclipse Recomendamos o plugin https://eclipse.org/m2e/[m2eclipse] do Eclipse ao trabalhar com o Eclipse. Se você ainda não tiver o m2eclipse instalado, ele está disponível no "Eclipse Marketplace".
NOTE: Versões mais antigas do m2e não suportam Maven 3.3, portanto, depois que os projetos forem importados para o Eclipse, você também precisará informar ao m2eclipse para usar o perfil correto para os projetos. Se você vir muitos erros diferentes relacionados aos POMs nos projetos, verifique se a instalação está atualizada. Se não for possível atualizar o m2e, adicione o perfil "spring" ao seu settings.xml. Alternativamente, você pode copiar as configurações de repositório do perfil "spring" do pom pai para o seu settings.xml.
==== Importando para o Eclipse sem m2eclipse Se você preferir não usar o m2eclipse, pode gerar os metadados do projeto Eclipse usando o seguinte comando:
$ ./mvnw eclipse:eclipse
Os projetos Eclipse gerados podem ser importados selecionando import existing projects no menu file.
== Contribuindo
:spring-cloud-build-branch: master
O Spring Cloud é distribuído sob a licença Apache 2.0, não restritiva, e segue um processo de desenvolvimento no Github bastante padrão, usando o rastreador do Github para issues e mesclando pull requests no master. Se você quiser contribuir até mesmo com algo trivial, não hesite, mas siga as diretrizes abaixo.
=== Assine o Contrato de Licença de Contribuidor Antes de aceitarmos um patch ou pull request não trivial, precisaremos que você assine o https://cla.pivotal.io/sign/spring[Contrato de Licença de Contribuidor]. Assinar o contrato do contribuidor não concede a ninguém direitos de commit no repositório principal, mas significa que podemos aceitar suas contribuições, e você receberá crédito de autor se o fizermos. Contribuidores ativos podem ser convidados a se juntar à equipe principal e receber a capacidade de mesclar pull requests.
=== Código de Conduta Este projeto segue o https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[código de conduta] do Contributor Covenant. Ao participar, espera-se que você cumpra este código. Por favor, relate comportamentos inaceitáveis para [email protected].
=== Convenções de Código e Organização Nenhum desses itens é essencial para um pull request, mas todos ajudam. Eles também podem ser adicionados após o pull request original, mas antes de uma mesclagem.