Итак, я пытаюсь запустить небольшое приложение gRP C в GOlang. Команды gPR C работают нормально, однако я также хочу иметь возможность взаимодействовать с моей базой данных из URL. До того, как я добавил сервер gRP C, он работал нормально, но после того, как сервер gRP C или «обычный» сервер были заблокированы и не смогли запуститься. Есть ли способ, чтобы оба имели интерфейс gRP C и могли звонить с URL?
Код моего сервера:
func main(){
createItem("test", "test")
http.HandleFunc("/get/", get)
http.HandleFunc("/set/", set)
listener, err := net.Listen("tcp", ":4000")
if err != nil{
log.Fatal("Listener error: ", err)
}
s := grpc.NewServer()
pb.RegisterGetSetServiceServer(s, &server{})
reflection.Register(s)
s.Serve(listener)
log.Printf("serving rpc on port %d", 4000)
err = http.Serve(listener, nil)
if err != nil{
log.Fatal("error serving: ", err)
}
}
func (s *server) Get(ctx Context, req *pb.GetRequest) (*pb.Response, error) {
var body string
log.Printf("Recived: %v", req.GetTitle())
for _, val := range database{
if req.GetTitle() == val.Title{
body = val.Body
return &pb.Response{Body:body}, nil
}
}
return &pb.Response{Body:"Nothing found"}, nil
}
func get(writer http.ResponseWriter, req *http.Request ){
var value string
v := req.FormValue("key")
for _, val := range database{
if val.Title == v {
value = val.Body
}
}
fmt.Fprintln(writer, value)
}