Download the PHP package rodrigoaramburu/php-json-server without Composer
On this page you can find all versions of the php package rodrigoaramburu/php-json-server. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download rodrigoaramburu/php-json-server
More information about rodrigoaramburu/php-json-server
Files in rodrigoaramburu/php-json-server
Package php-json-server
Short Description Biblioteca para criar uma API Rest fake para prototipação de front-end
License MIT
Informations about the package php-json-server
PHP JSON Server
PHP JSON Server é uma biblioteca simples para fornecer uma API REST em poucos minutos para ser utilizada em testes de front-end por exemplo.
Ela pode rodar através do servidor build-in do PHP ou ser integrada a um framework com bastante facilidade. Também possui um CLI para iniciar um servidor de maneira rápida e gerar os dados da API.
* NÃO DEVE SER UTILIZADO EM PRODUÇÃO
Inpirada na biblioteca Zlob/php-json-server
Instalação
Via composer composer require rodrigoaramburu/php-json-server
.
Criamos um arquivo index.php
com o seguinte código.
Ao criar o Server
passamos o caminho para o json de dados da API. Nele definimos os dados iniciais e quais coleções a API vai ter. Veja um exemplo de database.json
Cada propriedade do JSON representa uma coleção sendo seu valor um array de objetos contidos na coleção. Podemos ligar um objeto de uma coleção com de outra coleção com uma "chave estrangeira" com o formato <coleção no singular>_id
, isto irá fazer com que ao ser recuperada o campo de "chave estrangeira" será substituido pelo resource com o id especificado.
Para carregar todos um resource juntamente com todos os outros que tem que tem uma chave estrangeira para ele adicionamos esta relação a entrada embed-resources do arquivo de dados.
Com o JSON acima a API irá nos fornecer as seguintes rotas.
Method | Url |
---|---|
GET | /posts |
GET | /posts/1 |
GET | /posts/comments |
GET | /posts/1/comments |
POST | /posts |
POST | /posts/1/comments |
PUT | /posts/1 |
PUT | /posts/1/comments/3 |
DELETE | /posts/1 |
DELETE | /posts/1/comments/3 |
Com o database.json
e o index.php
podemos rodar a API com o servidor build-in do PHP.
Também podemos integra-lo facilmente com outros frameworks. Veja um exemplo utilizando o Slim.
- Obs.: neste caso as rotas da api serão precedidas por
/api
Como o retorno do método handle
é um objeto da interface Psr\Http\Message\ResponseInterface
basta retornar para o Slim construir a resposta.
Middlewares
O servidor permite a utilização de middlewares, para isso basta estender a classe abstrata JsonServer\Middlewares\Middleware
implementando o método public function process(RequestInterface $request, Handler $handler): ResponseInterface;
E depois adicionar ao $server
:
`
Middleware Rota Estática
Podemos criar rotas estáticas utilizando o middleware StaticMiddleware
, ele recebe no construtor um array ou o caminho para um arquivo json com as rotas.
Em vez de passar o array podemos passar um json com as configurações das rotas em um arquivo json como static.json
.
E adicionamos passamos seu caminho ao middleware
Filtros e Ordenação
Podemos filtrar um recurso por campo passando o campo e o valor como query param:
Podemos ordenar o resultado por um campo passado por query param os parâmetros de _sort para o nome do campo e _order para o sentido (asc, desc);
CLI
Iniciando o servidor
Também é possível iniciar um servidor de forma mais simples através de comando CLI, para isso basta ter os arquivos JSON na pasta e rodar
Podemos passar os seguintes parâmetros:
Parâmetros | Descrição |
---|---|
data-dir=PATH | especifica o diretório contento os arquivos json como database.json |
port=PORT | especifica a porta que o servidor irá rodar |
--use-static-route | habilita o middelware de rotas estáticas, as rotas devem ser especificadas no arquivos static.json |
Gerando o database.json
Podemos gerar o arquivo de dados utilizando o seguinte comando
Podemos passar os seguinte parâmentros
Parâmetros | Descrição |
---|---|
filename=FILENAME | especifica o nome do arquivo que será gravado os dados |
embed=RELATIONS | especifica as relações dos resources. Deve ser passado no formato: 'resourcePai[resourceFilho1,resourceFilho2]; ... ' |
Gerando dados dos Resources
Podemos gerar os dados de um resource utilizando o seguinte comando:
Podemos passar os seguinte parâmentros
Parâmetros | Descrição |
---|---|
filename=FILENAME | especifica o nome do arquivo que será gravado os dados |
num=NUM_OF_RESOURCES | especifica o número de resources a serem criados |
fields=FIELDS_LIST | lista de campos a serem criados no resource. Deve ser informado no formato. 'field.type;field.type; ...'. O type deve ser um método do lib Faker, com seus parâmetros(se houver) passados separados por ponto após o nome do método. Ex.: idade.numberBetween.20.70 |
Gerando rotas estáticas
Podemos gerar o arquivo de rotas estaticas para o middleware StaticMiddleware
com o seguinte comando:
Parâmetros | Descrição | |||
---|---|---|---|---|
filename=FILENAME | especifica o nome do arquivo que será gravado os dados | |||
path=PATH | path da rota | |||
method=METHOD | método da rota | |||
body=BODY | body da resposta | |||
statusCode=STATUS_CODE | código de esta http da resposta | |||
headers=HEADER-LIST | lista de header da resposta. Informadado no formato headers="header1 | valor-header1 | header2 | valor-header2" |
All versions of php-json-server with dependencies
nyholm/psr7 Version ^1.5
doctrine/inflector Version ^2.0
minicli/minicli Version ^3.2
fakerphp/faker Version ^1.20