如何将2个REST api连接在一起

时间:2018-02-14 12:15:53

标签: json rest api

我正在使用3dcart在线商店,我想将商店连接到名为ChannelGrabber的库存管理商店。 Channel Grabber为我提供了一些公钥和私钥以及一些API。

$ curl -v -X POST -d "grant_type=client_credentials&client_id=f836e7675c46adbc33d98e32c06dfc6f&client_secret=2f4e72f89bda7f15062a2ba9d107adb5" https://api.orderhub.io/accessToken
> POST /accessToken HTTP/1.1
> User-Agent: curl/7.35.0
> Host: api.orderhub.io
> Accept: */*
> Content-Length: 119
> Content-Type: application/x-www-form-urlencoded
>
< ...response headers...
{
    "access_token": "aVSyKhKNPi5XXJqlIMCNfeZwSfvTvasTcWyX2lv2",
    "token_type": "Bearer",
    "expires_in": 3600
}



 $ curl -v -X GET -H "Authorization: Bearer aVSyKhKNPi5XXJqlIMCNfeZwSfvTvasTcWyX2lv2" https://api.orderhub.io/ping
    > GET /ping HTTP/1.1
    > User-Agent: curl/7.35.0
    > Host: api.orderhub.io
    > Accept: */*
    > Authorization: Bearer aVSyKhKNPi5XXJqlIMCNfeZwSfvTvasTcWyX2lv2
    >
    < ...response headers...
    pong

3d cart提供了以下git项目,其中有一个如何连接到客户端API的示例。 https://github.com/3dcart/REST-API-Client/tree/master/3dCartRestAPIClient

我的问题是我基本上不知道如何连接这两种服务。然后使用什么语言然后使用Json,但我甚至不确定是否可能,我只是一个学生,并且仍然是编程世界的新手,所以我不想要说我不能做这个项目,我很想学习如何做到这一点。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

REST(Representational state transfer)是一种连接数据的方式。我们的想法是,操作应该由HTTP请求方法(GET,PUT,POST等)定义,而URL应该没有动词/动作,只是一种数据。

JSON只是服务器和客户端之间的通信方式。这就像2个人决定说同一种语言。

现在,在您的客户端中,您可以根据需要向尽可能多的服务发出请求,并解释结果。这几乎可以用任何编程语言实现。您将找到许多用于处理HTTP请求和解析JSON响应的库。

至于正确的方向。选择一种你更熟悉的编程语言(如果很难确定我会推荐相当容易入门的python)并寻找用于发送HTTP请求和解析json字符串的库。

答案 1 :(得分:0)

前段时间,我在问自己一个类似的问题。我已经熟悉使用python进行rest api的基本请求。我想连接一个称为pipedrive的在线销售工具的API和一个称为billomat的用于生成发票和账单的工具。两者都带有完善的rest api,我知道如何从它们中获取数据或在其中创建新数据。

如果我现在在本地计算机上创建一个python脚本,我可以想象我需要编写什么代码才能从pipedrive中提取客户数据并将这些客户数据创建到billomat中。现在的事情是,此过程完全是手动的。

要使该过程完全自动化,我得出以下结论:

  • 在发生某些事件时,在pipedrive中使用webhooks发送数据
  • 数据只能发送到通常应为rest api的url
  • 此网址不能直接理解,因为它不会理解或不知道如何处理数据
  • 这就是为什么我决定自己编写一个Lite API并将其托管在我的私人Web服务器上的原因
  • 此api从pipedrive接收数据,进行处理,例如将客户记录中的字段名称映射到billomat中的相应字段名称,然后将准备的数据以其期望和理解的格式发送到billomat

我知道这不能直接回答OP的问题,但是我建议您使用全自动解决方案,以防您无法更改要连接的两个api中至少一个的行为。