@D_K_D
Junior

Как сделать так чтоб бэкенд все присланные данные записал и их можно было запросить фронтендом?

Есть фронтенд который присылает данные first_name = введённое имя , last_name = введённая фамилия в бэкенд. Как сделать так чтоб бэкенд все присланные данные записал и их можно было запросить фронтендом GET . Только начинаю изучать бэкенд . Не судите строго за код и за знание языка GO .

package main
    import (
        "log"
        "net/http"
    	"fmt"
        "encoding/json"
    	"io/ioutil"
        "github.com/gorilla/handlers"
    	"github.com/gorilla/mux"
    )
    type Response struct {
    	Status string `json:"status"`
    }
    type Names struct {
    	FirstName  string `json:"first_name"`
    	LastName string `json:"last_name"`
    }
    
    func postName(w http.ResponseWriter,r *http.Request){
    	if r.Method == "OPTIONS" {
    		return
    	}
    	b, err := ioutil.ReadAll(r.Body)
    	if err != nil {
    		// check err
        }
        
        var n Names
        
    	if err := json.Unmarshal(b, &n); err != nil {
    		// check err
    	}
    	log.Printf("FirstName: %v , LastName: %v \n", n.FirstName, n.LastName)  // выводит отправленные данные
    	res, err := json.Marshal(n)
    	if err != nil {
    		// check err
    	}
    	w.Header().Set("content-type", "application/json")
        w.Write(res)  
    }
    
    func getName(w http.ResponseWriter,r *http.Request){
    	w.Header().Set("Content-Type", "application/json")
    	json.NewEncoder(w).Encode(Response{Status: "OK"})
    }
    
    func main() {
        fmt.Println("Start")
        router := mux.NewRouter()
        router.HandleFunc("/get",getName).Methods("GET")
        router.HandleFunc("/post",postName).Methods("POST")
    
        fmt.Println("Listen and Server")
        headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"})
        originsOk := handlers.AllowedOrigins([]string{"http://localhost:8080", "http://localhost:8081", "http://localhost:3000"})
        methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "PATCH", "OPTIONS", "DELETE"})
        credentialsOk := handlers.AllowCredentials()
    
        log.Fatal(http.ListenAndServe(":8000" , handlers.CORS(headersOk, originsOk, methodsOk, credentialsOk)(router)))
    }

Чтобы что то похожее было только состоящее из first_name и last_name
5f57df87a42fc224210411.png
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
2ord
@2ord
Вот изменение:
// res, err := json.Marshal(n)
	// if err != nil {
	// 	// check err
	// }
	names := make([]Names, 0)
	names = append(names, n)
	w.Header().Set("content-type", "application/json")
	json.NewEncoder(w).Encode(names)


originsOk := handlers.AllowedOrigins([]string{"http://localhost:8080", "http://localhost:8081", "http://localhost:3000", "https://www.apirequest.io"})
(добавил "https://www.apirequest.io" для CORS)
Чтобы проверить, зайди на https://www.apirequest.io и заполни форму:
POST http ://localhost:8000/post
JSON
{"first_name": "John", "last_name": "Smith"}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы