{"id":19081811,"url":"https://github.com/george518/ppgo_api_demo_gin","last_synced_at":"2025-04-30T07:45:26.964Z","repository":{"id":57484161,"uuid":"107366632","full_name":"george518/PPGo_Api_Demo_Gin","owner":"george518","description":"API接口应用Demo 基于Gin","archived":false,"fork":false,"pushed_at":"2017-10-18T15:36:39.000Z","size":531,"stargazers_count":88,"open_issues_count":1,"forks_count":23,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-18T23:59:30.685Z","etag":null,"topics":["api","gin","go","golang","restful-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/george518.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-18T06:19:48.000Z","updated_at":"2025-01-03T21:46:33.000Z","dependencies_parsed_at":"2022-08-26T14:21:03.044Z","dependency_job_id":null,"html_url":"https://github.com/george518/PPGo_Api_Demo_Gin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2FPPGo_Api_Demo_Gin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2FPPGo_Api_Demo_Gin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2FPPGo_Api_Demo_Gin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2FPPGo_Api_Demo_Gin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/george518","download_url":"https://codeload.github.com/george518/PPGo_Api_Demo_Gin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251665110,"owners_count":21624233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","gin","go","golang","restful-api"],"created_at":"2024-11-09T02:39:20.934Z","updated_at":"2025-04-30T07:45:26.887Z","avatar_url":"https://github.com/george518.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"PPGo_Api_Demo_Gin\n====\n什么东西？What?\n----\n本项目是一个关于gin框架的练习代码。 采用go+mysql实现一个API应用实例。 练习内容包括： 中间件使用、RESTFul路由创建、mysql数据库使用、静态资源加载、页面创建、配置文件读取等等。\u003cbr /\u003e\nGin是用Golang实现的一种Web框架。基于httprouter，它提供了类似martini但更好性能(路由性能约快40倍)的API服务\n\n安装方法\n----\n1、```go get github.com/george518/PPGo_Api_Demo_Gin ```   \n2、创建mysql数据库，并将ppgo_api_demo_gin.sql导入    \n3、修改config/config.ini 配置数据库    \n4、运行 go build    \n5、运行 ```./run.sh start|stop   ``` \n帮助访问：http://your_host:8000  \n\n有什么价值？    \n----\n作用一：可以作为Gin框架的练手项目    \n作用二：可以用来快速搭建Gin框架的API应用    \n    如果感觉项目不错，请赐予star, :)            \n\nAPI调用示例\n----\n新增会员 POST\u003cbr /\u003e\n```shell \ncurl -X POST http://127.0.0.1:8000/v0/member?sign=ee14b34513697cd27e0e83e46b084580\u0026ts=1508304821\u0026app_key=1001\u0026method=POST -d \"login_name=george518\u0026password=123456\"\n```\n\n会员列表 GET\u003cbr /\u003e\n```shell\ncurl -X GET http://127.0.0.1:8000/v0/member?page=1\u0026page_size=4\u0026sign=ee14b34513697cd27e0e83e46b084580\u0026ts=1508304821\u0026app_key=1001\u0026method=GET\n```\n\n会员详情 GET\u003cbr /\u003e\n```shell\ncurl -X GET http://127.0.0.1:8000/v0/member/1?sign=ee14b34513697cd27e0e83e46b084580\u0026ts=1508304821\u0026app_key=1001\u0026method=GET\n```\n\n编辑会员 PUT\u003cbr /\u003e\n```shell\ncurl -X PUT http://127.0.0.1:8000/v0/member/1?sign=ee14b34513697cd27e0e83e46b084580\u0026ts=1508304821\u0026app_key=1001\u0026method=PUT -d \"login_name=haodaquan\u0026password=1234\" \n```\n\n删除会员 DELETE\u003cbr /\u003e\n```shell\ncurl -X DELETE http://127.0.0.1:8000/v0/member/4?sign=ee14b34513697cd27e0e83e46b084580\u0026ts=1508304821\u0026app_key=1001\u0026method=DELETE\n```\n\n\n可以在middlewares/auth.go中修改超时验证。\n```go\n//时差两秒返回无权 注意修改\ntime_check, _ := strconv.Atoi(ts)\nif (now - int64(time_check)) \u003e 100000000000 {\n    noAuth(c, \"Time out\")\n    return\n}\n```\n\nPHP调用接口代码示例\n----\n```php\n\u003c?php\n/************************************************************\n** @Description: PPGo_Api_Demo_Gin API调用DEMO for PHP\n** @Author: haodaquan\n** @Date:   2017-03-24 14:32:48\n** @Last Modified by:   haodaquan\n** @Last Modified time: 2017-10-11 13:49:57\n*************************************************************/\ndefined('APP_KEY') OR define(\"APP_KEY\",\"1001\");\ndefined('APP_SECRET') OR define(\"APP_SECRET\",\"haodaquan\");\n$url = \"http://127.0.0.1:8000/v0/member/3\";\n$params[\"ts\"] = time();\n$params[\"method\"] = \"GET\";\n$res = http($url,$params,\"GET\",[],10,true);\nprint_r($res);\n/**\n * [http 调用接口函数]\n * @Date   2016-07-11\n * @Author GeorgeHao\n * @param  string       $url     [接口地址]\n * @param  array        $params  [数组]\n * @param  string       $method  [GET\\POST\\DELETE\\PUT]\n * @param  array        $header  [HTTP头信息]\n * @param  integer      $timeout [超时时间]\n * @param  boolean      $sign    [是否加密]\n * @param  string       $app_key [应用号]\n * @param  string       $app_secret [应用密码]\n * @return [type]                [接口返回数据]\n */\nfunction http($url, $params, $method = 'GET', $header = array(), $timeout = 10,$sign=false,$app_key='',$app_secret='')\n{\n    $opts = array(\n        CURLOPT_TIMEOUT =\u003e $timeout,\n        CURLOPT_RETURNTRANSFER =\u003e 1,\n        CURLOPT_SSL_VERIFYPEER =\u003e false,\n        CURLOPT_SSL_VERIFYHOST =\u003e false,\n        CURLOPT_HTTPHEADER =\u003e $header\n    );\n    $app_key    = $app_key ? $app_key : APP_KEY;\n    $app_secret = $app_secret ? $app_secret : APP_SECRET;\n    if($sign)\n    {\n        $ts = time();\n        $check =[\n            \"app_key=\" . $app_key,\n            \"app_secret=\" . $app_secret,\n            \"method=\" . $method,\n            \"ts=\" . $ts];\n        sort($check); \n        $url .= '?sign='.md5(join(\"\u0026\", $check)).\n                '\u0026ts='.$ts.'\u0026app_key='.$app_key\n                .'\u0026method='.$method;\n        // print_r($url);\n    }\n    /* 根据请求类型设置特定参数 */\n    switch (strtoupper($method)) {\n        case 'GET':\n            if($params)\n            {\n               $opts[CURLOPT_URL] = $url . '?' . http_build_query($params); \n            }else\n            {\n                $opts[CURLOPT_URL] = $url;\n            }\n            break;\n        case 'POST':\n            $params = http_build_query($params);\n            $opts[CURLOPT_URL] = $url;\n            $opts[CURLOPT_POST] = 1;\n            $opts[CURLOPT_POSTFIELDS] = $params;\n            break;\n        case 'DELETE':\n            $opts[CURLOPT_URL] = $url;\n            $opts[CURLOPT_HTTPHEADER] = array(\"X-HTTP-Method-Override: DELETE\");\n            $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';\n            $opts[CURLOPT_POSTFIELDS] = $params;\n            break;\n        case 'PUT':\n            $opts[CURLOPT_URL] = $url;\n            $opts[CURLOPT_POST] = 0;\n            $opts[CURLOPT_CUSTOMREQUEST] = 'PUT';\n            $opts[CURLOPT_POSTFIELDS] = http_build_query($params);\n            break;\n        case 'PATCH':\n            $opts[CURLOPT_URL] = $url;\n            $opts[CURLOPT_POST] = 0;\n            $opts[CURLOPT_CUSTOMREQUEST] = 'PATCH';\n            $opts[CURLOPT_POSTFIELDS] = http_build_query($params);\n            break;\n        default:\n            throw new Exception('不支持的请求方式！');\n    }\n  \n    /* 初始化并执行curl请求 */\n    $ch     = curl_init();\n    curl_setopt_array($ch, $opts);\n    $data   = curl_exec($ch);\n    $error  = curl_error($ch);\n    return $data;\n}\n\n```           \n\n联系我\n----\nqq:41352963\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorge518%2Fppgo_api_demo_gin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeorge518%2Fppgo_api_demo_gin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorge518%2Fppgo_api_demo_gin/lists"}