- 有的api只需要展示数据,不需要使用到grpc
- 这时的http api也可以调用grpc服务
- http api结合nginx使用
- grpc不让用户通过grpc访问,grpc只在内部进行流转,用户仅仅是通过http api访问
package main
import (
"fmt"
"github.com/micro/go-micro/v2/web"
"net/http"
)
func main() {
service := web.NewService(
web.Name("go.tan.api.http.course"),
)
service.HandleFunc("/test", func(writer http.ResponseWriter, request *http.Request) {
writer.Write([]byte("http api test..."))
})
service.Init()
if err := service.Run(); err != nil {
fmt.Println(err)
}
}
package main
import (
"context"
"fmt"
"github.com/micro/go-micro/v2/client/grpc"
"github.com/micro/go-micro/v2/web"
"go-micro-train/src/course"
"log"
"net/http"
)
func main() {
service := web.NewService(
web.Name("go.tan.api.http.course"),
)
client := grpc.NewClient()
service.HandleFunc("/test", func(writer http.ResponseWriter, request *http.Request) {
writer.Write([]byte("http api test..."))
courseService := course.NewCourseService("go.tan.api.course", client)
response, _ := courseService.ListForTop(context.Background(), &course.ListRequest{Size: 10})
log.Println(response.Result)
})
service.Init()
if err := service.Run(); err != nil {
fmt.Println(err)
}
}