Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在node express中的DELETE endpoint中找不到参数_Javascript_Node.js_Express - Fatal编程技术网

Javascript 在node express中的DELETE endpoint中找不到参数

Javascript 在node express中的DELETE endpoint中找不到参数,javascript,node.js,express,Javascript,Node.js,Express,我无法在我的删除端点中访问提供的url参数,我不知道为什么。获取、发布和放置工作都很好 const express = require("express"); const app = express(); app.use(express.json()); const courses = [ {id: 1, name: 'course1'}, {id: 2, name: 'course2'}, {id: 3, name: 'course3'}, ]; app.dele

我无法在我的删除端点中访问提供的url参数,我不知道为什么。获取、发布和放置工作都很好

const express  = require("express");
const app = express();
app.use(express.json());

const courses = [
    {id: 1, name: 'course1'},
    {id: 2, name: 'course2'},
    {id: 3, name: 'course3'},
];

app.delete('/api/courses/:id', (res, req) => {
    console.log(req.params.id);
});
我在提供url“localhost:5000/api/courses/1”的Postman中执行了删除操作,得到了以下响应:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Error</title>
    </head>
    <body>
        <pre>TypeError: Cannot read property &#39;id&#39; of undefined
            <br> &nbsp; &nbsp;at app.delete (C:\Users\Ove\WebstormProjects\Vidley\index.js:84:28)
            <br> &nbsp; &nbsp;at Layer.handle [as handle_request] (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\layer.js:95:5)
            <br> &nbsp; &nbsp;at next (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\route.js:137:13)
            <br> &nbsp; &nbsp;at Route.dispatch (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\route.js:112:3)
            <br> &nbsp; &nbsp;at Layer.handle [as handle_request] (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\layer.js:95:5)
            <br> &nbsp; &nbsp;at C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\index.js:281:22
            <br> &nbsp; &nbsp;at param (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\index.js:354:14)
            <br> &nbsp; &nbsp;at param (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\index.js:365:14)
            <br> &nbsp; &nbsp;at Function.process_params (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\index.js:410:3)
            <br> &nbsp; &nbsp;at next (C:\Users\Ove\WebstormProjects\Vidley\node_modules\express\lib\router\index.js:275:10)
        </pre>
    </body>
</html>

错误
TypeError:无法读取属性';身份证号码';未定义的

在app.delete(C:\Users\Ove\webstoreprojects\Vidley\index.js:84:28)
在Layer.handle[作为handle\u请求](C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\Layer.js:95:5)
下一步(C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\route.js:137:13)
在Route.dispatch(C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\Route.js:112:3)
在Layer.handle[作为handle\u请求](C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\Layer.js:95:5)
在C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\index.js:281:22
在参数处(C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\index.js:354:14)
在参数处(C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\index.js:365:14)
在Function.process_参数处(C:\Users\Ove\webstoreprojects\Vidley\node_modules\express\lib\router\index.js:410:3)
下一步(C:\Users\Ove\webstoreprojects\Vidley\node\u modules\express\lib\router\index.js:275:10)

谁能给我解释一下这里发生了什么事?只有DELETE端点的行为是这样的,所有其他端点都可以

Express传递处理程序
(req,res)
,而不是
(res,req)
,因此您的
req
实际上是
res
,没有
参数
字段。

您在正文中发送了什么吗?尝试发送一个空对象或其他东西。也可以尝试将其转换为
GET
,作为一种健全性检查。(我知道你说‘只有删除才能做到这一点’,但可能是因为
:id
关闭了。这部分与GET一起工作吗?如果我简单地将delete更改为GET并使用相同的url,我会得到{“id”:1,“name”:“course1”}作为返回值。主体在DELETE中为空,我使用的标题是“Content Type”:“application/json”。如果我关闭此选项,它仍然不起作用。您将得到一个破折号?
-
破折号作为返回值?正文中没有空对象仍然给出相同的错误