3

我目前正在使用Deno开发一个概念验证 REST api 应用程序,但我的 post 方法有问题(getAll 等开始工作)。我的请求正文不包含通过 Insomnia 发送的数据。

我的方法:

addQuote: async ({ request, response }: { request: any; response: any }) => {
    const body = await request.body();
    if (!request.hasBody) {
      response.status = 400;
      response.body = { message: "No data provided" };
      return;
    }

    let newQuote: Quote = {
      id: v4.generate(),
      philosophy: body.value.philosophy,
      author: body.value.author,
      quote: body.value.quote,
    };

    quotes.push(newQuote);
    response.body = newQuote;
  },

要求 :

失眠json请求

回复 :

失眠json响应

我把Content-Type - application/json标题。
如果我只返回body.value,它是空的。

感谢帮助 !

4

1 回答 1

4

由于 value 类型是 promise,我们必须在访问 value 之前解决。

尝试这个:

addQuote: async ({ request, response }: { request: any; response: any }) => {
    const body = await request.body(); //Returns { type: "json", value: Promise { <pending> } }
    if (!request.hasBody) {
      response.status = 400;
      response.body = { message: "No data provided" };
      return;
    }
    const values = await body.value;
    let newQuote: Quote = {
      id: v4.generate(),
      philosophy: values.philosophy,
      author: values.author,
      quote: values.quote,
    };

    quotes.push(newQuote);
    response.body = newQuote;
  }
于 2020-09-05T08:56:19.343 回答