学习micro过程中,请求api返回失败 500 和 400

waschild1012 · · 192 次点击 · 开始浏览    置顶
在使用micro的时候,使用给的例子greeter,服务启动后,再使用http访问发送请求,报错的 请求无参数返回报错 ``` curl -XPOST -H 'Content-Type: application/json' -d '{}' http://localhost:8080/greeter/say/hello {"id":"go.micro.api.greeter","code":400,"detail":"Name cannot be blank","status":"Bad Request"} ``` 请求有参数返回报错 ``` curl -XPOST -H 'Content-Type: application/json' -d '{"name": "John"}' http://localhost:8080/greeter/say/hello {"id":"go.micro.api","code":500,"detail":"error during request: unknown field \"name\" in go_micro_api.Request","status":"Internal Server Error"} ``` 网上找了很多,没有找到答 小白求解答 开启的服务 ![WechatIMG9021.png](https://static.studygolang.com/190612/6d8fb166a665ce32e6b7e33227c48941.png) greeter.api源码 ``` package main import ( "encoding/json" "log" "strings" hello "github.com/micro/examples/greeter/srv/proto/hello" "github.com/micro/go-micro" "github.com/micro/go-micro/errors" api "github.com/micro/micro/api/proto" "context" ) type Say struct { Client hello.SayService } func (s *Say) Hello(ctx context.Context, req *api.Request, rsp *api.Response) error { log.Print("Received Say.Hello API request") name, ok := req.Get["name"] if !ok || len(name.Values) == 0 { return errors.BadRequest("go.micro.api.greeter", "Name cannot be blank") } response, err := s.Client.Hello(ctx, &hello.Request{ Name: strings.Join(name.Values, " "), }) if err != nil { return err } rsp.StatusCode = 200 b, _ := json.Marshal(map[string]string{ "message": response.Msg, }) rsp.Body = string(b) return nil } func main() { service := micro.NewService( micro.Name("go.micro.api.greeter"), ) // parse command line flags service.Init() service.Server().Handle( service.Server().NewHandler( &Say{Client: hello.NewSayService("go.micro.srv.greeter", service.Client())}, ), ) if err := service.Run(); err != nil { log.Fatal(err) } } ```

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

192 次点击  
加入收藏 微博
1 回复  |  直到 2019-06-12 15:48:16
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传