Categorygithub.com/WeDias/golang-test-api
modulepackage
0.0.0-20231114165657-0cb2be48c277
Repository: https://github.com/wedias/golang-test-api.git
Documentation: pkg.go.dev

# README

License Gitpod Ready-to-Code Go CI Docker Image CI

golang-test-api

A simple CRUD API made with Go, Postgres, FIber, Gorm and Docker.

  • Cloning the repository

    To clone the repository run the following command:

    $ git clone https://github.com/WeDias/golang-test-api.git
    
  • How to install and run (docker)

    Inside the newly cloned project folder run the following command:

    $ docker compose up
    # or
    $ docker-compose up
    
  • How to install and run (manually)

  • Installing the dependencies and setup env

    Inside the newly cloned project folder run the following command to install the dependencies:

    $ go mod download
    

    To configure the environment run this command:

    $ bash setup-env.sh
    

    It will generate a .env file with the variables below, you can edit to adapt with your database settings.

    PG_HOST=localhost
    PG_PASS=postgres
    PG_USER=postgres
    PG_DBNM=postgres
    PG_PORT=5432
    
    API_PORT=:3000
    

    After that, run the ddl-database.sql file in your database which is inside the resources folder.

  • Running the application

    Inside the project, run the following command to run the application:

    $ go run main.go
    
  • API

    Create a new product:

    # POST /api/v1/product
    
    $ curl --request POST \
    --url http://localhost:3000/api/v1/product \
    --header 'Content-Type: application/json' \
    --data '{
      "name": "product1",
      "price": 10.99,
      "stock": 10
    }'
    
    # > {"id":1,"name":"product1","price":10.99,"stock":10}
    

    Get all products:

    # GET /api/v1/product
    
    $ curl --request GET \
    --url http://localhost:3000/api/v1/product
    
    # > [{"id":1,"name":"product1","price":10.99,"stock":10}]
    

    Get a product by id:

    # GET /api/v1/product/1
    
    $ curl --request GET \
    --url http://localhost:3000/api/v1/product/1
    
    # > {"id":1,"name":"product1","price":10.99,"stock":10}
    

    Update a product by id:

    # PUT /api/v1/product/1
    
    $ curl --request PUT \
    --url http://localhost:3000/api/v1/product/1 \
    --header 'Content-Type: application/json' \
    --data '{
      "name": "a product",
      "price": 8.99,
      "stock": 5
    }'
    
    # > {"id":1,"name":"a product","price":8.99,"stock":5}
    

    Delete a product by id:

    # DELETE /api/v1/product/1
    
    $ curl --request DELETE \
    --url http://localhost:3000/api/v1/product/1
    
    # > {"id":1,"name":"a product","price":8.99,"stock":5}
    

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author