Getting Started
Library Api v0.1
It is a simple implementation of Library. Here I just implemented Members section.
You can test the work either using Swagger or Postman.
I'll explain using Swagger.
How It works
-
You must get a JWT token to create/delete/query members
-
I'll use sample User information.
- userId = 1
- username = sinanduman@gmail.com
- password = "12344321"
- validity = 1 day
- scopes
- lib.bo.c
- lib.bo.r
- lib.bo.r.all
- lib.bo.return
- lib.bm.r
- lib.bm.c
- lib.bm.d
- lib.m.c
- lib.m.r
- lib.m.d
- lib.m.r.all
-
Firstly, you have to hava e JWT token
-
To get a JWT token;
- You can use LoginController api
- When you click LoginController, you click Tryout, you must enter Basic c2luYW5kdW1hbkBnbWFpbC5jb206MTIzNDQzMjE=
- Also you can get Basic Auth from Debug Bear
- After execute, you should get a sample JWT token from the response
{ "username": "sinanduman@gmail.com", "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJpYW0ubGlicmFyeS1zeXN0ZW0uY29tIiwic3ViIjoiMSIsImlzcyI6ImlhbS5saWJyYXJ5LXN5c3RlbS5jb20iLCJzY29wZXMiOlsibGliLmJtLmMiLCJsaWIuYm0uZCIsImxpYi5ibS5yIiwibGliLmJvLmMiLCJsaWIuYm8uciIsImxpYi5iby5yLmFsbCIsImxpYi5iby5yZXR1cm4iLCJsaWIubS5jIiwibGliLm0uZCIsImxpYi5tLnIiLCJsaWIubS5yLmFsbCJdLCJleHAiOjE2NTYzOTgxMDMsImlhdCI6MTY1NjMxMTcwM30.Il29JAl_irwXTRxKIoRAhU_AoDR72X08pxAbWrDhMwc" }
- You can use sample User information to create sample JWT token from jamiekurtz.com
- You can use LoginController api
-
After getting JWT token either from Swagger or other link, you can call all the Api endpoints from Swagger UI.
-
First you have to click Authorize button to enter Token.
- Enter "Bearer
Token
" to input field and click Authorize. Else you'll get 403 Response when you call Api endpoints.
- Enter "Bearer
-
After you are authenticated, you can call Member endpoints.
-
All Api Endpoints have Role checks. If you don't have required Role, you'll get 403 Response.
Sample Api Calls
Validation
Request fields must conform to validation rules. Otwerwise you'll get 400 - BAD_REQUEST Response
Name, Surname
- Not Empty
- Less than or equal 100 chars
Date
- Not Empty
- Regex Pattern:
"^[12][0-9]{3}-[0-9]{2}-[0-9]{2}[T ][0-9]{2}:[0-9]{2}:[0-9]{2}.*"
- Sample Date: 2022-06-26T00:00:00
- Not Empty
- Regex Pattern:
"[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,3}"
Phone Number
- Not Empty
- Regex Pattern:
"^0?[1-9]{3}[ ]?[0-9]{3}[ ]?[0-9]{2}[ ]?[0-9]{2}$"
- Sample Phone Number: 0555 280 0229
Member Create
POST -> /library/api/v1/members
You need lib.m.c role
REQUEST
{ "email": "aliduman@gmail.com", "name": "Ali", "surname": "Duman", "phoneNumber": "0555 280 0229", "joinDate": "2022-06-26T00:00:00" }
RESPONSE
{ "memberId": 1, "email": "aliduman@gmail.com", "name": "Ali", "surname": "Duman", "phoneNumber": "0555 280 0229", "joinDate": "2022-06-26T00:00:00" }
Member Update
PUT -> /library/api/v1/members/{id}
You need lib.m.c role
REQUEST
id: 1
{ "email": "sinanaliduman@gmail.com", "name": "Sinan Ali", "surname": "Duman", "phoneNumber": "0555 280 0229", "joinDate": "2022-06-26T00:00:00" }
RESPONSE
{ "memberId": 1, "email": "aliduman@gmail.com", "name": "Sinan Ali", "surname": "Duman", "phoneNumber": "0555 280 0229", "joinDate": "2022-06-26T00:00:00" }
Member Delete
DELETE -> /library/api/v1/members/{id}
You need lib.m.d role
REQUEST
1
RESPONSE
204 - No Content
Member Get (Id)
GET -> /library/api/v1/members/{id}
You need lib.m.r, lib.m.r.all role
REQUEST
id: 1
RESPONSE
{ "memberId": 1, "email": "aliduman@gmail.com", "name": "Sinan Ali", "surname": "Duman", "phoneNumber": "0555 280 0229", "joinDate": "2022-06-26T00:00:00" }
Member Get (All)
GET -> /library/api/v1/members
You need lib.m.r.all role
REQUEST
name
surname
phoneNumber
RESPONSE
[ { "memberId": 1, "email": "aliduman@gmail.com", "name": "Sinan Ali", "surname": "Duman", "phoneNumber": "0555 280 0229", "joinDate": "2022-06-26T00:00:00" } ]
Database design
Tables
[User]
Field | Type | Null | Key | Default | Ekstra |
---|---|---|---|---|---|
user_id | int(11) | NO | PRI | NULL | auto_increment |
username | varchar(255) | YES | NULL | ||
password | varchar(255) | YES | NULL | ||
role | varchar(255) | YES | NULL |
[Member]
Field | Type | Null | Key | Default | Ekstra |
---|---|---|---|---|---|
member_id | int(11) | NO | PRI | NULL | auto_increment |
name | varchar(255) | YES | NULL | ||
surname | varchar(255) | YES | NULL | ||
varchar(255) | YES | NULL | |||
phone_number | varchar(255) | YES | NULL | ||
join_date | varchar(255) | YES | NULL |