文档章节

简单的几句接口调用,完美完成缩短网站

h
 huangxie
发布于 10/10 17:02
字数 622
阅读 17
收藏 0

短网址有时候确实是非常刚需的一个需求,网上这类网站是很多的,但是有时候想调用接口来缩短网址,很多这类网站却没有提供。网上常用的接口比如新浪的短网址接口,小葱计算的短网址接口,其实都很好用,现在以小葱计算的短网址接口为例,用nodejs来展示如何使用:

var http = require('http'); 
var qs = require('querystring'); 

//配置您申请的appKey和openId
app_key = "***";
open_id = "***";
 
function request_content(request_url,port,params,method){
	
	var path=request_url;
	if(!!params){
		var content = qs.stringify(params);  
		path=request_url+'?' + content;
	}
	
	var options = { 
		port: port,
		path: path,
		method: method
	}; 
	
	if(method.toLowerCase()=='post'){
		options['headers']="Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8";
	}

	var req = http.request(options, function (res) { 
		res.setEncoding('utf8'); 
		res.on('data', function (chunk) { 
			console.log(chunk); 
		}); 
	});  
	
	req.on('error', function (e) { 
		console.log('problem with request: ' + e.message); 
	}); 
	
	req.end();
}

function main(){

	var domain="http://api.xiaocongjisuan.com/";
	var port=8080;//http对应80端口,https 对应443端口,请使用者自己改正
	var servlet="life/shorturl/get";
	var method="get";
	var request_url=domain+servlet;

	var params = {}; 
	params['appKey']=app_key;
    params['openId']=open_id;
	
	//变动部分
	params["url"]="https://www.baidu.com/";
	
	request_content(request_url,port,params,method);
}

main();

当然go语言的实现方式也挺简单的,如下:

package main

import (
    "io/ioutil"
    "net/http"
    "net/url"
    "fmt"
	"strings"
)
 
//配置您申请的appKey和openId
const APP_KEY ="yours";
const OPEN_ID ="yours";

func requestContent(requestUrl string,params url.Values,method string)(rs[]byte ,err error){
	
	if strings.ToUpper(method)=="GET"{
		return get(requestUrl,params)
	}
	return post(requestUrl,params)
}

// get 网络请求
func get(requestUrl string,params url.Values)(rs[]byte ,err error){
    var Url *url.URL
    Url,err=url.Parse(requestUrl)
    if err!=nil{
        fmt.Printf("解析url错误:\r\n%v",err)
        return nil,err
    }
    //如果参数中有中文参数,这个方法会进行URLEncode
    Url.RawQuery=params.Encode()
    resp,err:=http.Get(Url.String())
    if err!=nil{
        fmt.Println("err:",err)
        return nil,err
    }
    defer resp.Body.Close()
    return ioutil.ReadAll(resp.Body)
}
 
// post 网络请求 ,params 是url.Values类型
func post(requestUrl string, params url.Values)(rs[]byte,err error){
    resp,err:=http.PostForm(requestUrl, params)
    if err!=nil{
        return nil ,err
    }
    defer resp.Body.Close()
    return ioutil.ReadAll(resp.Body)
}

func main(){

	domain :="http://api.xiaocongjisuan.com/"

	servlet :="life/shorturl/get"
	method :="get"
	requestUrl:=domain+servlet
	
    //初始化参数
    params:=url.Values{}
	
	params.Set("appKey",APP_KEY)
	params.Set("openId",OPEN_ID)
	
	//变动部分
	params.Set("url","https://www.baidu.com/")
 
 
    //发送请求
    data,err:=requestContent(requestUrl,params,method)
    fmt.Println(string(data))
	if err!=nil{
        fmt.Printf("解析url错误:\r\n%v",err)
    }
}	

调用api实现,没有太大的技术复杂度,感谢阅读。

© 著作权归作者所有

h
粉丝 0
博文 16
码字总数 11858
作品 0
成都
私信 提问
移动Web滑动特效--SlipJs

SlipJs可以让你的手机网站像原生手机软件一样惯性滚动,手触图片轮换等等。 为什么用 SlipJs? 简单易用 几句简单的代码就可以实现复杂完美的效果,加上详细的中文教程,这一切都使你能快速的...

真友
2014/08/03
4.2K
1
AI人工智能-Python实现人机对话

【前言】   AI   在人工智能进展的如火如荼的今天,我们如果不尝试去接触新鲜事物,马上就要被世界淘汰啦~   本文拟使用Python开发语言实现类似于WIndows平台的“小娜”,或者是IOS下的...

柒小栈主
2017/07/27
0
0
基于 ThinkPHP 的内容管理框架--ThinkCMF Extend

ThinkCMF Extend 是一款基于ThinkPHP3.21开的发的内容管理框架,业务实现得益了重构了ThinkCMF框架,继承了灵活的应用机制与管理机制。在Extend版本中添加微信内容接口,用户在安装CMF后,只...

邹景立
2014/03/10
9.6K
0
PHPRAP 启用独立域名 www.phprap.com

PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP。 更新记录 【优化】启用独立域名 http://www.phprap.com 【修复】修复...

够过瘾
2017/11/27
2.6K
7
PHPRAP 1.0.1 发布,修复 Bug 并支持 MOCK 服务

PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP。 更新记录 修复在nginx服务器下报错的BUG 修复PHP7版无法获取mysql版本...

够过瘾
2017/11/05
171
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊rocketmq的AccessChannel

序 本文主要研究一下rocketmq的AccessChannel AccessChannel rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/AccessChannel.java public enum AccessChannel { /** ......

go4it
昨天
5
0
自己实现 aop 和 spring aop

上文 说到,我们可以在 BeanPostProcessor 中对 bean 的初始化前化做手脚,当时也说了,我完全可以生成一个代理类丢回去。 代理类肯定要为用户做一些事情,不可能像学设计模式的时候创建个代...

sanri1993
昨天
4
0
Java 8 Stream Api 中的 skip 和 limit 操作

1. 前言 Java 8 Stream API 中的skip()和limit()方法具有类似的作用。它们都是对流进行裁剪的中间方法。今天我们来探讨一下这两个方法。 2. skip() skip(lang n) 是一个跳过前 n 个元素的...

码农小胖哥
昨天
8
0
看中华小当家第二集片段记录

最近正好在学习做饭,看看这片子,燃烧燃烧做饭的热情 哈哈,以下是摘的一些句子和个人理解 My name is Liu Mao Xing . More commonly known as Mao. 个人理解:我的名字叫 刘昴星, (commo...

T型人才追梦者
昨天
3
0
Python基础-6

1、注释 # 单行注释'''多行注释'''"""多行注释"""# 中文编码声明注释 ,在文件开头加上下面这行注释# encoding=utf-8或者# -*- encoding:utf-8 -*- (-*- 只是为了美观,没有实际......

zfskkk
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部