Deno post方法为空的请求正文

问题描述

我目前正在使用 Deno 开发概念验证的REST api应用,而我的 post方法遇到了问题(getAll等了)。我的请求的正文不包含因失眠而发送的数据

我的方法

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;
  },

请求:

insomnia json request

响应:

insomnia json response

我将Content-Type - application/json放在标题中。
如果我只返回body.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;
  }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...