Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 57 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,69 @@
# Back-end Challenge
# Desafio Back-end Apiki (Conversor de Moedas)

Desafio para os futuros programadores back-end da Apiki.
Este projeto é um desafio técnico para candidatos a desenvolvedor back-end, implementando uma API simples de conversão de moedas em PHP.

## Introdução
## Requisitos

Desenvolva uma **REST API** que faça conversão de moedas.
- PHP >= 7.4
- Composer

**Especifícações**:
## Instalação

* A URL da requisição deve seguir o seguinte formato:
* http://localhost:8000/exchange/{amount}/{from}/{to}/{rate}
* http://localhost:8000/exchange/10/BRL/USD/4.50
* A resposta deve seguir o seguinte formato:
```json
{
"valorConvertido": 45,
"simboloMoeda": "$"
}
1. Clone o repositório:
```sh
git clone https://github.com/pedromarcusso09/back-end-challenge-pedromarcusso09
cd back-end-challenge-pedromarcusso09
```
* Conversões:
* De Real para Dólar;
* De Dólar para Real;
* De Real para Euro;
* De Euro para Real;
* Serão executados testes automatizados para validação dos requisitos:
* Levantar servidor embutido do PHP: `php -S localhost:8000 src/index.php`;
* Executando testes: `composer test`;
* Executando lint: `composer lint`;
2. Instale as dependências:
```sh
composer install
```

## Como executar

O endpoint principal está em `src/index.php` e espera requisições HTTP no seguinte formato:

```
/exchange/{valor}/{from}/{to}/{rate}
```

- `valor`: Valor a ser convertido (ex: 10)
- `from`: Moeda de origem (BRL, USD, EUR)
- `to`: Moeda de destino (BRL, USD, EUR)
- `rate`: Taxa de câmbio (ex: 0.2)

### Exemplo de requisição

```
GET /exchange/10/BRL/USD/0.2
```

Resposta:

```json
{
"valorConvertido": 2,
"simboloMoeda": "$"
}
```

### Erros comuns

- Parâmetros ausentes ou inválidos retornam HTTP 400 com mensagem de erro.
- Rota inexistente retorna HTTP 404.

## Instruções
## Testes

1. Efetue o fork deste repositório e crie um branch com o seu nome e sobrenome. (exemplo: fulano-dasilva)
2. Após finalizar o desafio, crie um Pull Request.
3. Aguarde algum contribuidor realizar o code review.

*Obs.: Não esqueça de executar o `composer test` e `composer lint` localmente.*
Os testes automatizados estão na pasta `tests/` e utilizam o Codeception.

## Pré-requisitos
Para rodar os testes:

* PHP => 7.4
* Orientado a objetos
```sh
vendor/bin/codecept run
```

## Dúvidas
## Scripts úteis

Em caso de dúvidas, crie uma issue.
- `composer test` — Executa todos os testes
- `composer lint` — Verifica padrão de código
- `composer lint:fix` — Corrige automaticamente problemas de formatação
6 changes: 4 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
"description": "Desafio para candidatos a back-end.",
"type": "project",
"require": {
"php": ">= 7.4"
"php": ">= 7.4",
"symfony/http-foundation": "*"
},
"require-dev": {
"squizlabs/php_codesniffer": "^3.4",
"codeception/codeception": "^4.1",
"codeception/module-phpbrowser": "^1.0.0",
"codeception/module-rest": "^1.0.0"
"codeception/module-rest": "^1.0.0",
"behat/gherkin": "4.9"
},
"license": "MIT",
"scripts": {
Expand Down
Loading