Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chrissperb/chucknorris-jokes-api
Este projeto consiste em uma API RESTful simples construida com Java e Spring Boot, que fornece piadas aleatorias sobre Chuck Norris. A API consome dados de uma API externa de piadas sobre Chuck Norris e os expoe por meio de um endpoint acessivel via HTTP.
https://github.com/chrissperb/chucknorris-jokes-api
api-rest gradle java postman spring-boot
Last synced: 19 days ago
JSON representation
Este projeto consiste em uma API RESTful simples construida com Java e Spring Boot, que fornece piadas aleatorias sobre Chuck Norris. A API consome dados de uma API externa de piadas sobre Chuck Norris e os expoe por meio de um endpoint acessivel via HTTP.
- Host: GitHub
- URL: https://github.com/chrissperb/chucknorris-jokes-api
- Owner: chrissperb
- Created: 2024-10-19T19:52:53.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2024-11-10T12:57:25.000Z (3 months ago)
- Last Synced: 2024-11-10T13:39:45.017Z (3 months ago)
- Topics: api-rest, gradle, java, postman, spring-boot
- Language: Java
- Homepage:
- Size: 48.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Chuck Norris Jokes API
Este projeto consiste em uma API RESTful simples construída com **Java** e **Spring Boot**, que fornece piadas aleatórias sobre Chuck Norris. A API consome dados de uma API externa de piadas sobre Chuck Norris e os expõe por meio de um endpoint acessível via HTTP.
**IMPORTANTE:** A responsabilidade do conteúdo e teor das piadas é de inteira responsabilidade do site original [chucknorris.io](https://api.chucknorris.io).## Tecnologias Utilizadas
* **Java 17+**
* **Spring Boot 3.x**
* **Spring Web**: Para criação e configuração da API RESTful.
* **RestTemplate**: Para fazer requisições HTTP à API externa de piadas.
* **Lombok**: Para reduzir o código boilerplate.
* **Maven**: Para gerenciamento de dependências e build.
* **DeepL Translation API**: Para traduzir as piadas do inglês para o português.## Funcionalidades
* **Obter piada aleatória**: A API fornece uma piada aleatória sobre Chuck Norris através de uma chamada `GET` no endpoint `/api/joke`.
* **Obter piada traduzida**: A API traduz a piada para o português usando a DeepL Translate API via o endpoint `/api/joke/pt`.
* **Integração com API externa**: A API consome a API pública de piadas [chucknorris.io](https://api.chucknorris.io), garantindo que cada resposta traga uma nova piada aleatória.## Endpoints
* `GET /api/joke`: Retorna uma piada aleatória sobre Chuck Norris no formato JSON.
* `GET /api/joke/pt`: Retorna uma piada aleatória traduzida para português.## Estrutura do Projeto
```bash
chucknorris-jokes-api
│
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── chrissperb
│ │ │ └── chucknorrisjokesapi
│ │ │ ├── ChuckNorrisController.java
│ │ │ ├── ChuckNorrisService.java
│ │ │ └── ChuckNorrisApiApplication.java
│ │ └── resources
│ │ └── application.properties
├── pom.xml
└── README.md
```
## Diagrama de classes```mermaid
classDiagram
class ChucknorrisJokesApiApplication {
+main(String[] args)
}class ChuckNorrisService {
-RestTemplate restTemplate
-String deeplApiKey
+getRandomJoke() String
-translateToPortuguese(String text) String
}class ChuckNorrisController {
-ChuckNorrisService chuckNorrisService
+getRandomJoke() String
}ChucknorrisJokesApiApplication --> ChuckNorrisService : uses
ChuckNorrisController --> ChuckNorrisService : depends on```
## Como executar:
### 1. Clone o repositório:
`git clone https://github.com/chrissperb/chucknorris-jokes-api.git``cd chucknorris-jokes-api`
### 2. Adicione a sua chave de API do DeepL no arquivo `application.properties`:
`deep.api.key=YOUR_DEEPL_API_KEY`### 3. Compile e execute a aplicação na sua IDE preferida.
### 4. Faça as requisições:
Acesse o endpoint `http://localhost:8080/api/joke` para obter uma piada em inglês ou `http://localhost:8080/api/joke/pt` para obter uma piada em português.## Contribuições
Sinta-se à vontade para fazer um fork deste projeto e enviar pull requests com melhorias, novas funcionalidades ou correções. Toda contribuição é bem-vinda!## Licença
Este projeto está licenciado sob os termos da MIT License. Consulte o arquivo [LICENSE]() para mais informações.