मेरा लक्ष्य अनुक्रमणिका पोस्ट के लिए मार्ग बनाना है। उपयोगकर्ता कुछ क्वेरी पैराम (यानी टैग, प्रकार) निर्दिष्ट करने में सक्षम होना चाहिए लेकिन दूसरों को निर्दिष्ट करने में सक्षम नहीं होना चाहिए। स्पष्ट करने के लिए:हैपिज और जोई: उपस्थिति के साथ क्वेरी पैराम मान्य करें: 'वर्जित'
यह ठीक है:
/posts
/posts?tags=food
/posts?type=regular&tags=stackoverflow
यह ठीक नहीं है:
/posts?title=Hello
यह वह जगह है HAPI पैक config:
servers: [
{
host: 'localhost',
port: 3000,
options: {
labels: ["api"],
validation: {
abortEarly: false,
presence: 'forbidden'
}
}
}
],
presence: forbidden
विकल्प नोटिस करें।
handler: function (request, reply) {
Post.find(request.query, function (err, posts) {
if(err) {
console.log(err);
}
reply(posts);
});
},
validate: {
query: {
type: Joi.string().optional(),
tags: Joi.string().optional()
}
}
मेरा विचार था कि मान्यता type
और tags
पैरामीटर (खाली क्वेरी सहित) में से किसी सबसेट की अनुमति चाहिए:
इस मार्ग config है। हालांकि, किसी भी अनुरोध के अनुरोध के बाद मुझे निम्नलिखित त्रुटि मिल रही है:
{
"statusCode": 400,
"error": "Bad Request",
"message": "value is not allowed",
"validation": {
"source": "query",
"keys": [
"value"
]
}
}
वह क्यों है? निश्चित रूप से value
नाम की कोई कुंजी नहीं है। प्रमाणीकरण को जिस तरह से मैं चाहता हूं उससे व्यवहार कैसे करें?
धन्यवाद! इस जवाब ने मेरे कुछ अन्य प्रश्नों को भी मंजूरी दे दी। ऐसा लगता है कि मैं वास्तव में वैश्विक सेटिंग के रूप में क्या चाहता था उपस्थिति: 'आवश्यक'। मुझे एहसास नहीं हुआ कि 'वर्जित' सेटिंग सख्त थी। – zir