如何使用 post fetch 请求将反应对象发送到 rails api? 406错误

我目前正在开发一个使用 react 和 ruby​​ on rails 的项目。我现在的目标是在提交我的反应表单时使用 fetch 发送一个 post 请求,以在我的后端 api 中创建和存储我的用户。我的问题是,后端没有正确接收我的数据,导致 406 错误。我觉得我已经尝试了一切,我快疯了,救命。

反应代码:

形式-

<form onSubmit={handleSubmit}> 
                <label>Name:</label>
                <input type="text" required value={name} onChange={handleNameChange} name="name" placeholder="name"/>
                <label>Password:</label>
                <input type="password" required value={password} onChange={handlePasswordChange} name="password" placeholder="password"/>
                <input type="submit" value="Create account"/>
            </form>

方法 -

 const [name,setName] = useState("")
    const [password,setPassword] = useState("")

    const handleNameChange = (e) => {
        setName(e.target.value);
    }

    const handlePasswordChange = (e) => {
        setPassword(e.target.value);
    }

    const handleSubmit = (e) => {
        e.preventDefault();
        const data = {name,password}
    
        fetch("http://localhost:3000/users",{
            method: 'POST',body: JSON.stringify(data),headers: {
                Content_Type: "application/json",}
        })

轨道代码:

用户控制器-

def create
      user = User.create(user_params)
      if user.valid?
        payload = {user_id: user.id}
        token = encode_token(payload)
        render json: { user: user,jwt: token }
      else
        render json: { error: 'failed to create user' },status: :not_acceptable
      end
    end
  
    private
  
    def user_params
      params.permit(:name,:password)
    end

错误 - backend error

EDAshiyan951 回答:如何使用 post fetch 请求将反应对象发送到 rails api? 406错误

看起来 user.valid? 返回 false,因此您的 else 语句开始:

render json: { error: 'failed to create user' },status: :not_acceptable

status: :not_acceptable 生成 406 错误。

您可能应该包括用户无效的原因,并返回错误的请求响应:

render json: { error: user.errors.full_messages},status: :bad_request
本文链接:https://www.f2er.com/700.html

大家都在问