REST methods (POST, PUT, DELETE)

Using Gin bindings with PUT and DELETE methods

Report a typo

Below is a snippet of Go code that is missing some elements. This program is designed to run an API server for a blog.

Fill in the blanks using the appropriate keywords and methods to ensure the program runs correctly.

Fill in the gaps with the relevant elements
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

type BlogPost struct {
	Title   string `json:"title"`
	Content string `json:"content"`
}

type binding struct {
	BlogPostID uint `uri:"id"`
}

var blogPostStore = make(map[uint]BlogPost)

func main() {
	gin.SetMode(gin.ReleaseMode)
	g := gin.New()

	blogGroup := g.("/blog")

    // ... other API endpoints

	// update a blog post
	blogGroup.("/:id", func(ctx *gin.Context) {
		var bindings binding

		if err := ctx.BindUri(); err != nil {
			ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}

		var blogPost BlogPost
		if err := ctx.ShouldBindJSON(&blogPost); err != nil {
			ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}

		if _, exists := blogPostStore[bindings.BlogPostID]; exists {
			blogPostStore[bindings.BlogPostID] = blogPost
			ctx.JSON(, blogPost)
		} else {
			ctx.JSON(http.StatusNotFound, gin.H{"error": "BlogPost isn't found!"})
		}
	})

	// delete a blog post
	blogGroup.DELETE(, func(ctx *gin.Context) {
		var bindings binding

		if err := ctx.(&bindings); err != nil {
			ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}

		if _, exists := blogPostStore[bindings.BlogPostID]; exists {
			delete(blogPostStore, bindings.BlogPostID)
			ctx.JSON(http.StatusOK, gin.H{"message": "BlogPost is deleted!"})
		} else {
			ctx.JSON(, gin.H{"error": "BlogPost isn't found!"})
		}
	})

	g.Run(":8080")
}
&bindings"delete-blogpost"BindUriGrouphttp.StatusNotFound":id"PUTbindingshttp.StatusOK

Create a free account to access the full topic