Skip to content

techorgx/customer_service

Repository files navigation

Setup

Note:- If You have already setup JAVA_17 then skip this step

  1. Java 17 Installation on macOS
    brew tap homebrew/cask-versions
    brew install --cask temurin17
    
  2. Set JAVA_17 Env value. Follow step 2 here

How build & run this project?

Running locally

Install and run DynamoDB on your local machine:

  1. Install AWS CLI and Configure

    1. Install AWS CLI Run following commands
      • curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
      • sudo installer -pkg ./AWSCLIV2.pkg -target /
    2. To verify AWS CLI Run following commands
      • which aws
      • aws --version
    3. Configure AWS CLI
      • aws configure
        • Enter AccessKey : "local"
        • Enter SecretKey : "12345"
        • Enter region : "us-west-2"
        • Enter output : "json"
    4. Reference
  2. Install DynamoDB

    1. Download DynamoDB
    2. Extract downloaded file
    3. navigate to the directory where you extracted DynamoDBLocal.jar, and enter the following command.
      • java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
    4. Verify DynamoDB
      • aws dynamodb list-tables --endpoint-url http://localhost:8000
    5. Create table for Customer
      • aws dynamodb create-table --cli-input-json file://customer-table-definition.json --endpoint-url http://localhost:8000
    6. Reference
  3. Visualizing the DynamoDB Table data

    1. Download and Install NoSQL Workbench
    2. Open NoSQL Workbench and Setup DynamoDB local connection
      • Click on operation builder
      • Click on Add connection
      • Click on DynamoDB Local
    3. Reference

There are a few options to run the application (from more flexible to least)

  1. You can just use the SpringBoot run functionality that is default in IntelliJ or SpringTools in Eclipse.

  2. Start the service with Maven.

    mvn spring-boot:run -Dspring.profiles.active=local
  3. Package the jar file and run it

mvn clean package
java -jar ./target/customer-service-exec.jar --spring.profiles.active=local

Invoking Customer Service

You can use your favourite REST client (e.g. Postman)

Or you can use curl

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -H "client-id: test" \
  -H "Authorization: Bearer <JWT TOKEN>" \
  http://localhost:7979/v1/customer-service/add-customer \
  -d '{<DATA>}'
curl \
  -X GET \
  -H "Content-Type: application/json" \
  -H "client-id: test" \
  -H "Authorization: Bearer <JWT TOKEN>" \
  "http://localhost:7979/v1/customer-service/get-customer?id=johndoe"
curl \
  -X GET \
  -H "Content-Type: application/json" \
  -H "client-id: test" \
  -H "Authorization: Bearer <JWT TOKEN>" \
  "http://localhost:7979/v1/customer-service/delete-customer?id=johndoe"
curl \
  -X PUT -i \
  -H "client-id: test" \
  -H "Authorization: Bearer <JWT TOKEN>" \
   http://localhost:7979/v1/customer-service/update-customer \  
  -d '{<DATA>}'      

You can bypass Authentication in local environment by sending header "client-id: test"

curl \
  -X POST -i \
  -H "Content-Type: application/json" \
  -H "client-id: test" \
  http://localhost:7979/v1/customer-service/add-customer \
  -d '{<DATA>}'
curl \
  -X GET -i \
  -H "Content-Type: application/json" \
  -H "client-id: test" \
  "http://localhost:7979/v1/customer-service/get-customer?id=johndoe"
curl \
  -X GET -i \
  -H "Content-Type: application/json" \
  -H "client-id: test" \
  "http://localhost:7979/v1/customer-service/delete-customer?id=johndoe"
curl \
  -X PUT -i \
  -H "Content-Type: application/json" \
  -H "client-id: test" \
  http://localhost:7979/v1/customer-service/update-customer \        
  -d '{<DATA>}'

Or send this JWT on local environment

curl \
  -X POST -i \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2OTc0NTA0NTksImlzcyI6Ind3dy5hY21lLmNvbSIsInN1YiI6ImYxZTMzYWIzLTAyN2YtNDdjNS1iYjA3LThkZDhhYjM3YTJkMyJ9.A2zgvSQ6IK4W0hRnDlPkEMVEMmz6fGGQI-6qzT20PSVS8auoXA7FPA67yK-t-YtXWE2qOsSuzgWWb1TyD0zpS2IZNiJ03augB2zRSYq6cOGVyP5wfllGxJMjc7Bpje6chqOqUetG_2H0I8tnp-qd0GBbShCmK7-ZwV1WXQR6b7fyzSqAxf13TR4gCMiD1A8AnkVJqXlEGJBejhy3ooQ24osxo3QMoWpHFR-8Jr33-9USs8_zesBUdRqEbJLDU_eVBiCDZEOipPHF6o_ZmW1emBQLRc7d24f6W2omi5kzHN4npiOraFkaNeS1QeasOM002GcoHo4ClJslUME_3sEVnw" \
  http://localhost:7979/v1/customer-service/add-customer \
  -d '{<DATA>}'
curl \
  -X GET -i \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2OTc0NTA0NTksImlzcyI6Ind3dy5hY21lLmNvbSIsInN1YiI6ImYxZTMzYWIzLTAyN2YtNDdjNS1iYjA3LThkZDhhYjM3YTJkMyJ9.A2zgvSQ6IK4W0hRnDlPkEMVEMmz6fGGQI-6qzT20PSVS8auoXA7FPA67yK-t-YtXWE2qOsSuzgWWb1TyD0zpS2IZNiJ03augB2zRSYq6cOGVyP5wfllGxJMjc7Bpje6chqOqUetG_2H0I8tnp-qd0GBbShCmK7-ZwV1WXQR6b7fyzSqAxf13TR4gCMiD1A8AnkVJqXlEGJBejhy3ooQ24osxo3QMoWpHFR-8Jr33-9USs8_zesBUdRqEbJLDU_eVBiCDZEOipPHF6o_ZmW1emBQLRc7d24f6W2omi5kzHN4npiOraFkaNeS1QeasOM002GcoHo4ClJslUME_3sEVnw" \
  "http://localhost:7979/v1/customer-service/get-customer?id=johndoe"
curl \
  -X GET -i \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2OTc0NTA0NTksImlzcyI6Ind3dy5hY21lLmNvbSIsInN1YiI6ImYxZTMzYWIzLTAyN2YtNDdjNS1iYjA3LThkZDhhYjM3YTJkMyJ9.A2zgvSQ6IK4W0hRnDlPkEMVEMmz6fGGQI-6qzT20PSVS8auoXA7FPA67yK-t-YtXWE2qOsSuzgWWb1TyD0zpS2IZNiJ03augB2zRSYq6cOGVyP5wfllGxJMjc7Bpje6chqOqUetG_2H0I8tnp-qd0GBbShCmK7-ZwV1WXQR6b7fyzSqAxf13TR4gCMiD1A8AnkVJqXlEGJBejhy3ooQ24osxo3QMoWpHFR-8Jr33-9USs8_zesBUdRqEbJLDU_eVBiCDZEOipPHF6o_ZmW1emBQLRc7d24f6W2omi5kzHN4npiOraFkaNeS1QeasOM002GcoHo4ClJslUME_3sEVnw" \
  "http://localhost:7979/v1/customer-service/delete-customer?id=johndoe"
curl \
  -X PUT -i \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2OTc0NTA0NTksImlzcyI6Ind3dy5hY21lLmNvbSIsInN1YiI6ImYxZTMzYWIzLTAyN2YtNDdjNS1iYjA3LThkZDhhYjM3YTJkMyJ9.A2zgvSQ6IK4W0hRnDlPkEMVEMmz6fGGQI-6qzT20PSVS8auoXA7FPA67yK-t-YtXWE2qOsSuzgWWb1TyD0zpS2IZNiJ03augB2zRSYq6cOGVyP5wfllGxJMjc7Bpje6chqOqUetG_2H0I8tnp-qd0GBbShCmK7-ZwV1WXQR6b7fyzSqAxf13TR4gCMiD1A8AnkVJqXlEGJBejhy3ooQ24osxo3QMoWpHFR-8Jr33-9USs8_zesBUdRqEbJLDU_eVBiCDZEOipPHF6o_ZmW1emBQLRc7d24f6W2omi5kzHN4npiOraFkaNeS1QeasOM002GcoHo4ClJslUME_3sEVnw" \
  http://localhost:7979/v1/customer-service/update-customer \        
  -d '{<DATA>}'

Sample Data for POST and PUT requests

{"username": "johndoe", "firstName": "John", "lastName": "Doe", "address": "123 Main Street", "city": "Anytown", "pincode": "12345", "email": "[email protected]"}

JWT token algo

{
  "alg": "RS256",
  "typ": "JWT"
}

Use local-customer-service-public.pem to encode the token on local machine.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •