คำถามเก่าใช่ ... แต่ในกรณีที่ทุกคน Googles นี้; ตัวเลือกอื่นกำลังใช้Org Babelและob-http
... (สามารถติดตั้งจากmelpa )
ด้วยorg-babel
คุณสามารถสร้าง.org
ไฟล์ที่มีhttp
บล็อครหัส "" เมื่อบล็อกเหล่านี้ถูกประเมินบล็อกเหล่านั้นจะทำการร้องขอ HTTP และส่งคืนการตอบสนองตามผลลัพธ์
หากบล็อกเหล่านี้มี#+NAME:
แอตทริบิวต์ "" คุณสามารถใช้ผลลัพธ์ในorg-babel
บล็อกอื่น ๆได้ สิ่งนี้จะช่วยให้การเขียนโปรแกรมความรู้ที่ค่อนข้างดีโดยใช้ผลลัพธ์ของการร้องขอ HTTP
ตัวอย่างเช่นต่อไปนี้เป็นเอกสารองค์กรเล็ก ๆ ที่แสดงการร้องขอ HTTP และแยกวิเคราะห์ JSON ที่ส่งคืนใน Ruby:
* 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
ร้องขอนั้นทำขึ้นก่อนจากนั้นผลลัพธ์จะถูกส่งไปยัง Ruby เพื่อดำเนินการต่อไป
คุณสามารถทำสิ่งนี้ได้ด้วยบล็อกจำนวนมากเท่าที่คุณต้องการและมีหลายภาษา
หากสิ่งนี้เหมาะสมกับความต้องการของคุณ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
ควรเป็นสิ่งที่คุณต้องการ .. !