Rac API को Emacs के साथ कैसे टेस्ट करें?


34

मैं एक ऐप डाल रहा हूं, और एपी के अंतिम बिंदुओं का परीक्षण करने में सक्षम होना चाहता हूं। मुझे लगा कि Emacs जाने के लिए एक अच्छा तरीका होगा - खासकर अगर JSON प्रतिक्रियाओं को पार्स किया जा सकता है और बाद के परीक्षणों में उपयोग किया जाने वाला रिटर्न डेटा।

इस बारे में कोई विचार, या यह सिर्फ पागल कैसे है?


सबसे आसान तरीका एक कर्ल शेल कमांड को लागू करना है, और पठन परिणामों के साथ जौन पढ़ना है।
मालाबार

जवाबों:


45
  • restclient सबसे "इंटरैक्टिव" मोड है।

    यह HTTP REST webservices को मैन्युअल रूप से देखने और परीक्षण करने का एक उपकरण है। एक सादे पाठ क्वेरी शीट से क्वेरी चलाता है, एक सुंदर मुद्रित XML, JSON और यहां तक ​​कि छवियों के रूप में परिणाम प्रदर्शित करता है।

    restclient

    आप http://jakemcceath.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/ पर एक वर्कफ़्लो उदाहरण की जाँच कर सकते हैं ।

  • request.el - HTTP स्विस चाकू।

    (request
     "http://httpbin.org/get"
     :params '(("key" . "value") ("key2" . "value2"))
     :parser 'json-read
     :success (function*
               (lambda (&key data &allow-other-keys)
                 (message "I sent: %S" (assoc-default 'args data)))))
    
  • emacs-web - "विचार हमेशा प्रतिक्रिया प्राप्त करने के लिए कॉलबैक का उपयोग करना है।"

    JSON कॉलबैक फ़ॉर्म केवल डेटा एकत्र करने की अनुमति देता है:

    ;; -*- lexical-binding: t -*-
    (require 'web)
    
    (web-json-post 
      (lambda (data &rest stuff)
         (message "%S" data))
      :url "https://httpbin.org/post")
    

23

पुराना सवाल है, हाँ ... लेकिन इस घटना में कि कोई भी इसे गोगल्स करता है; एक अन्य विकल्प ऑर्गन बैबेल और ob-http... का उपयोग कर रहा है (इसे मेल्पा से इंस्टॉल किया जा सकता है )

इसके साथ org-babel, आप एक .orgफाइल बना सकते हैं जिसमें httpकोड ब्लॉक हैं। जब इन ब्लॉकों का मूल्यांकन किया जाता है, तो वे HTTP अनुरोध करेंगे और परिणाम के रूप में प्रतिक्रिया वापस करेंगे।

यदि इन ब्लॉकों में एक " #+NAME:" विशेषता है, तो आप किसी अन्य org-babelब्लॉक में उनके परिणामों का उपयोग कर सकते हैं । यह HTTP अनुरोधों के परिणामों का उपयोग करके कुछ सुंदर स्वच्छ साक्षर प्रोग्रामिंग के लिए अनुमति देता है।

उदाहरण के लिए, एक HTTP अनुरोध करने और रूबी में दिए गए JSON को पार्स करने का प्रदर्शन करने वाला एक छोटा सा Org दस्तावेज़ है:

* The request
The following is the example request shown on [[https://github.com/zweifisch/ob-http][ob-http's Github page]]...

It isn't anything fancy, but it is a REST API request, and returns
JSON, so it works for the sake of this demonstration:

#+NAME:ob-languages
#+BEGIN_SRC http :pretty
  GET https://api.github.com/repos/zweifisch/ob-http/languages
#+END_SRC

#+RESULTS:
: {
:   "Emacs Lisp": 7034
: }

Notice how this has a "=#+NAME:=" attribute? This is a name we can use
in other =org-babel= blocks. (As you will see below)

* Using the request
Now that I have an =http= request in an org block with a name... Lets
write something in a completely different language and use our HTTP
request's response:

#+BEGIN_SRC ruby :var langs=ob-languages
  require 'json'
  JSON.parse(langs)['Emacs Lisp']
#+END_SRC

#+RESULTS:
: 7034

The =:var= keyword allowed me to assign the "=langs=" variable in the
Ruby block to the result of the =ob-languages= block [[The request][above]].

This didn't have to be in Ruby, this could have been any language,
including another =http= block.

यह इस तरह दिखता है org-mode: ओआरजी-एचटीटी इन ऑर्ग-मोड

C-c C-cनीचे ब्लॉक पर मारना (रूबी एक) स्वचालित रूप से अपनी निर्भरता के लिए शीर्ष एक का मूल्यांकन करेगा (यह :varब्लॉक के हेडर में थोड़ा सा है।)। इसका मतलब यह होगा कि httpअनुरोध पहले किया जाता है, और फिर परिणाम को आगे की प्रक्रिया के लिए रूबी को पास किया जाता है।

आप इसे जितने चाहें उतने ब्लॉक और कई भाषाओं के साथ कर सकते हैं।

यदि यह आपकी आवश्यकताओं के अनुरूप है, ob-httpतो इसे काम करने के लिए स्थापित करने के बाद आपको थोड़ी सी मैन्युअल ट्विकिंग की आवश्यकता होती है। (चिंता न करें, यह उतना नहीं है)

स्थापित करने के बाद ob-http, आपको दो चर अनुकूलित करने की आवश्यकता है: org-src-lang-modesऔर org-babel-load-languages

इसलिए, दौड़कर M-x customize-variable, आप प्रत्येक को निम्नलिखित शामिल करने के लिए अनुकूलित कर सकते हैं:

org-src-lang-modes: आप एक और भाषा मानचित्रण को शामिल करने के लिए इस चर को अनुकूलित करना चाहेंगे, ताकि आप सूची के अंत में एक और मूल्य सम्मिलित कर सकें:

String: http
Symbol: ob-http

तब आप C-x C-sउस अनुकूलन को सहेज सकते हैं ।

org-babel-load-languages: आप सक्षम orgभाषाओं की सूची में एक और आइटम जोड़ना चाहेंगे । " http"।

हालाँकि, आपको इसे मैन्युअल रूप से सूची में जोड़ने की आवश्यकता हो सकती है यदि विकल्प संभावित विकल्पों में नहीं है, तो आप ऐसा कर सकते हैं कि :लिस्प अभिव्यक्ति दिखाने के लिए "राज्य" पर क्लिक करके और " " का चयन करें ... फिर आप निम्नलिखित जोड़ देंगे अंतिम समापन कोष्ठक से पहले:

(http . t)

उसके बाद, एक त्वरित C-x C-sऔर M-x org-reloadआप सभी की जरूरत होनी चाहिए ..!


फ़ाइलों को पोस्ट करने के लिए ob-http का उपयोग कैसे किया जा सकता है?
अनुव्रत पाराशर

2

मैं वास्तव में इस उद्देश्य के लिए लिखा है। यह आपको एक comint- आधारित उत्तर देता है जहाँ आप http अनुरोध जारी कर सकते हैं।

https://github.com/gregsexton/httprepl.el

आप अनुरोधों के परिणाम का उपभोग करने वाले कार्यों को आसानी से जोड़ सकते हैं। ये आमतौर पर सुंदर छपाई आदि के लिए उपयोग किए जाते हैं, लेकिन बिल्ट जोंस लाइब्रेरी का उपयोग करते हुए एक विशिष्ट संरचना को पार्स करना सरल होना चाहिए।


-1

यह पूरी तरह से संभव है क्योंकि मैं लगभग वही काम खुद करता हूं। हालांकि कुछ युगल हैं। सबसे पहले मेरे पास स्थानीय रूप से पैच xmlrpc.el लाइब्रेरी है । यह दो समस्याओं को हल करता है, आधुनिक emacs के साथ एक असंगति और अनुरोध में प्रमाणीकरण हेडर पारित करने की क्षमता। जो डेटा मैं प्रोसेस कर रहा हूं वह XML में JSON है लेकिन आप अपने सेटअप के आधार पर XML चरण को छोड़ सकते हैं।

सभी हैवी RPC उठाने का कार्य लावा-आरपी आदि में किया जाता है, लेकिन इसका पालन करना कठिन नहीं होना चाहिए। आप यहां जस का एक कड़ा टुकड़ा जमा करने के लिए कॉल देख सकते हैं ।

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