2013-10-16 7 views
11

मेरे इसी विन्यासएफओएस रेस्टबंडल के लिए जेएसन के लिए डिफ़ॉल्ट प्रारूप कैसे निर्दिष्ट करें?

fos_rest: 
    view: 
     view_response_listener: force 

sensio_framework_extra: 
    view: 
     annotations: false 

है और यह वास्तव में

@Route("/jobs", defaults={ "_format" = "json" }) 

हर बार के रूप में मार्ग निर्दिष्ट करने के लिए गुस्सा दिलाती है।

तो क्या यह डिफ़ॉल्ट रूप से इसे कहीं भी निर्दिष्ट करने के लिए निर्दिष्ट करना संभव है?

पुनश्च:

अगर मैं defaults={ "_format" = "json" } हटाने और /jobs endpoint फोन मैं एक अपवाद हो रही है

Unable to find template "APIBundle:Jobs:post.html.twig". 

पी पी एस:

routing_loader: 
    default_format: json 
क्योंकि यह केवल के लिए प्रयोग किया जाता है

काम नहीं करेगा स्वचालित मार्ग पीढ़ी।

उत्तर

21

में परिणाम होगा अंतिम जवाब बहुत आसान है और FOS \ RestBundle के लिए अप्रासंगिक है:

api: 
    resource: "@APIBundle/Controller/" 
    type:  annotation 
    defaults: {_format: json} # <<<<<<< 
    prefix: /api/ 
+0

यह 'type: rest' का उपयोग नहीं कर रहा है ?? –

+0

@ मेटो तिबाक्विरा: हाँ – zerkms

10

आप default_format निर्दिष्ट कर सकते हैं कि रूटिंग लोडर _format पैरामीटर के लिए उपयोग करेगा यदि कोई निर्दिष्ट नहीं है।

# app/config/config.yml 
fos_rest: 
    routing_loader: 
     default_format: json 

डिफ़ॉल्ट रूप से, मार्ग {_format} स्ट्रिंग के साथ उत्पन्न होते हैं।

# app/config/config.yml 
fos_rest: 
    routing_loader: 
     include_format:  false 

अधिक जानकारियां के लिए FOSRestBundle documentation पर एक नज़र डालें: यदि आप स्वच्छ यूआरएल (/jobs बजाय /jobs.{_format}) प्राप्त करना चाहते हैं तो आपको केवल इतना करना है कुछ विन्यास को जोड़ने है।

+0

यह होगा ** केवल ** काम अगर मैं स्वत: मार्ग पीढ़ी का उपयोग करें। कस्टम मार्गों के साथ यह काम नहीं करता है। क्षमा करें, एक जवाब नहीं। – zerkms

+0

यह मेरे लिए ठीक काम करता है। मेरे नियंत्रक में @ रूट ('/ foo') के साथ, कॉलिंग/foo को कोई अपवाद नहीं मिलता है। – Picoss

+0

क्या प्रारूप अंततः 'जेसन' के रूप में स्वीकार किया गया है? यदि आप उस पैरामीटर को हटाते हैं - क्या व्यवहार बदलता है? – zerkms

7

मैं इस समाधान अपने आप को परीक्षण नहीं कर सकता है, लेकिन निम्नलिखित the documentation ऐसा लगता है कि आप पथ

पर नियमों देने

config.yml

fos_rest: 
    format_listener: 
     rules: 
      # setting fallback_format to json means that instead of considering 
      # the next rule in case of a priority mismatch, json will be used 
      - 
       path: '^/' 
       host: 'api.%domain%' 
       priorities: ['json', 'xml'] 
       fallback_format: json 
       prefer_extension: false 
इस तरह के साथ

द्वारा एक डिफ़ॉल्ट स्वरूप का उपयोग कर सकते हैं, Accept-headers युक्त

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json 

एक json अनुरोध प्रारूप

+0

मैंने वास्तव में इसे देखा है लेकिन अभी तक कोशिश नहीं की है। मैं कल कोशिश करूँगा और आपको परिणामों के साथ पिंग कर दूंगा। धन्यवाद :-) लेकिन मुझे पहले से ही कोई कमी दिखाई दे रही है - इस तरह ** ** को 'स्वीकार करें' हेडर में 'एप्लिकेशन/जेसन' पास करने के लिए ** है, जबकि मैं चाहता हूं कि 'जेसन' बिना किसी शर्त के प्रत्येक अनुरोध के लिए एक प्रारूप था। – zerkms

+1

... लेकिन उस पृष्ठ को पूरी तरह से पढ़ने के बाद - मुझे लगता है कि यह काम कर सकता है। मुझे यकीन है कि यह होगा।वैसे भी मैं आपको कल बता दूंगा – zerkms

+0

भागीदारी के लिए धन्यवाद, मुझे असली जवाब मिला है :-) – zerkms

संबंधित मुद्दे