首页 > 解决方案 > 尝试使用 fetch 执行发布请求时出错

问题描述

我正在开发一个应用程序,它通过 api rest 使用 golang 制作的后端,我想做的是登录,但我遇到了一个问题,那就是当我想用 vue 发出请求时它返回一个错误它说 JSON 输入意外结束,但我向邮递员发出请求,它不会产生任何错误。
这是我的文件vue:

<script>
  import { ref } from '@vue/reactivity';
  export default {
    setup() {
      const email = ref('');
      const password = ref('');

      const submitForm = () => {
        fetch(`http://localhost:8000/api/v1/users/login`, {
          method: 'POST',
          body: JSON.stringify({
            email: email.value,
            password: password.value,
          }),
          headers: {
            'Content-Type': 'application/json',
          },
        })
          .then((res) => res.json())
          .catch((error) => console.error(`Error: ${error}`))
          .catch((response) => console.log(`Success: ${response}`));
      };

      return {
        email,
        password,
        submitForm,
      };
    },
  };
</script>

以防万一这是我用 golang 制作的后端:

func Login(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")

    var u model.User

    if err := json.NewDecoder(r.Body).Decode(&u); err != nil {
        http.Error(w, "format incorrect of json", http.StatusBadRequest)
        return
    }

    user, err := function.VerificationLogin(u.Email, u.Password)
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    token, err := jwt.CreateToken(user)
    if err != nil {
        http.Error(w, "ups "+err.Error(), http.StatusBadRequest)
        return
    }

    http.SetCookie(w, &http.Cookie{
        Name:    "token",
        Value:   token,
        Expires: time.Now().Add(1 * time.Hour),
    })
    w.WriteHeader(http.StatusOK)
}

标签: vue.jsgo

解决方案


推荐阅读