我如何"转换" Unix命令行参数到URL?

时间:2014-09-13 05:32:21

标签: xml perl shell rest unix

所以我试图弄清楚如何从Pfam蛋白质序列搜索服务的REST Api获取XML文档来构建Java应用程序。不幸的是,他们的所有文档都假定您将使用Unix命令行或脚本语言,如Perl。基本上,我想要做的是将以下Unix命令行参数“转换”为一个URL,我可以在Web浏览器中输入以检索xml文档:

shell% curl -LH 'Expect:' -F seq=abhsghdsgsbsfkgajsdhsjsjsjdhsjshdj -F output=xml 'http://pfam.xfam.org/search/sequence'

以下是API文档的链接(http://pfam.xfam.org/help#tabview=tab10)。 谢谢你的帮助。

4 个答案:

答案 0 :(得分:2)

您链接到的文档从一开始就解释了这一点;但我想作者可以更清楚地了解如何在不熟悉HTTP的读者之间转换GET和POST请求。

http://pfam.xfam.org/search/sequence?seq=abhsghdsgsbsfkgajsdhsjsjsjdhsjshdj&output=xml

答案 1 :(得分:2)

您提供的链接包含原因目前还没有使用typycal浏览器的方式:

  

运行搜索分为两个步骤:

     
      
  • 提交搜索序列并指定搜索参数
  •   
  • 以XML格式检索搜索结果
  •   
     

将操作分为两个步骤而不是分开的原因   在单个操作中执行搜索是指所花费的时间   执行序列搜索会根据长度而变化   序列搜索。 大多数网络客户端,浏览器或脚本都很简单   如果在短时间内未收到回复,则超时,   通常不到一分钟。通过提交搜索,等待然后   将结果作为单独的操作检索,我们避免了a的风险   客户在结果返回之前达到超时。

答案 2 :(得分:1)

浏览man page上的参数:

  • -LH' Expect',看起来像是发送了一个Expect标头。把它放在你的请求标题中。
  • -F key = value,这些是在帖子正文中的表单值。把它们放在那里。

现在你有了这些要求,去写一些perl!

答案 3 :(得分:1)

  

"转换"将以下Unix命令行参数放入url中,我可以在Web浏览器中键入以检索xml文档

不幸的是,只有这里的信息,您无法做到这一点。这个语法

  • 包含自定义Expect:标题
  • 指定请求应为POST,请求正文中包含字段(-F)。

您直接输入浏览器的任何内容都是GET,没有自定义标题。

但是,可能该服务还将接受GET,其中包含查询中指定的参数:

http://pfam.xfam.org/search/sequence?output=xml&seq=abhsghdsgsbsfkgajsdhsjsjsjdhsjshdj'