Как вызывать api внутри localhost
у меня есть настроенный nginx который имеет сертификаты подписанные доверенным центром. вот конфигурация
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name site.ru;
ssl_certificate $HOME/.site.crt;
ssl_certificate_key $HOME/.site.key;
if ($scheme != "https") {
return 301 https://localhost:8282$request_uri;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
proxy_pass http://localhost:8282/;
}
За этим nginx на 8282 порту висит сервер golang с api. Если я пытаюсь обратиться к api из другой сети(например браузер в смартфоне+мобильные дынные) по https://domain.name/myapi/?param1=value, при условии что api не получает данные от других api на этом же сервере, то я получаю ответ от своего сервера корректный. Но если я пытаюсь вызвать api которые внутри себя вызывают еще какие то api, то получаю некорректный результат, так как api не могут общаться между собой находясь в одной сети(на одном компе).
Например такое
func Create_user(w http.ResponseWriter, r *http.Request) {
encode_data := Get_encoded_form_values(w, r)
decode_data := JSON_struct{}
tmplsrv.Decoding(encode_data, &decode_data)
params := url.Values{
"email": {r.FormValue("email")},
"password": {r.FormValue("password")},
}
//обращаюсь к дргому api который проверит есть ли такой пользователь в базе
check_user_answer := Requester("https://localhost/check_user/", w, r, encode_data, params)
answer := Answer{}
tmplsrv.Decoding(check_user_answer, &answer)
if answer.Answr == "NotFound" {
//Обращаюсь к другому api за новыйм токеном
new_token_answer := Requester("https://localhost/create_token/", w, r, encode_data, params)
tmplsrv.Decoding(new_token_answer, &answer)
decode_data.JWT_token = answer.Answr
database.Inserting_user_in_db(tmplsrv.Encoding(decode_data))
w.WriteHeader(http.StatusCreated)
w.Write([]byte("created"))
}
if answer.Answr == "" {
// я всегда попадаю в это условие так как не удалось обратиться к api которые проверяют наличие пользователя и которые получают новый токен для нового пользователя
w.Write([]byte("Unable to create user"))
} else {
w.Write([]byte("User exists"))
}
}
Но если я отключу свой nginx то смогу обращаться к api по внутреннему ip:port/uri?values.
Если использовать мой домен для общения api друг с другом, то тоже ничего не выходит. Как настроить чтобы api могли общаться между собой находясь в localhost-е не отказвыясь при этом от nginx?
Ответы (1 шт):
Заработало при использовании http://localhost:8282/uri?value при вызове api из api