gpt4 book ai didi

go - 将 web api 暴露给使用 Golang 接受 json 和/或参数的第三方

转载 作者:数据小太阳 更新时间:2023-10-29 03:26:03 28 4
gpt4 key购买 nike

我最近开始学习 GoLang。我的目标是公开一个 webapi。这应该能够接受一个 json 对象并且应该用另一个 json 对象响应。我没有找到足够的资源来学习如何让它工作。我真的很感谢在这方面的任何帮助。我的一段代码如下所示。

func HelloService(res http.ResponseWriter, req *http.Request){
io.WriteString(res,"Welcome to service")
}

func main(){
http.HandleFunc("/", HelloService)
http.ListenAndServe(":8080",nil)
http.HandleFunc("/saveuser", saveUser)
}

func saveUser(res http.ResponseWriter, req *http.Request){
ConfigurationRepository.SaveUser(User) //I want to receive an User object when this service is being consumed
}

最佳答案

包装“net/http”的http 包会很有帮助。示例:

https://github.com/emicklei/go-restful

https://github.com/gin-gonic/gin

这是一个帮助您入门的简单服务:

package main

import (
"github.com/emicklei/go-restful"
"log"
"net/http"
)

type User struct {
Name string
}

func postOne(req *restful.Request, resp *restful.Response) {
newUser := new(User)
err := req.ReadEntity(newUser)
if err != nil {
resp.WriteErrorString(http.StatusBadRequest, err.Error())
return
}

log.Printf("new user: '%v'", newUser)
}

func main() {
ws := new(restful.WebService)
ws.Path("/users")
ws.Consumes(restful.MIME_JSON)
ws.Produces(restful.MIME_JSON)

ws.Route(ws.POST("").To(postOne).
Param(ws.BodyParameter("User", "A User").DataType("main.User")))

restful.Add(ws)

http.ListenAndServe(":8080", nil)
}

这是一个通过发布单个用户来测试服务的 curl:

curl -v -H "Content-Type: application/json" -XPOST "localhost:8080/users" -d '{"name": "Joe"}'

关于go - 将 web api 暴露给使用 Golang 接受 json 和/或参数的第三方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41579963/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com