golang programs from go.dev
Gorilla's mux package, requests can be matched based on URL host, path, path prefix, schemes, header and query values, and HTTP methods.
go get github.com/gorilla/mux
docker pull mongo
docker image inspect mongo
docker run -d --name mongo-on-docker -p 27888:27017 -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret mongo
#created folder to use for storing MongoDB data
sudo mkdir /var/dbdata
docker run -it -d -v /var/dbdata:/data/db -p 27017:27017 --name mongodb mongo
docker start mongodb
sudo docker exec -it mongodb bash
docker run --link mongo_db_name_container:mongo -p 8081:8081 -e ME_CONFIG_MONGODB_URL="mongodb://mongo:27017" mongo-express
docker run --link mongodb:mongo -p 8081:8081 -e ME_CONFIG_MONGODB_URL="mongodb://mongo:27017" mongo-express
After above DB setup, next time onwards use the following steps :
docker start mongodb
docker run --link mongodb:mongo -p 8081:8081 -e ME_CONFIG_MONGODB_URL="mongodb://mongo:27017" mongo-express
mongo ui -- http://localhost:8081
https://www.mongodb.com/blog/post/mongodb-go-driver-tutorial
mongodb://:@:/?authSource=admin
mongodb://mongoadmin:secret@localhost:27888/?authSource=admin
Cookie based - session holds the auth info.Stateful One.
Token based - JWT , oAuth 2
1.oAuth 2 :
Step -1 : Register App with identity providers such Azure, Facebook,Google. it gives you a client ID and a client secret key
Step -2 : Once hit with above ID & Key, auth server provides Access Token
2.JWT :
Step -1 : After successful login , Access tokens are generated & signed securely.
Step -2 : Subsequent HTTP Request have Authorization Header - bearer token & gets validated at web server end.
1.swagger api in go
https://www.soberkoder.com/swagger-go-api-swaggo/
Code :
import ( "encoding/json" "log" "net/http" "strconv" "time"
_ "swaggo-orders-api/docs" // docs is generated by Swag CLI, you have to import it.
httpSwagger "github.com/swaggo/http-swagger"
"github.com/gorilla/mux"
)
func main() { router := mux.NewRouter() // Create router.HandleFunc("/orders", createOrder).Methods("POST") // Read router.HandleFunc("/orders/{orderId}", getOrder).Methods("GET") // Read-all router.HandleFunc("/orders", getOrders).Methods("GET") // Update router.HandleFunc("/orders/{orderId}", updateOrder).Methods("PUT") // Delete router.HandleFunc("/orders/{orderId}", deleteOrder).Methods("DELETE")
// Swagger
router.PathPrefix("/swagger").Handler(httpSwagger.WrapHandler)
log.Fatal(http.ListenAndServe(":8080", router))
}
http://localhost:8080/swagger/index.html
1.Docker File for golang : https://www.youtube.com/watch?v=USbPCBi_d4U
FROM
RUN
EXPOSE
ENTRYPOINT
1--Make Image : docker build -t gowebapi .
2--Run Image : docker run -p 8088:8080 -tid gowebapi
https://www.youtube.com/watch?v=kd-8mb6HfGA&list=PL3eAkoh7fypqUQUQPn-bXtfiYT_ZSVKmB
DockerFlie :
FROM golang:latest
LABEL maintainer="gophers"
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
ENV PORT 7000
RUN go build
CMD ["./go-mux-api"]
1--Make Image : docker build -t gomuxapi .
2--Run Image : docker run -p 8000:7000 -tid gomuxapi