EMAX দিয়ে কীভাবে REST এপিআই পরীক্ষা করবেন?


34

আমি একসাথে একটি অ্যাপ্লিকেশন রাখছি, এবং এপিআই শেষ পয়েন্টগুলি পরীক্ষা করতে সক্ষম হতে চাই। আমি অনুভব করেছি যে ইমাসগুলি যেতে একটি দুর্দান্ত উপায় হবে - বিশেষত যদি জেএসওএন প্রতিক্রিয়াগুলি পার্স করা যায় এবং পরবর্তী পরীক্ষাগুলিতে রিটার্ন ডেটা ব্যবহার করা যায়।

এটি সম্পর্কে কীভাবে যেতে হবে সে সম্পর্কে কোনও ধারণা, বা এটি কি কেবল উন্মাদ?


সবচেয়ে সহজ উপায় হ'ল একটি কার্ল শেল কমান্ড চাওয়া, এবং জেসন রিডের সাথে ফলাফলগুলি বিশ্লেষণ করা।
মালবারবা

উত্তর:


45
  • রেস্টক্লিয়েন্ট সবচেয়ে "ইন্টারেক্টিভ" মোড।

    এটি HTTP REST ওয়েব সার্ভিসগুলি ম্যানুয়ালি অন্বেষণ এবং পরীক্ষার একটি সরঞ্জাম। প্লেইন-পাঠ্য ক্যোয়ারী শীট থেকে ক্যুরিগুলি চালায়, চমত্কার মুদ্রিত এক্সএমএল, জেএসএন এবং এমনকি চিত্র হিসাবে ফলাফল প্রদর্শন করে।

    restclient

    আপনি একটি কার্যপ্রবাহের উদাহরণটি http://jakemccrary.com/blog/2014/07/04/ using-emacs-to-explore-an-http-api/ এ পরীক্ষা করতে পারেন ।

  • অনুরোধ.el - এইচটিটিপি সুইস ছুরি

    (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)))))
    
  • ইমাস্যাক্স-ওয়েব - "প্রতিক্রিয়া সংগ্রহ করার জন্য সর্বদা কলব্যাকগুলি ব্যবহার করা ধারণা" "

    JSON কলব্যাক ফর্মটি কেবলমাত্র ডেটা সংগ্রহ করার অনুমতি দেয়:

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

23

পুরানো প্রশ্ন, হ্যাঁ ... তবে যে কেউ এটিকে গুগল করে; অন্য কোনো বিকল্প ব্যবহার করছে অর্গ হট্টগোল এবং ob-http... (থেকে ইনস্টল করা যাবে Melpa ।)

এর সাথে org-babel, আপনি কোড ব্লকযুক্ত একটি .orgফাইল তৈরি করতে পারেন http। যখন এই ব্লকগুলি মূল্যায়ন করা হয়, তারা HTTP অনুরোধ করবে এবং ফলাফল হিসাবে প্রতিক্রিয়া ফিরিয়ে দেবে।

যদি এই ব্লকগুলির একটি " #+NAME:" বৈশিষ্ট্য থাকে তবে আপনি তাদের ফলাফল অন্য কোনও org-babelব্লকে ব্যবহার করতে পারেন । এটি HTTP অনুরোধগুলির ফলাফলগুলি ব্যবহার করে কিছু সুন্দর ঝরঝরে সাক্ষর প্রোগ্রামিংয়ের অনুমতি দেয়।

উদাহরণস্বরূপ, এখানে একটি ছোট্ট অর্গ ডকুমেন্টটি এইচটিটিপি অনুরোধ তৈরি করে এবং রুবিতে ফিরে আসা জেএসএনকে বিশ্লেষণ করে তা দেখিয়েছে:

* 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: org-মোডে ob-http

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সেই পছন্দটি সংরক্ষণ করতে পারেন save

org-babel-load-languages: আপনি সক্ষম orgভাষাগুলির তালিকায় আরও একটি আইটেম যুক্ত করতে চাইবেন । " http"।

যদিও অপশনটি সম্ভাব্য বিকল্পগুলিতে না থাকলে আপনার নিজের হাতে তালিকায় এটি যুক্ত করতে হতে পারে, আপনি "স্টেট" এ ক্লিক করে এবং :লিস্প এক্সপ্রেশনটি দেখানোর জন্য " " নির্বাচন করে এটি করতে পারেন ... তারপরে আপনি নিম্নলিখিতটি যুক্ত করতে পারেন শেষ বন্ধের প্রথম বন্ধনীর আগে:

(http . t)

তারপরে, দ্রুত C-x C-sএবং M-x org-reloadআপনার যা দরকার তা হ'ল ..!


ফাইল পোস্ট করার জন্য কীভাবে ob-http ব্যবহার করা যেতে পারে?
অনুব্রত পরশ

2

ঠিক এই উদ্দেশ্যেই আমি httpspl লিখেছি। এটি আপনাকে একটি কমেন্ট-ভিত্তিক রিপ্লাই দেয় যেখানে আপনি HTTP অনুরোধগুলি প্রকাশ করতে পারেন।

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

আপনি অনুরোধের ফলাফল গ্রাস করে এমন ফাংশনগুলি সহজেই যুক্ত করতে পারেন। এগুলি সাধারণত সুন্দর মুদ্রণ ইত্যাদির জন্য ব্যবহৃত হয় তবে বিল্ট জেসন লাইব্রেরি ব্যবহার করে একটি এলিজাপ কাঠামোতে পার্স করা সহজ হওয়া উচিত।


-1

এটি করা পুরোপুরি সম্ভব কারণ আমি প্রায় একই জিনিসটি নিজেই করি। যদিও বেশ কয়েকটা সতর্কীকরণ রয়েছে। সবার আগে আমার কাছে স্থানীয়ভাবে একটি প্যাচ xMLrpc.el লাইব্রেরি রয়েছে । এটি দুটি সমস্যার সমাধান করে, আধুনিক ইমাস সহ একটি অসঙ্গতি এবং অনুরোধে প্রমাণীকরণ শিরোনামগুলি পাস করার ক্ষমতা। আমি যে ডেটা প্রক্রিয়াকরণ করছি তা XML এ JSON তবে আপনি নিজের সেটআপের উপর নির্ভর করে XML ধাপটি এড়িয়ে যেতে সক্ষম হতে পারেন।

সমস্ত ভারী আরপিসি উত্তোলন লাভা-আরপিসি.এলে করা হয় তবে এটি অনুসরণ করা শক্ত হবে না। আপনি এখানে স্ট্রিংফাইড জসন জমা দেওয়ার জন্য কলটি দেখতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.