- 浏览: 300706 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
ruby 调用restful接口示例
- 博客分类:
- RUBY
链接参数中添加token
headers中添加Authorization,body中也添加账号密码
body中使用账号和key
使用账号密码
添加时间参数的直接url+账户id
在body中加md5内容密码参数验证
url中,查询信息+密码后再md5加密的key
时间token加到headers
def self.query_products_list url = "#{ Settings.aikang_host }/api/v1/sku/instoreCAS?token=#{ Settings.aikang_token }" begin resp = HTTParty.get(url) rescue {} end end
headers中添加Authorization,body中也添加账号密码
def self.stock(sku = []) url = "#{Settings.aladdin_host}/index.php/rest/V2/product/stock" resp = HTTParty.post(url, body: {sku: sku}.to_json, headers: request_header) end # 产品新增 def self.create url = "#{Settings.aladdin_host}/index.php/rest/V2/product/new" resp = HTTParty.get(url, headers: request_header) end def self.order(orders) url = "#{Settings.aladdin_host}/index.php/api/http/order" secret_token = "Bearer " + Digest::MD5.hexdigest(Settings.aladdin_user_id.to_s + Settings.aladdin_company_code.to_s + Settings.aladdin_access_token.to_s).to_s headers = {'Authorization' => secret_token, 'Auth-Code' => Settings.aladdin_company_code.to_s, 'Content-Type' => 'application/json', 'User-Agent' => "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"} body = {user: {ald_user_id: Settings.aladdin_user_id.to_s, ald_user_email: Settings.aladdin_user_email.to_s}, orders: orders} puts body.to_json puts url puts headers resp = HTTParty.post(url, body: body.to_json, headers: headers) JSON.parse resp end private def self.request_header {'Authorization' => "Bearer #{Settings.aladdin_access_token}", 'Content-Type' => 'application/json'} end
body中使用账号和key
module Api module Baidu def self.get_access_token url = "https://aip.baidubce.com/oauth/2.0/token" body = {grant_type: 'client_credentials', client_id: Settings.baidu_ocr_api_key, client_secret: Settings.baidu_ocr_secret_key} resp = HTTParty.post(url, body: body) resp.parsed_response['access_token'] end def self.ocr_idcard(base64_code_image, side = :front) url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard" body = { access_token: get_access_token, detect_direction: true, id_card_side: side, image: base64_code_image, detect_risk: true } resp = HTTParty.post(url, body: body, headers: {'Content-Type' => 'application/x-www-form-urlencoded'}) resp.parsed_response end def self.ocr_business_license(base64_code_image, detect_direction = false) url = "https://aip.baidubce.com/rest/2.0/ocr/v1/business_license" body = { access_token: get_access_token, image: base64_code_image, detect_direction: detect_direction } resp = HTTParty.post(url, body: body, headers: {'Content-Type' => 'application/x-www-form-urlencoded'}) resp.parsed_response end end end
使用账号密码
module Api module Dibai def self.query_products(current_page, pagesize) resp = HTTParty.post("#{Settings.dibo_host}/api/get_products_list", body: {curpage: current_page, pagesize: pagesize}.merge(identity)) begin JSON.parse resp rescue {"state" => false, "data" => [], "message" => "接口异常", "count" => 0, "pages" => 0} end end def self.query_price(cas) resp = HTTParty.post("#{Settings.dibo_host}/api/instant_stock", body: {key_word: cas}.merge(identity)) begin JSON.parse resp rescue {"state" => false, "packing_count" => 0, "data" => [], "message" => "接口异常"} end end private def self.identity {username: Settings.dibo_username, password: Settings.dibo_password} end end end
添加时间参数的直接url+账户id
def self.query_products(startdate, current_page = 1, pagesize = 10000) key = Digest::MD5.hexdigest(startdate + 'jkchemical').upcase url = "#{Settings.bailingwei_host}/WebService/ThirdPartyPlatform/ThirdPartyPlatformServiceHandler.ashx?key=#{ key }&startDate=#{ startdate }&pageIndex=#{ current_page }&pageSize=#{ pagesize }&thirdPartyPlatformId=6823432af42d244d8926f" res = HTTParty.get(url) begin JSON.parse res rescue {} end end
在body中加md5内容密码参数验证
# 产品查询 def self.query_product(cas) url = "#{Settings.macklin_host}/api/attachs/products" body = {attachs_code: Settings.macklin_username, timestamp: Time.now.to_datetime.strftime("%Q"), cas: cas.to_s.strip} body[:signcode] = signature(body) begin resp = HTTParty.post(url, body: body) resp["msg"]["items"] rescue [] end end # 签名 def self.signature(params) str = params.keys.sort.map{|k| params[k]}.join('').to_s + Settings.macklin_password.to_s Digest::MD5.hexdigest str end
url中,查询信息+密码后再md5加密的key
def self.query_product(product_no) key = "#{ Settings.meryer_secret }KEYWYeAdcaDXQproductCode#{ product_no }#{ Settings.meryer_secret }" sign = Digest::MD5.hexdigest(key).upcase url = "#{ Settings.meryer_host }/api/getpro.ashx?KEY=WYeAdcaDXQ&productCode=#{ product_no }&SIGN=#{ sign }" begin resp = HTTParty.get(url) JSON.parse resp rescue {} end end
时间token加到headers
module Api module Qichacha def self.get_enterprise_detail(keyword) daily_max_count = Lookup.find_by(code: :qichacha_daily_request_max_count)&.name.to_i counter = Counter.find_or_create_by(usage: "http://i.yjapi.com/ECIV4/GetDetailsByName", entity_type: "Employee", entity_id: 1, key: Time.now.strftime("%Y%m%d000000")) if counter.count < daily_max_count url = "http://api.qichacha.com/ECIV4/GetDetailsByName?key=#{Settings.qichacha_key}&keyword=#{keyword.to_s.strip}" timespan = Time.now.to_i.to_s token = Digest::MD5.hexdigest(Settings.qichacha_key.to_s + timespan + Settings.qichacha_secret_key).upcase resp = HTTParty.get(url, headers: {"Token" => token, "Timespan" => timespan}) counter.incr! if resp["Status"].to_i == 200 return resp else return { "Status" => "over limit"} end end end end
发表评论
-
git仓库创建
2020-09-04 15:33 707推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 475nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 890业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 835class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 564require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 530针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1155<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 969gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 667def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 730sign = OpenSSL::Digest::SHA256. ... -
rails错误日志记录
2018-12-19 14:41 757Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件 ... -
railsAPI接收Base64文件
2018-12-18 11:05 1036tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 1016例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 441关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1158def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1084[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1382登录阿里云后首先 sudo apt-get update a ... -
打包订单单据发给货代
2018-09-11 15:43 1179pdf&excell&png # rend ... -
基于mini_magick多图片合并/添加水印
2018-07-02 17:44 1707class ImageService requi ...
相关推荐
HTTP接口通常指的是通过HTTP协议暴露出来的一组可供其他程序调用的API,这些API可以是RESTful风格的,也可以是SOAP等其他格式。 GB2312是一种简体中文字符集,主要用于早期的中文系统。在现代的互联网环境中,...
在这个示例中,我们将探讨如何利用Net::HTTP库来构建一个简单的验证系统。 首先,让我们理解短信验证码的原理。短信验证码是一种安全机制,通常用于身份验证或防止欺诈行为。用户在注册或登录时,系统会向他们的...
Ruby-RESTClient是一个轻量级、易于使用的库,专门用于执行HTTP和RESTful API调用。这个库使得在Ruby环境中进行Web服务交互变得极其简单,是开发者进行API测试和集成时的常用工具。RESTClient提供了丰富的功能,可以...
这将帮助你掌握Rails的核心概念,包括RESTful设计原则、ActiveRecord查询接口、TDD(测试驱动开发)方法等。 总之,Ruby on Rails提供了一种优雅的方式来构建Web应用,它的约定优于配置的理念减少了大量重复的代码...
在这个例子中,`json.`是Jbuilder DSL的起始关键字,后面的每个方法调用都会在JSON对象中添加一个键值对。`@user`是Ruby中的实例变量,它包含了User模型的数据。 Jbuilder也支持嵌套结构,这对于表示层级关系的数据...
- 在这个中文教程中,你将有机会阅读和理解真实的Ruby代码示例,有助于巩固理论知识并提升实践技能。 本教程适合对编程有一定了解,希望学习一种新的动态语言的读者。通过学习,你可以掌握Ruby的基本概念,理解其...
总结来说,ruby-couch-db是Ruby开发者与CouchDB数据库交互的重要工具,其源码揭示了如何通过Ruby语言优雅地封装CouchDB的RESTful API,实现对数据库的各种操作。通过深入理解其内部机制,开发者可以更加熟练地使用这...
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率,简化Web应用开发流程。Depot是一个经典的Rails教程示例项目,它展示了如何...
这个压缩包包含了“Ruby on Rails敏捷开发最佳实践”一书中的所有源代码示例,这些代码实例深入浅出地展示了如何运用Rails框架进行高效、灵活的Web应用开发。 在Ruby on Rails中,"敏捷开发"意味着快速响应变化,...
`jsgrid-rails` 是一个示例项目,它演示了如何将流行的轻量级JavaScript数据网格库 `jsGrid` 与 Ruby on Rails 框架集成,通过RESTful API 提供数据服务。该项目的目标是展示在Web应用中实现动态、交互式的数据操作...
Ruby是一种动态、面向对象的脚本语言,广泛用于Web开发,尤其在构建RESTful API时。在Ruby中,为了提供结构化的数据交换格式,JSON(JavaScript Object Notation)经常被用作API的数据载体。HAL(Hypertext ...
它涵盖了从用户界面到数据库的所有方面,提供了前端和后端的实现,包括但不限于React、Vue、Angular等前端框架,以及Node.js、Django、Ruby on Rails等后端框架。 在JavaScript开发中,"其它杂项"标签可能指的是这...
这本书的配套代码提供了丰富的示例和练习,帮助读者深入理解Rails的运作机制。 在Rails框架中,我们主要涉及以下几个核心知识点: 1. **MVC架构**:Rails基于Model-View-Controller(MVC)设计模式,将应用程序...
8. **示例代码的使用**:"main.go" 示例代码展示了如何初始化和使用 "go-rubychina" 库。通过阅读和理解这个示例,开发者可以快速上手。 9. **API 设计原则**:良好的 API 设计应遵循 RESTful 原则,包括使用 HTTP ...
Ruby是一种面向对象的编程语言,尤其在Web开发领域中,Ruby on Rails(简称Rails)框架因其高效、简洁和灵活性而受到广泛欢迎。Rails是构建Web应用程序的利器,它提供了许多内置的功能来简化开发过程,包括身份验证...
在提供的压缩包文件"rubrica-gal-master"中,可能是一个开源项目或者示例代码库,但由于没有具体的上下文,我们无法详细讨论其内容。通常,一个项目名可能包含项目的核心功能或主题,"rubrica"在意大利语中意为...