使用Hapi的Javascript Fetch API

时间:2017-05-02 01:00:02

标签: post hapijs payload fetch-api

我用Hapi创建了一个简单的API,它有一条我可以POST的路径,如下所示:

dat <- df[sample(1:4,5e6,replace=TRUE),]
rw <- seq_len(nrow(dat))

system.time({
    apply(X = dat, MARGIN = 1, function(x) diff(range(x)))
})
#STILL RUNNING...

system.time({
    rw <- seq_len(nrow(dat))
    dat[cbind(rw, max.col(dat))] - dat[cbind(rw, max.col(-dat))]
})
#   user  system elapsed 
#   3.48    0.11    3.59 

system.time(do.call(pmax, dat) - do.call(pmin, dat))
#   user  system elapsed 
#   0.23    0.00    0.26 

identical(do.call(pmax, dat) - do.call(pmin, dat),
      dat[cbind(rw, max.col(dat))] - dat[cbind(rw, max.col(-dat))])
#[1] TRUE

我可以在Postman中成功向此路径发送POST请求: Postman Request 它返回预期的响应。但是,当我使用这段Javascript发送请求时:

server.route({
  method: "POST",
  path: "/hello",
  handler: function(request, reply) {
    // It doesn't ever get to here
    return reply({hello: request.payload.name});
  },
  config: {
    validate: {
      payload: {
        name: Joi.string().required()
      }
    }
  }
});

这失败了,并说“值”必须是一个对象。

1 个答案:

答案 0 :(得分:1)

事实证明,我只需要首先对JSON进行字符串化,然后就可以了:

fetch("http://localhost:1111/hello", {
  mode: "cors"
  body: {name: "John Doe"}
}).then(() => {
  console.log("yay! it worked");
});