वर्डप्रेस रेस्ट एपीआई कस्टम एंडपॉइंट वैकल्पिक परम


15

क्या register_rest_route()यूआरएल में वैकल्पिक मापदंडों के साथ उपयोग करना संभव है ?

मान लें कि मार्ग इस प्रकार पंजीकृत है:

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

अब url जैसे / wp-json / api / animals / 15 पर api कॉल करना संभव है , लेकिन क्या परम / जैसे- json / api / जानवरों / जैसे रूट को पकड़ने के लिए परम को वैकल्पिक घोषित करने का कोई तरीका है ।

मैंने भी नीचे की तरह मार्ग की घोषणा करने की कोशिश की, लेकिन सफलता के बिना:

/animals/(?P<id>\d+)?

आप परम के बिना एक और मार्ग घोषित कर सकते हैं या जीईटी परम का उपयोग कर सकते हैं, लेकिन क्या पहले से ऐसा करने का कोई तरीका है register_rest_route()?

आपके सुझाव के लिए धन्यवाद।

जवाबों:


18

आपको रूट रेगेक्स के नामित मापदंडों को एक वैकल्पिक कैप्चरिंग समूह में रखना चाहिए:

register_rest_route( 'api', '/animals(?:/(?P<id>\d+))?', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

दूसरा पैरामीटर केवल एक रेगेक्स है, इस प्रकार आप इसे सामान्य बनाने के लिए सामान्य रेगेक्स तर्क का उपयोग कर सकते हैं


3

एक register_rest_routeफ़ंक्शन कॉल के साथ ऐसा करने का एक तरीका हो सकता है , मुझे नहीं पता कि यह कैसे करना है और यह आदर्श होगा । हालांकि, register_rest_routeहुक किए गए तरीके में फ़ंक्शन कॉल को डुप्लिकेट करने से आप जो चाहते हैं वह हो जाएगा।

register_rest_route( 'api', '/animals/', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals'
] );

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

यह get_animals विधि है कि आप हर स्थिति को संभालने की स्थिति चाहते हैं। यदि कोई idarg सेट है, और $_GETचर के लिए फ़ॉलबैक जाँच करता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.