json-server我们可以使用其他密钥而不是id来发布和发出请求

时间:2017-04-07 12:36:28

标签: npm json-server

我在前端测试时使用假api。

我已经看到在json-server包中放置或发布你的数据需要id,我的问题是我可以使用不同的密钥而不是id for ex。

{
  id: 1, ---> i want to change this with my custom id
  name: 'Test'
} 

2 个答案:

答案 0 :(得分:4)

让我们看看 json-server 包的CLI选项: $ json-server -h

...
--id, -i   Set database id property (e.g. _id)   [default: "id"]
...

让我们尝试使用名为“ customId ”的新ID启动json-server(例如): json-server --id customId testDb.json

testDb.json 文件的结构:$ cat testDb.json

{
  "messages": [
    {
      "customId": 1,
      "description": "somedescription",
      "body": "sometext"
    }
  ]
}

通过$.ajax函数(或通过Fiddler / Postman /等)发出简单的POST请求。请求的Content-type应设置为application/json - 可以在此项目的github页面上找到解释:

  

POST,PUT或PATCH请求应包含Content-Type:application / json标头,以在请求正文中使用JSON。否则,它将导致200 OK,但不会对数据进行任何更改。

所以...从浏览器发出请求:

$.ajax({
  type: "POST",
  url: 'http://127.0.0.1:3000/messages/',
  data: {body: 'body', description: 'description'},
  success: resp => console.log(resp),
  dataType: 'json'
});

转到testDb并查看结果。添加了新的块。 id自动添加了在控制台cmd的--id key中指定的所需名称。

{ "body": "body", "description": "description", "customId": 12 }

瞧!

答案 1 :(得分:1)

在需要自定义ID的情况下,我想出了使用自定义路由的方法: json服务器--watch db.json --routes route.json

routes.json:

{ "/customIDroute/:cusomID" : "/customIDroute?cusomID=:cusomID" }