【问题标题】:Issue with PUT when using custom id in JSON server在 JSON 服务器中使用自定义 ID 时出现 PUT 问题
【发布时间】:2021-04-09 21:09:38
【问题描述】:

我正在试用 JSON 服务器。我有一个基本问题,即在我们的 api 中使用“customids”而不是“id”。以下是我的设置

我有一个以employeeid 作为id(而不是使用id)的员工端点

1)db.json 看起来像

             "employees": [
               {
                 "employeeid": 1,
                 "fname": "manju",
                 "lname": "s"
               },
               {
                 "employeeid": 2,
                 "fname": "albert",
                 "lname": "dawson"
               },{
    "fname": "ramesh",
    "lname": "watsons",
    "employeeid": 3  }]

2) 使用启动 json 服务器 json-server --id employeeid db.json

3)如果我做一个 POST,它会按预期自动生成员工 ID。一切都很好,直到这里

4) 如果我在不发送员工 ID 的情况下执行 PUT,那么它会完全删除员工 ID 我的意思是,假设我想更新员工 id 2 的名字(比如从 albert 到 albertin),然后在 PUT 正文中发送如下

PUT 网址 http://localhost:3000/employees/2

PUT Body(没有发送员工 ID。因为它是在 URL 中发送的) { “fname”:“阿尔伯丁”, “lname”:“道森” }

PUT 运行成功,但如果我执行 GET,我会得到以下结果 (员工 ID 消失)

    {
        "employeeid": 1,
        "fname": "manju",
        "lname": "s"
    },
    {
        "fname": "albertin",
        "lname": "dawson"
    },
    {
        "fname": "ramesh",
        "lname": "watsons",
        "employeeid": 3  }
]```
  
however, if I used an "id" instead of employeeid this used to work fine. Can anyone please explain if we can avoid sending employeeid in the body again

thanks

【问题讨论】:

    标签: javascript reactjs json-server


    【解决方案1】:

    你可以这样做

    const employer = [{
        "employeeid": 1,
        "fname": "manju",
        "lname": "s"
      },
      {
        "employeeid": 2,
        "fname": "albert",
        "lname": "dawson"
      }, {
        "fname": "ramesh",
        "lname": "watsons",
        "employeeid": 3
      }
    ]
    
    const newdata = {
        "employeeid": 2,
        "fname": "new albert",
        "lname": "dawson"
    }
    
    const update = employer.map((x) => x.fname === "albert" ? newdata : x)
    
    console.log(update)

    【讨论】:

    • sry 不确定我的问题是否被误解。我的实际意思是使用 POSTMAN 进行 PUT 调用。因此,当您执行 PUT 时,我必须发送所有详细信息,包括正文中的员工 ID。我的问题是有没有办法不在正文中发送“employeeid”,因为我已经在 URL 中发送它
    • 对不起你的意思我不明白,也许你的意思是例如 http://localhost:8000/employer/{id}/你不想在 url 中发布 id,也许你可以使用 params 作为替代
    • 你可以显示更多你的问题
    • 在我的原始问题中查看我上面的第 4 点。我所做的是在 PUT 中以localhost:3000/employees/2 发送 URL,其中 2 是需要更新的员工 ID PUT BODY 我在没有员工 ID 的情况下发送,如果您查看我附加的响应,json 服务器会从完全响应但是,如果我使用“id”而不是“employeeid”,它不会从响应中删除“id”。它是 JSON 服务器特有的吗?
    • 嗨,您可以将 body 用作参数 body {"id": Employerid} 但您必须将参数 url 删除为 http://localhost:8000/employer/,然后从中获取参数 id身体
    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2021-11-18
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多