-
Mezzio
PSR-15 Middleware
-
mtymek/blast-base-url
Using Mezzio from subdirectory
https://docs.mezzio.dev/mezzio/v3/cookbook/using-a-base-path/#mtymek-blast-base-url
-
SleekDB
NoSQL database
-
Manual API tests
ARC - Advanced REST Client
https://github.com/advanced-rest-client/arc-electron/releases
To enable PUT request body BodyParamsMiddleware
is used in config/pipeline.php
$app->pipe(BodyParamsMiddleware::class);
To use from subdirecotory mtymek/blast-base-url
is used in config/pipeline.php
$app->pipe(\Blast\BaseUrl\BaseUrlMiddleware::class);
[API.md]
Based on https://github.com/gothinkster/realworld/tree/master/api
Success returns 200 OK
Failure returns 404 Not Found
Request:
GET /api/leagues/:id
Response on SUCCESS:
200 OK
{
"id": 1,
"name": "Pruszkowska Liga Szóstek Piłkarskich",
"city": "Pruszków"
}
Response on FAILURE:
404 Not Found
Request:
GET /api/leagues
Response on SUCCESS:
200 OK
[
{
"id": 1,
"name": "Pruszkowska Liga Szóstek Piłkarskich",
"city": "Pruszków"
},
{
"id": 2,
"name": "Nowodworka Liga Piłki Nożnej",
"city": "Nowy Dwór Mazowiecki"
}
]
Response on FAILURE or EMPTY:
404 Not Found
Request:
POST /api/leagues
{
"name": "Pruszkowska Liga Szóstek Piłkarskich",
"city": "Pruszków"
}
Response on SUCCESS:
200 OK
{
"id": 1,
"name": "Pruszkowska Liga Szóstek Piłkarskich",
"city": "Pruszków"
}
Response on FAILURE:
404 Not Found
Request:
PUT /api/leagues/:id
{
"name": "Pruszkowska Liga Szóstek Piłkarskich",
"city": "Pruszków"
}
Response on SUCCESS:
200 OK
{
"id": 1,
"name": "Pruszkowska Liga Szóstek Piłkarskich",
"city": "Pruszków"
}
Response on FAILURE:
404 Not Found
Request:
DELETE /api/leagues/:id
Response on SUCCESS:
200 OK
Response on FAILURE:
404 Not Found
GET /api/:league_slug/teams
RESPONSE:
{
"teams": [
{ "id": 0, "name": "Mantika", "numberOfPlayers": 12 },
{ "id": 1, "name": "Megameble", "numberOfPlayers": 9 }
]
}
POST /api/:league_slug/team
REQUEST:
{
"team": { "name": "Sznajder" }
}
RESPONSE: returns Team
GET /api/:league_slug/team/:team_id
RESPONSE:
{
"name": "Megameble",
"team": { "id": 1, "name": "Megameble" },
"players": [
{ "id": 0, "name": "Czerny Konrad" },
{ "id": 1, "name": "Czerny Krzysztof" },
{ "id": 2, "name": "Jerdal Rafał" },
{ "id": 3, "name": "Maciejec Kuba" },
{ "id": 4, "name": "Sterlus Paweł" },
{ "id": 5, "name": "Sztyk Mateusz" },
{ "id": 6, "name": "Sztyk Piotr" },
{ "id": 7, "name": "Zalewski Piotrek" },
{ "id": 8, "name": "Łata Tomasz" }
]
}
PUT /api/:leage_slug/team/:team_id
REQUEST:
{
"team": { "name": "Megameble" }
}
RESPONSE: returns Team
Accept fields: name
DELETE /api/:league_slug/team/:team_id
POST /api/:league_slug/player/:team_id
REQUEST:
{
"player": { "name": "Czerny Konrad" }
}
RESPONSE: returns Player
GET /api/:league_slug/player/:player_id
RESPONESE:
{
"player": { "id": 0, "name": "Czerny Konrad" }
}
PUT /api/:leage_slug/player
REQUEST:
{
"player": { "name": "Czerny Konrad" }
}
RESPONSE: returns Player
Accept fields: name
DELETE /api/:league_slug/player/:player_id