PHPackages                             sammy/specification - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. sammy/specification

ActiveLibrary[API Development](/categories/api)

sammy/specification
===================

Api Server

1(8y ago)017MITPHPPHP &gt;=7.0

Since Apr 1Pushed 8y agoCompare

[ Source](https://github.com/SammyLee666/ApiServer)[ Packagist](https://packagist.org/packages/sammy/specification)[ RSS](/packages/sammy-specification/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (2)Used By (0)

API服务端架构代码
==========

[](#api服务端架构代码)

\[TOC\]

1. 部署说明
-------

[](#1-部署说明)

> 现有API基于laravel框架开发，本次介绍也针对laravel。可根据文档自行调整，以适用其他框架下使用

> 安装 `composer require sammy/specification dev-master`

### 1.1. 数据库相关

[](#11-数据库相关)

执行数据库迁移 `php artisan migrate`

或者手动执行如下SQL语句

```
CREATE TABLE `prefix_apps` (
  `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '自增长',
  `app_id` VARCHAR(60) NOT NULL COMMENT 'appid',
  `app_secret` VARCHAR(100) NOT NULL COMMENT '密钥',
  `app_name` VARCHAR(200) NOT NULL COMMENT 'app名称',
  `app_desc` TEXT COMMENT '描述',
  `status` TINYINT(2) DEFAULT '0' COMMENT '生效状态',
  `created_at` INT(10) NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updated_at` INT(10) NOT NULL DEFAULT '0' COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `app_id` (`app_id`),
  KEY `status` (`status`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='应用表';
```

### 1.2. 目录相关

[](#12-目录相关)

标题路径API核心目录`vendor/sammy/specification/`apps数据库模型`app/Models/App.php`路由配置`routes/api.php`2. API文档及开发规范
-------------

[](#2-api文档及开发规范)

### 2.1. API调用协议

[](#21-api调用协议)

#### 2.1.1. 请求方式

[](#211-请求方式)

> 请求方式：`POST`/`GET`

#### 2.1.2. 公共参数

[](#212-公共参数)

参数名类型是否必须描述app\_idstring是应用IDformatstring否回调格式，默认：json（目前仅支持）sign\_methodstring否签名类型，默认：md5（目前仅支持）noncestring是随机字符串，长度1-32位任意字符signstring是签名字符串，参考[签名规则](#%E7%AD%BE%E5%90%8D%E8%A7%84%E5%88%99)#### 2.1.3. 业务参数

[](#213-业务参数)

> API调用除了必须包含公共参数外，如果API本身有业务级的参数也必须传入，每个API的业务级参数请考API文档说明。

#### 2.1.4. 签名规则

[](#214-签名规则)

- 对所有API请求参数（包括公共参数和请求参数，但除去`sign`参数），根据参数名称的ASCII码表的顺序排序。如：`foo=1, bar=2, foo_bar=3, foobar=4`排序后的顺序是`bar=2, foo=1, foo_bar=3, foobar=4`。
- 将排序好的参数名和参数值拼装在一起，根据上面的示例得到的结果为：bar2foo1foo\_bar3foobar4。
- 把拼装好的字符串采用utf-8编码，使用签名算法对编码后的字节流进行摘要。如果使用`MD5`算法，则需要在拼装的字符串前后加上app的`secret`后，再进行摘要，如：md5(secret+bar2foo1foo\_bar3foobar4+secret)
- 将摘要得到的字节结果使用大写表示

#### 2.1.5. 返回结果

[](#215-返回结果)

```
// 成功
{
    "status": true,
    "code": "200",
    "msg": "成功",
    "data": {
        "time": "2016-08-02 12:07:09"
    }
}

// 失败
{
    "status": false,
    "code": "1001",
    "msg": "[app_id]缺失"
}
```

### 2.2. API开发规范

[](#22-api开发规范)

#### 2.2.1. API接口命名规范（method）

[](#221-api接口命名规范method)

#### 2.2.1. 错误码

[](#221-错误码)

> 错误码配置：`vendor/sammy/specification/Error.php`

命名规范：

类型长度说明系统码3同`http状态码`公共错误码4公共参数错误相关的错误码业务错误码6+2位业务码+4位错误码，不足补位现有错误码：

错误码错误内容200成功400未知错误401无此权限500服务器异常1001\[app\_id\]缺失1002\[app\_id\]不存在或无权限1003\[method\]缺失1004\[format\]错误1005\[sign\_method\]错误1006\[sign\]缺失1007\[sign\]签名错误1008\[method\]方法不存在1009run方法不存在，请联系管理员1010\[nonce\]缺失1011\[nonce\]必须为字符串1012\[nonce\]长度必须为1-32位#### 2.2.3. API DEMO 示例

[](#223-api-demo-示例)

示例代码：##
-------

[](#示例代码)

```
class TestController extends Controller
{
    public function index(Request $request, Server $server){

        return $server->run(function()use($request){

            return [
                'status' => true,
                'code'   => '200',
                'data'   =>  [
                    date('Y-m-d H:i:s')
                ]
            ];

        });

    }
}

```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2965d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/267a7afa9047c2c985fd81861e95caf828b257d1a0cf5b9912f9c3a261951224?d=identicon)[369787068](/maintainers/369787068)

### Embed Badge

![Health badge](/badges/sammy-specification/health.svg)

```
[![Health](https://phpackages.com/badges/sammy-specification/health.svg)](https://phpackages.com/packages/sammy-specification)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M187](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M454](/packages/google-gax)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
