API开发文档

2016-11-11 10:51:27来源:作者:小眼睛看大世界人点击

项目说明

项目主要提供客户端所需的 APIs,运行于 Ubuntu 操作系统之上。项目开发的编程语言为 Ruby,采用 Ruby on Rails 网络开发框架。本地测试数据库为 SQLite3,生产环境则为 PostgreSQL。

搭建本地开发环境 git clone git@git.coding.net:joephon/api.gs.com.git gs-api.sparklog.comcd gs-api.sparklog.com && bundle install cp .env.example .env

项目的环境变量存放于 .env 文件

rails db:migraterails s

访问 http://localhost:3000

部署到服务器 git clone git@git.coding.net:joephon/api.gs.com.git gs-api.sparklog.comcd gs-api.sparklog.com && bundle install cp .env.example .env WECHAT_APPID=WECHAT_SECRET=SECRET_KEY_BASE=POSTGRESQL_USERNAME=POSTGRESQL_PASSWORD=POSTGRESQL_DATABASE= RAILS_ENV=production rails db:migrate gem install foremanforeman start

foreman 使用 Procfile 文件

配置 Nginx

upstream server_160323 { server unix:///tmp/puma.0.sock;}server { listen 80; server_name gs-api.sparklog.com; root /home/hello/code/gs-api.sparklog.com/public; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade websocket; proxy_set_header Connection upgrade; proxy_set_header Host $http_host; proxy_redirect off; try_files $uri @server_160323; } location @server_160323 { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade websocket; proxy_set_header Connection upgrade; proxy_set_header Host $http_host; proxy_pass http://server_160323; }} 项目架构

项目采用 Ruby on Rails 框架开发,当前框架版本为 5.0.0,主要为客户端提供 APIs。

项目文件目录说明

config/routes.rb

路由

controllers

控制器目录,主要的 APIs 逻辑,JsonWebToken 用户认证

models

数据模型目录,如下

app/models├── application_record.rb // ...├── carousel.rb // 走马灯├── category.rb // 专家分类├── concerns // ...├── expert_avatar.rb // 专家头像├── expert_image.rb // 专家图片├── expert_profile.rb // 专家个人资料├── feedback.rb // 用户反馈├── notification.rb // 系统消息├── patent.rb // 专利├── patent_category.rb // 专利分类├── settings.rb // 设置├── tag.rb // 标签├── tagging.rb // 标签关联表├── technology.rb // 专有技术├── technology_category.rb // 专有技术分类├── trix_image.rb // 编辑器图片└── user.rb // 用户

uploaders

图片上传

serializers

APIs Serializers

项目 APIs 列表

管理员

POST /sessions 用户认证 { "username": "admin", "password": "******"} curl -X POST http://localhost:3000/sessions -H 'Content-Type: application/json' -d '{"username": "admin", "password": "******"}'

微信登录

GET /wechat/authorize_url 微信授权POST /wechat/sessions?code={code} 用户认证

搜索

GET /search/experts?q={:query} 搜索专家GET /search/patents?q={:query} 搜索专利GET /search/technologies?q={:query} 搜索技术

分页参数 ?q={:query}&page={:page}&per_page={:per_page}

专家

GET /experts 资源列表GET /experts/:id 资源详情 GET /experts_images?token={:token} 获取专家图片GET /experts_avatars?token={:token} 获取专家头像 POST /experts_images?token={:token} 上传专家图片POST /experts_avatars?token={:token} 上传专家头像 PATCH /experts_images?expert_profile_id={:expert_profile_id}&token={:token} 更新专家图片PATCH /experts_avatars?expert_profile_id={:expert_profile_id}&token={:token} 更新专家头像 POST /alias_experts_images?expert_profile_id={:expert_profile_id}&token={:token} 更新专家图片POST /alias_experts_avatars?expert_profile_id={:expert_profile_id}&token={:token} 更新专家头像 DELETE /experts_images/:id?token={:token} 删除专家图片 POST /experts_apply?token={:token} 申请成为专家 POST /experts?token={:token} 创建资源PATCH /experts/:id?token={:token} 更新资源DELETE /experts/:id?token={:token} 删除资源 { "name": "", // 姓名 {孙青先} "title": "", // 标题 {技术型专家} "subtitle": "", // 副标 {荣获多重顶级头衔大奖} "position": "", // 职位 {高级工程师} "country": "", // 国家 {中国} "province": "", // 省份 {} "city": "", // 城市 {北京} "award": "", // 获奖 {诺贝尔培训奖} "education": "", // 学历 {双学位博士后} "introduction": "" // 介绍 {}} GET /experts/unapproved?token={:token} 等待审核PATCH /experts/:id/approve?token={:token} 审核通过

专利

GET /patents 资源列表GET /patents/:id 资源详情 POST /patents?token={:token} 创建资源PATCH /patents/:id?token={:token} 更新资源DELETE /patents/:id?token={:token} 删除资源 { "title": "", "body_html": "", "patent_category_id": 0}

专有技术

GET /technologiesGET /technologies/:id POST /technologies?token={:token} 创建资源PATCH /technologies/:id?token={:token} 更新资源DELETE /technologies/:id?token={:token} 删除资源 { "title": "", "body_html": "", "technology_category_id": 0}

专家分类

GET /categories 资源列表POST /categories?token={:token} 创建资源PATCH /categories/:id?token={:token} 更新资源DELETE /categories/:id?token={:token} 删除资源 { "name": "", "super_id": 0}

专利分类

GET /patent_categories 资源列表POST /patent_categories?token={:token} 创建资源PATCH /patent_categories/:id?token={:token} 更新资源DELETE /patent_categories/:id?token={:token} 删除资源 { "name": ""}

技术分类

GET /technology_categories 资源列表POST /technology_categories?token={:token} 创建资源PATCH /technology_categories/:id?token={:token} 更新资源DELETE /technology_categories/:id?token={:token} 删除资源 { "name": "", "super_id": 0}

标签

GET /tags 标签列表POST /tags?token={:token} 添加标签DELETE /tags/:id?token={:token} 删除标签 GET /experts/:id/tags 标签列表POST /experts/:id/tags?token={:token} 添加标签DELETE /experts/:expert_id/tags/:id?token={:token} 删除标签 GET /patents/:id/tags 标签列表POST /patents/:id/tags?token={:token} 添加标签DELETE /patents/:patent_id/tags/:id?token={:token} 删除标签 GET /technologies/:id/tags 标签列表POST /technologies/:id/tags?token={:token} 添加标签DELETE /technologies/:technology_id/tags/:id?token={:token} 删除标签 GET /tags?taggable_type=expert_profiles 专家标签列表GET /tags?taggable_type=technologies 技术标签列表GET /tags?taggable_type=patents 专利标签列表

推荐

GET /experts?tab=recommended 推荐专家GET /patents?tab=recommended 推荐专利GET /technologies?tab=recommended 推荐技术

用户

GET /current_user?token={:token} 登录用户 PATCH /users_extras?token={:token} { "contact_phone": "", // 电话 {} "contact_email": "", // 邮箱 {} "address": "", // 地址 {} "company": "" // 单位 {}} GET /users?token={:token} 资源列表PATCH /users/:id?token={:token} 更新资源DELETE /users/:id?token={:token} 删除资源 { "role": "" // %{admin staff wechat_user expert_user}}

地理位置

GET /provinces 省份列表GET /prefectures?code={:code} 城市列表GET /counties?code={:code} 县区列表

通知

GET /notifications?token={:token} 资源列表

用户反馈

GET /feedbacks?token={:token} 资源列表POST /feedbacks?token={:token} 创建资源 { "message_type": "", // %{patents experts technologies} "expert_profile_id": 0}

走马灯

GET /carousels 资源列表POST /carousels?token={:token} 创建资源PATCH /carousels/:id?token={:token} 更新资源DELETE /carousels/:id?token={:token} 删除资源 { "upload": "", "title": "", "link": ""}

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台