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

waschild1012 · · 1354 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

在使用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大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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