दिलचस्प पोस्ट
आयातित प्रोजेक्ट "C: \ Microsoft.CSharp.targets" नहीं मिला निश्चित चौड़ाई टेक्स्ट फ़ाइल पढ़ें Photos.app से अंतिम चित्र प्राप्त करें? जाओ में नकली कार्य विजुअल स्टूडियो इंटरनेट एक्सप्लोरर के बजाय डिफ़ॉल्ट ब्राउज़र खोलता है कैसे सी # घटनाओं पर्दे के पीछे काम करते हैं? जेपीए हाइबरनेट एक-से-एक संबंध JQuery Datepicker में आज बटन काम नहीं करता है डीआईवी में वेबसाइट लोड करें मैं ओरेकल में एक अनुक्रम कैसे रीसेट करूं? PHP / MySQL में यूटीसी के रूप में दिनचर्या को संग्रहीत करना केवल महीने और वर्ष के क्षेत्रों के साथ एंड्रॉइड के लिए तिथि पिकर कैसे प्रदर्शित करें? एक बहुत बड़ा जावा सरणी बनाना मैं मोज़िला फ़ायरफ़ॉक्स 3 पर जावास्क्रिप्ट के साथ एक विंडो कैसे बंद कर सकता / सकती हूं? एंड्रॉइड में एक पीडीएफ फाइल डाउनलोड करने के लिए कैसे?

JSON में हाइपरटेक्स्ट एप्लीकेशन लैंग्वेज (एचएएल) अक्षम करें?

संस्करण 2.0.2 में जेपीए के साथ स्प्रिंग डाटा आरईएसटी का इस्तेमाल करना।

मैं JSON में हाइपरटेक्स्ट एप्लीकेशन लैंग्वेज (एचएएल) को कैसे अक्षम कर सकता हूं? http://stateless.co/hal_specification.html

मैंने पहले से बहुत सी चीजों की कोशिश की है, लेकिन कोई फायदा नहीं हुआ। उदाहरण के लिए, मैंने "एप्लिकेशन / हेल + जेसन" के बजाय "एप्लिकेशन / जेएसन" पर स्वीकार और सामग्री प्रकार के हेडर स्थापित किए हैं, लेकिन मुझे अभी भी हाइपर लिंक के साथ JSON सामग्री प्राप्त है I

उदाहरण के लिए, मैं कुछ पसंद करना चाहता हूं:

{ "name" : "Foo", "street" : "street Bar", "streetNumber" : 2, "streetLetter" : "b", "postCode" : "D-1253", "town" : "Munchen", "country" : "Germany", "phone" : "+34 4410122000", "vat" : "000000001", "employees" : 225, "sector" : { "description" : "Marketing", "average profit": 545656665, "average employees": 75, "average profit per employee": 4556 } } 

के बजाय:

 { "name" : "Foo", "street" : "street Bar", "streetNumber" : 2, "streetLetter" : "b", "postCode" : "D-1253", "town" : "Munchen", "country" : "Germany", "phone" : "+34 4410122000", "vat" : "000000001", "employees" : 225, "_links" : { "self" : { "href" : "http://localhost:8080/app/companies/1" }, "sector" : { "href" : "http://localhost:8080/app/companies/1/sector" } } } 

आपकी सहायता के लिए धन्यवाद.

Solutions Collecting From Web of "JSON में हाइपरटेक्स्ट एप्लीकेशन लैंग्वेज (एचएएल) अक्षम करें?"

(हाइपर) मीडिया प्रकार

स्प्रिंग डाटा रेस्ट के लिए डिफ़ॉल्ट सेटिंग्स एचएएल को डिफ़ॉल्ट hypermedia प्रतिनिधित्व प्रारूप के रूप में उपयोग करता है, इसलिए सर्वर दिए गए Accept हेडर के लिए निम्नलिखित को वापस करेगा:

  • कोई हैडर नहीं -> application/hal+json -> एचएएल
  • application/hal+json -> application/hal+json -> एचएएल
  • application/json -> application/json -> एचएएल (यह डिफ़ॉल्ट कॉन्फ़िगर है)
  • application/x-spring-data-verbose+json -> application/x-spring-data-verbose+json > एक स्प्रिंग डेटा विशिष्ट प्रारूप (संग्रह कंटेनर के लिए लिंक्स और content के संग्रह के लिए आवरण के रूप में content का उपयोग करना।

यदि आप RepositoryRestConfiguration.setDefaultMediaType(…) कॉन्फ़िगरेशन। RepositoryRestConfiguration.setDefaultMediaType(…) को गैर-एचएएल प्रारूप में कॉन्फ़िगर करते हैं, तो सर्वर स्प्रिंग डेटा विशिष्ट JSON प्रारूप को वापस करेगा, जब तक कि आप स्पष्ट रूप से application/hal+json लिए नहीं पूछें। बेशक, विन्यास विकल्प संभवत: थोड़ा भ्रामक है, इसलिए मैंने इसे बेहतर बनाने के लिए DATAREST-294 दायर किया। इस मुद्दे को 2.1 RC1 (Dijkstra) 2014 में हल किया गया था।

ध्यान दें कि हमें प्रबंधित संसाधनों के बीच संबंधों को व्यक्त करने और सर्वर की खोज योग्यता को सक्षम करने के लिए एक प्रभावी रूप से एक hypermedia प्रारूप की आवश्यकता है। तो कोई रास्ता नहीं है कि आप इसे पूरी तरह से छुटकारा पा सकेंगे। यह ज्यादातर इस तथ्य के कारण है कि आप आसानी से सर्वर को दुर्घटनाग्रस्त कर सकते हैं यदि आप उन संस्थाओं का पर्दाफाश कर सकते हैं जिनके द्विदिश संबंध हैं या एक विशाल ऑब्जेक्ट ग्राफ बनाते हैं।

संबंधित संस्थाओं को इनलाइन करना

यदि आप कभी भी उन क्षेत्रों से जुड़े नहीं रहना चाहते हैं और उन्हें हमेशा इनलाइन करना चाहते हैं, तो एक विकल्प केवल SectorRepository को पहले स्थान पर आरईएसटी संसाधन के रूप में निर्यात किए जाने से बाहर करना है। आप इसे @RepositoryRestResource(exported = false) साथ रिपॉज़िटरी इंटरफ़ेस की व्याख्या करके प्राप्त कर सकते हैं।

आपके निचले उदाहरण में पोस्ट किए गए एक प्रतिनिधित्व प्राप्त करने के लिए स्प्रिंग डेटा REST 2.1 M1 में पेश किए गए अनुमानों पर गौर करें। यह मूल रूप से आपको ऐसे संसाधनों पर वैकल्पिक दृश्यों को तैयार करने की अनुमति देता है जो डिफ़ॉल्ट इंटरफ़ेस के माध्यम से डिफ़ॉल्ट से भिन्न हो सकता है।

आप मूल रूप से किसी इंटरफ़ेस को परिभाषित करते हैं:

 @Projection(name = "foo", types = YourDomainClass.class) interface Inlined { // list all other properties Sector getSector(); } 

यदि आप या इंटरफ़ेस को अपने डोमेन क्लास के किसी (उप) पैकेज में डालते हैं या RepositoryRestConfiguration.projectionConfiguration() YourDomainClass माध्यम से मैन्युअल रूप से रजिस्टर करते हैं तो आपका RepositoryRestConfiguration.projectionConfiguration() क्लास को उजागर करने वाले संसाधन एक अनुरोध पैरामीटर projection स्वीकार करेंगे, ताकि इस उदाहरण में foo में प्रवेश के रूप में इनलाइन प्रस्तुति को प्रस्तुत किया जाएगा आप यह चाहते हैं।

सामान्यतः इस प्रतिबद्धता की सुविधा के बारे में अधिक जानकारी है, इस प्रतिबद्धता में उदाहरण प्रक्षेपण परिभाषित किया गया है