1
0
mirror of https://github.com/actix/examples synced 2024-11-23 22:41:07 +01:00
examples/databases/mysql/README.md
2023-07-17 17:55:17 +01:00

2.2 KiB

MySQL

This RESTful Actix Web API examples illustrates how to connect to MySQL database using a MySQL client library implemented in Rust; e.g., MySQL database driver.

Below APIs are supported:

  • Add Bank
  • Add Branch
  • Add Teller
  • Add Customer
  • Get Bank
  • Get Branch
  • Get Teller
  • Get Customer

The RESTful Actix Web API has below listed dependencies:

  • Actix Web web framework for Rust
  • Serde for serializing and deserializing Rust data structures
  • MySQL Server MySQL database server
  • MySQL MySQL database driver

Instructions

NOTE:

You may need to ensure that you are running the commands with the correct MySQL user/password.

  1. Access MySQL Server:

    Log in to the MySQL Server using a user account that has the CREATE DATABASE privilege.

  2. Create database:

    CREATE DATABASE my_bank;
    
  3. Create tables in the database:

    Directory "mysql\sql" contains below listed ".sql" files:

    • bankdetails.sql
    • branch_details.sql
    • teller_details.sql
    • customer_details.sql

    Copy the contents of each of the ".sql" and execute them separately on MySQL Server. This will create four tables in the database.

  4. Create .env file:

    SERVER_ADDR=127.0.0.1:8080
    MYSQL_USER=XXX
    MYSQL_PASSWORD=XXX
    MYSQL_HOST=127.0.0.1
    MYSQL_PORT=3306
    MYSQL_DBNAME=my_bank
    

    Update "MYSQL_USER" and "MYSQL_PASSWORD" values with the correct MySQL user/password. If your password contains dollar sign "$", then remember to escape it eg "123$abc" will need to be changed to "123\$abc"

  5. Run the server:

    cargo run
    
  6. Using a different terminal send an HTTP GET/POST requests to the running server:

    Directory "mysql/apis" contains below listed API's files:

    • addbank.txt
    • addbranch.txt
    • addteller.txt
    • addcustomer.txt
    • getbank.txt
    • getbranch.txt
    • getteller.txt
    • getcustomer.txt

    Copy the curl request on each of the ".txt" and execute them on separate terminals. Each ".txt" contains curl request and expected JSON response data.