저는 feathersjs (v2.0)로 작업하면서 매우 새롭습니다. 깃털을 사용하여 소수의 레코드 만 찾는 작은 REST 애플리케이션을 만들었습니다. 그러나, 나는 모른다. 그리고 나는 문서와 예제를 읽는 방법을 찾지 못했다. FIND를 얻고, 놓고, 지우지 못하게한다. 어떤 깃발이 깃털 REST API에서 허용되는지를 구성하는 방법이 있는가? ?. 나는 그냥 반환이 후크 전에 (의 서비스 후크)의 기능을 거부 추가하려했으나 500 오류가 반환되고, 응답은 다음과 같습니다깃털 허용 동사 구성
{"name":"GeneralError","message":"Cannot read property 'bind' of undefined","code":500,"className":"general-error","data":{},"errors":{}}
기본합니다 (어떤 기능이없는 다른 동사에 대한 후크 파일)입니다 :
의미가 있지만, 내가 그들을 허용이 "잘못된"오류를 반환해야하는 이유 당신이 그 동사가 필요하지 않은 경우 내 개인적인 느낌입니다"name":"NotFound","message":"No record found for id 'null'","code":404,"className":"not-found","errors":{}}
?
UPDATE :
나는 트릭을했지만 응답 헤더가 실제로 무슨 일이 있었는지와 일치하지 않기 때문에 나는 만족 아니에요.
헤더에게 정보를 잡기 위해 나는 here 주어진 답변에 따라 서비스 파일// This must be before the service creation
app.use(function(req, res, next) {
req.feathers.headers = req.headers;
next();
});
app.use('/myservice', createService(options));
이 코드를 추가했다. 그러나 함수가 service creation 매개 변수에있는 daffl의 대답은 feathers-cli를 사용하여 생성 된 코드에서 작동하지 않으므로 before (더 나은 방법이 될 수 있습니까?), createService 함수에서 두 번째 또는 첫 번째 매개 변수로 설정하는 방법 ? 또는 options 객체 내부에서 가능합니까? 컴파일 오류가 발생했습니다.) 나는 "myservice.hooks.js"
module.exports = function() {
return function (hook) {
if(hook.method !== 'find' && hook.method !== 'error'){
throw new Error('Method not allowed');
}else{
return hook;
}
};
};
물론 이것은 500 오류를 제공에 그것을 후크 기능을 가진 새 파일을 정의하고 포함했지만,에 허용 헤더 405 오류가 있어야한다 'GET '. 내가 대신 오류 던지는이 코드를 사용하여 시도 :
hook.params.headers.allow = 'GET';
hook.params.headers.status = 405;
이 더 잘 작동했지만에가는 예를 들어 삭제하고 데이터베이스의 레코드를 삭제하려고 (다행히 데이터베이스 사용자 만이 선택 권한)하지만, 이것은 POST와 PUT에서 비슷한 동작을하지 않아야합니다. 응답 헤더 상태가 200 OK가 아니고 400 (? !!)이고 허용 헤더가 변경되지 않았기 때문에 "GET, POST, PUT, PATCH, DELETE"입니다.
나는 this solution을 읽었지 만 깃털 'hook.params.headers (또는 hook.header (s)가 사용되었지만 헤더가 올바르게 정의되지 않은 경우)를 사용하여 헤더 값을 올바르게 설정하는 방법을 알지 못해보다 적절한 헤더 응답을 반환합니다. 물론 더 이상 계속하지 마십시오. 어떤 아이디어?, 제발 자비를 베풀어 라, 나는 깃털이있는 초보자 (1 주일 미만) 일 뿐이다. 어쩌면 이것은 바보/분명한 질문 일 수도있다.
미리 감사드립니다.
로 익스프레스 오류 핸들을 설정하는 것을 잊지 마세요 또한
또는 쓰기 : 당신은
MethodNotAllowed
오류를 사용하여 귀하의 후크를 변경하여 405을 던질 수 대답하고 그것을 표시하십시오. 감사!:) – Alfabravo