An open API service indexing awesome lists of open source software.

https://github.com/george518/ppgo_api_demo_gin

API接口应用Demo 基于Gin
https://github.com/george518/ppgo_api_demo_gin

api gin go golang restful-api

Last synced: about 1 year ago
JSON representation

API接口应用Demo 基于Gin

Awesome Lists containing this project

README

          

PPGo_Api_Demo_Gin
====
什么东西?What?
----
本项目是一个关于gin框架的练习代码。 采用go+mysql实现一个API应用实例。 练习内容包括: 中间件使用、RESTFul路由创建、mysql数据库使用、静态资源加载、页面创建、配置文件读取等等。

Gin是用Golang实现的一种Web框架。基于httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务

安装方法
----
1、```go get github.com/george518/PPGo_Api_Demo_Gin ```
2、创建mysql数据库,并将ppgo_api_demo_gin.sql导入
3、修改config/config.ini 配置数据库
4、运行 go build
5、运行 ```./run.sh start|stop ```
帮助访问:http://your_host:8000

有什么价值?
----
作用一:可以作为Gin框架的练手项目
作用二:可以用来快速搭建Gin框架的API应用
如果感觉项目不错,请赐予star, :)

API调用示例
----
新增会员 POST

```shell
curl -X POST http://127.0.0.1:8000/v0/member?sign=ee14b34513697cd27e0e83e46b084580&ts=1508304821&app_key=1001&method=POST -d "login_name=george518&password=123456"
```

会员列表 GET

```shell
curl -X GET http://127.0.0.1:8000/v0/member?page=1&page_size=4&sign=ee14b34513697cd27e0e83e46b084580&ts=1508304821&app_key=1001&method=GET
```

会员详情 GET

```shell
curl -X GET http://127.0.0.1:8000/v0/member/1?sign=ee14b34513697cd27e0e83e46b084580&ts=1508304821&app_key=1001&method=GET
```

编辑会员 PUT

```shell
curl -X PUT http://127.0.0.1:8000/v0/member/1?sign=ee14b34513697cd27e0e83e46b084580&ts=1508304821&app_key=1001&method=PUT -d "login_name=haodaquan&password=1234"
```

删除会员 DELETE

```shell
curl -X DELETE http://127.0.0.1:8000/v0/member/4?sign=ee14b34513697cd27e0e83e46b084580&ts=1508304821&app_key=1001&method=DELETE
```

可以在middlewares/auth.go中修改超时验证。
```go
//时差两秒返回无权 注意修改
time_check, _ := strconv.Atoi(ts)
if (now - int64(time_check)) > 100000000000 {
noAuth(c, "Time out")
return
}
```

PHP调用接口代码示例
----
```php
$timeout,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HTTPHEADER => $header
);
$app_key = $app_key ? $app_key : APP_KEY;
$app_secret = $app_secret ? $app_secret : APP_SECRET;
if($sign)
{
$ts = time();
$check =[
"app_key=" . $app_key,
"app_secret=" . $app_secret,
"method=" . $method,
"ts=" . $ts];
sort($check);
$url .= '?sign='.md5(join("&", $check)).
'&ts='.$ts.'&app_key='.$app_key
.'&method='.$method;
// print_r($url);
}
/* 根据请求类型设置特定参数 */
switch (strtoupper($method)) {
case 'GET':
if($params)
{
$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
}else
{
$opts[CURLOPT_URL] = $url;
}
break;
case 'POST':
$params = http_build_query($params);
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = $params;
break;
case 'DELETE':
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
$opts[CURLOPT_POSTFIELDS] = $params;
break;
case 'PUT':
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 0;
$opts[CURLOPT_CUSTOMREQUEST] = 'PUT';
$opts[CURLOPT_POSTFIELDS] = http_build_query($params);
break;
case 'PATCH':
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 0;
$opts[CURLOPT_CUSTOMREQUEST] = 'PATCH';
$opts[CURLOPT_POSTFIELDS] = http_build_query($params);
break;
default:
throw new Exception('不支持的请求方式!');
}

/* 初始化并执行curl请求 */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
return $data;
}

```

联系我
----
qq:41352963