@12rbah

Нужно ли сервис с API и сайт запускать на разных портах?

Подскажите в чем проблема, когда запускаю api и сайт (имею ввиду визуальную составляющую), то к api невозможно обратится возвращает 404 page not found, если запускаю на разных портах то нормально работает.
r := mux.NewRouter()
        //если убрать эти строки то api работает нормально
       //если не убрать то невозможно будет получить доступ к /api/notes
	fs := http.FileServer(http.Dir("public"))
	r.PathPrefix("/").Handler(fs)
        //
	r.HandleFunc("/api/notes", GetNoteHandler).Methods("GET")
	r.HandleFunc("/api/notes", PostNoteHandler).Methods("POST")
	r.HandleFunc("/api/notes/{id}", PutNoteHandler).Methods("PUT")
	r.HandleFunc("/api/notes/{id}", DeleteNoteHandler).Methods("DELETE")
	server := &http.Server{
		Addr:
		":8080",
		Handler: r,
	}
	log.Println("Listening...")
	err := server.ListenAndServe()
	fmt.Println(err)
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
bitniks
@bitniks
Go/PHP/Symfony developer
Все запросы обрабатываются через FileServer, так как указан корневой уровень. Сделайте, например, для файлов /public, тогда api будет работать. Еще нужно будет этот префикс удалить с помощью http.StripPrefix

fs := http.StripPrefix("/public",  http.FileServer(http.Dir("public")))
r.PathPrefix("/public").Handler(fs)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Разные приложения (процессы) не могут работать на одном порту.
С таким кодом в лог приложения будет выведена ошибка и сразу завершится процесс с кодом ошибки.
log.Fatal(server.ListenAndServe())

Надо еще помнить про CORS.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы