ruby-on-rails - Javascript Blob 的 Ruby 其余客户端 API 请求

标签 ruby-on-rails rest-client

我正在尝试在 Ruby 中为在此 page 中触发的 API 请求创建一个 rest-client 请求。 . ( source )

通过查看页面中的 Javascript,我注意到正在创建一个 Javascript Blob,并将 JSON 内容附加到该 Blob,然后使用以下脚本以多部分形式提交 -

我尝试使用以下代码使用 ruby​​ 中的 rest-client gem 模拟这一点 -

namespace :materialize do
  task :connect => :environment do
    base_uri = "https://imatsandbox.materialise.net/web-api/cartitems/register"
    request = '{
     "cartItems":[
     {
       "toolID":"d65e1eca-7adf-453d-a3bb-eb051fffb567",
       "MyCartItemReference":"some reference",
       "modelID":"62352bab-d490-410c-851d-bc62e056e82a",
       "modelFileName":"",
       "fileUnits":"mm",
       "fileScaleFactor":"1",
       "materialID":"035f4772-da8a-400b-8be4-2dd344b28ddb",
       "finishID":"bba2bebb-8895-4049-aeb0-ab651cee2597",
       "quantity":"1",
       "xDimMm":"12",
       "yDimMm":"159.94",
       "zDimMm":"12",
       "volumeCm3":"2.0",
       "surfaceCm2":"100.0",
       "iMatAPIPrice": "25.0",
       "mySalesPrice": "26.0",
     }
     ],
     "currency":"EUR"
  }'
File.open('request', 'wb') do |f|
    f.write request
end


  response = RestClient.post base_uri, {:data => request, headers: {:multipart => true, accept: :json}}
  puts response.request
 end
end

我总是得到响应体 -
"{\"error\":{\"message\":\"Wrong request body. Check if all parameters set correctly\",\"code\":401},\"cartItems\":[]}"

我究竟做错了什么?

最佳答案

您收到 401,这意味着您的请求未经授权。我认为您需要在请求中传递凭据。检查页面底部关于将您注册的电子邮件地址传递给演示 api 的注释:
https://imatsandbox.materialise.net/api/demo/

看起来你需要这样做:

https://i.materialise.com/web-api/materials?user=<your registered email address here>

关于ruby-on-rails - Javascript Blob 的 Ruby 其余客户端 API 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620194/

相关文章:

Mysql2::Error: 指定的键太长;最大 key 长度为 767 字节

ruby-on-rails - 大量并发调用时的乘客错误

javascript - Panzoom - 如何禁用拖动选项?

ruby-on-rails - 使用 rails scaffold 命令时是否可以为属性分配默认值?如何?

ruby-on-rails - 如何检查对象是否为 nil?

ruby-on-rails - 你什么时候将你的应用升级到 Rails 3?

authentication - 如何正确使用groovyx.net.http.RESTClient中的get方法

rest-client - Quarkus Rest 客户端永远不会超时

parameters - 带有请求参数的 RestTemplate GET 请求

java - 需要帮助使用 Java 高级 REST 客户端批量 API 创建动态 Elasticsearch 索引