Logo Lanfrica

reubano/arusha-coders-api

Domain:

digital infrastructure

Record type:

software
Creator:
reu
Host:
simple API illustrating basic and JSON Web Token (JWT) authentication # arusha-coders-api API to accompany the 'Securing your (RESTful) API' presentation ## Intro This is a simple API that lets you create a user account and test view user info using basic or JSON Web Token (JWT) authentication. ## Usage ### Demo Server #### cURL create a user ```bash # request curl -d "name='First Last'" \ -d "email=user@email.com" \ -d "password=password" \ -d "confirmPassword=password" \ arusha-coders-api.herokuapp… # response { "source": "signup", "objects": { "email": "user@email.com", "jwt": "eyJ0eXAi...", "exp": "DD/MM/YYYY" } } ``` get user info via Basic Authentication ```bash # request curl -H 'Content-Type: application/json' \ -u 'user@email.com:password' \ arusha-coders-api.herokuapp… # response { "objects": { "user": { "_id": "554d...", "password": "$2$10$...", "lastName": "Last", "firstName": "First", "email": "user@email.com", "__v": 0, "isVerified": false } } } ``` get user info via JWT Bearer Token Authentication ```bash # request curl -H 'Content-Type: application/json' \ -H 'Authorization: Bearer replace_with_your_jwt' \ arusha-coders-api.herokuapp… # response { "objects": { "user": { "_id": "554d...", "password": "$2$10$...", "lastName": "Last", "firstName": "First", "email": "user@email.com", "__v": 0, "isVerified": false } } } ``` create another JWT ```bash # request curl -X POST \ -H 'Content-Type: application/json' \ -u 'user@email.com:password' \ arusha-coders-api.herokuapp… # response {"objects": {"result": {"jwt": "eyJ0e...", "exp": "DD/MM/YYYY"}}} ``` #### Python initialize ```python # init requirements import requests # set api endpoint base = 'arusha-coders-api.herokuapp…' ``` create a user ```python # request name, username, password = 'First Last', 'user@email.com', 'password' data = {'name': name, 'email': username, 'password': password, 'confirmPassword': password} r = requests.post(base + '/user', data=data) # response r.js …