angular $resource delete가 express.js 서버로 본문을 전송하지 않습니다.
혜,
서버 쪽에 angular.js와 node.js(Express.js)가 있는 앱을 만들고 있습니다.
어떤 이유로 저는 삭제 요청을 처리하는 데 문제가 있습니다.아무도 서버 쪽으로 접근하지 못하고 있습니다.
이것은 나의 angular.js 리소스 코드입니다.
$scope.deleteProject = function(projectName){
var postData = {username: 'name', projectName: projectName};
Project.deleteProject.delete({}, postData,
function(res){
alert('Project Deleted');
},
function(err){
alert(err.data);
});
}
서버 쪽에 다음과 같은 내용이 있습니다.
var deleteProject = function(req, res){
console.log(req.body);
console.log(req.params);
if (req.body.projectName){
//do something
return res.send(200);
}
else
return res.send(400, 'no project name was specified');
}
지금은 어떤 이유에서인지 몸이 전혀 없습니다!!비어있습니다.경로를 app.delete로 정의했습니다.
node.js에서 post로 경로를 변경하고 angular.js에서 저장하면 잘 작동합니다.
내가 여기서 놓치고 있는 게 뭐죠?
감사해요.
이 스택 오버플로 질문과 서비스 소스 코드에 따르면, a.DELETE사용요청$http는 요청 본문에서 데이터 전송을 허용하지 않습니다.DELETE 요청 사양은 요청 기관을 허용해야 하는지 여부에 대해 다소 모호하지만 Angular는 이를 지원하지 않습니다.
요청 기관을 허용하는 유일한 방법은POST,PUT,그리고.PATCH. 그래서 문제는 코드 어디에도 없는 Angular's에 있습니다.$http서비스.
제 제안은 일반적인 것을 사용하는 것입니다.$http(...)적절한 방법으로 기능하고 전달합니다.
$http({
method: 'DELETE',
url: '/some/url',
data: {...},
headers: {'Content-Type': 'application/json;charset=utf-8'}
})
기본적으로 Angular는 DELETE 요청에 대해 내용 유형을 텍스트/평면으로 보냅니다.머리글에 추가하기만 하면 됩니다.
var config = {
method: "DELETE"
url: yourUrl
data: yourData
headers: {"Content-Type": "application/json;charset=utf-8"}
};
$http(config);
모든 DELETE 요청에 추가하려면 메인 컨트롤러의 app.config 메서드에 추가합니다.
$httpProvider.defaults.headers.delete = { "Content-Type": "application/json;charset=utf-8" };
$http 대신 $resource 개체를 사용하려면 추가해야 합니다.hasBody그리고.headers다음과 같이
delete: {
method: 'DELETE',
hasBody: true,
headers: {"Content-Type": "application/json;charset=UTF-8"}
}
나를 위해 일했습니다.
방금 이 문제에 부딪혔습니다.url params를 사용해서 id를 삭제해서 보내야 합니다.
급행으로:
app.delete('/api/user/:userId', user.remove);
url에 각진 형태로 추가합니다.
$http({url: 'whatever/api/'+obj.id, method: 'DELETE'}) ...
저는 다음과 같은 일을 합니다.
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
$httpProvider.defaults.headers.common['Content-Type'] = 'application/json;charset=utf-8';
XMLHttpRequest는 선택 사항이지만 ajax를 보내는 경우 유용합니다.자세한 내용은 https://docs.angularjs.org/api/ng/provider/$httpProvider .
저는 이게 통했어요.
$httpProvider.defaults.headers.delete = { "Content-Type": "application/json;charset=utf-8" };
그리고 나서.
$http.delete(url, { data: data })
언급URL : https://stackoverflow.com/questions/22186671/angular-resource-delete-wont-send-body-to-express-js-server
'programing' 카테고리의 다른 글
| Wordpress User Custom Field (체크박스) 검색 및 업데이트 - 어디에서나 가능 (0) | 2023.11.07 |
|---|---|
| 하위 디바 표시 상위 디바 반응 js에서 하위 디바 호버링 (0) | 2023.11.07 |
| 행 선택과 업데이트를 동시에 할 수 있는 방법이 있습니까? (0) | 2023.11.07 |
| PowerShell의 변수에 null 값을 할당하려면 어떻게 해야 합니까? (0) | 2023.11.07 |
| sql 주입 공격에서 게시물의 스크립트를 제거하는 방법? (0) | 2023.11.02 |