elchroy/lemojis

此包的最新版本(dev-analysis-8bQn6j)没有可用的许可信息。

dev-analysis-8bQn6j 2016-04-26 09:18 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:33:54 UTC


README

Coverage Status StyleCI Build Status

一个简单的PHP Naija-Emoji服务。

安装

要运行此包,您必须安装PHP 5.5+和Composer。

首先下载包。

composer require elchroy/lemojis dev-develop

安装Composer。

$ composer install

要使用应用程序,您必须设置一个主机和数据库,以便从中获取emoji。

  • 在您应用程序的根目录中创建一个名为 config.ini 的文件。
  • 此包使用Laravel的 Illuminate/Database 包。请确保您的配置文件有如下 collationcharset
driver      = mysql
database    = naija
host        = localhost
username    = root
password    =
charset     = utf8
collation   = utf8_unicode_ci
prefix      =

用法

创建一个 index.php 文件,最好是从您应用程序的根目录开始,然后运行您的服务器。

// index.php

// Require the autoload the vendor folder.
require_once 'vendor/autoload.php';

// Make a new instance of the application.
$app = new Elchroy\Lemojis\LemojisApp();

// Run the application.
$app->run();

您可以使用终端中的PHP运行服务器,如下所示

php -S localhost:8000

PHP 7.0.2 Development Server started at Fri Apr 15 11:59:42 2016
Listening on https://:8000
Document root is /Users/user/Code/CP3/Lemojis/public
Press Ctrl-C to quit.
  • 为了说明此包的用法,我将使用 curl 来处理HTTP请求。
  • 注意,您可以使用Postman或DHC等工具。

主页路由

从终端运行以下 curl 命令。

curl -i -X GET -H 'Content-Type: application/json' https://:8000/

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: text/html; charset=UTF-8
Content-Length: 49

Welcome to Lemoji - A Simple Naija Emoji Service.

获取所有emoji

curl -i -X GET -H 'Content-Type: application/json' https://:8000/emojis

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 378

{"message":"OK","data":[{"id":1,"name":"smile","chars":"s","keywords":"smile","category":"expressions","date_created":"2016-03-12 17:04:18","date_modified":"2016-03-12 17:04:30","created_by":"roy"},{"id":2,"name":"smiley","chars":"sly","keywords":"smilely","category":"expressions","date_created":"2016-02-12 17:04:20","date_modified":"2016-02-12 17:05:18","created_by":"roy"}]}

根据ID获取一个emoji

curl -i -X GET -H 'Content-Type: application/json' https://:8000/emojis/2

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 202

{"message":"OK","data":{"id":2,"name":"smiley","chars":"sly","keywords":"smilely","category":"expressions","date_created":"2016-02-12 17:04:20","date_modified":"2016-02-12 17:05:18","created_by":"roy"}}

获取一个不可用的emoji

当emoji未找到或数据库表中没有emoji时,将返回 404 响应。

curl -i -X GET -H 'Content-Type: application/json' https://:8000/emojis/200

响应

HTTP/1.1 404 Not Found
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 47

{"message":"Cannot find the emoji","data":null}

注册用户

要注册和使用此API,您只需要用户名和密码。

curl -i -X POST -H 'Content-Type: application/json' -d '{"username" : "elchroy", "password" : "yorhcle"}' https://:8000/auth/register

响应

HTTP/1.1 201 Created
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 65

{"message":"New user has been created successfully.","data":null}

登录

要登录和使用此API,您需要使用注册时使用的用户名和密码。如果登录信息有效,您将获得一个令牌。

curl -i -X POST -H 'Content-Type: application/json' -d '{"username" : "elchroy", "password" : "yorhcle"}' https://:8000/auth/login

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 279

{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjIwNjgsImp0aSI6Ik1UUTJNRGN5TWpBMk9BPT0iLCJuYmYiOjE0NjA3MjIwNzgsImV4cCI6MTQ2MDcyNDA3OCwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.cNyDaqIITjdFgoS5axWbVOy5lwUJrP9KKN1RZ8H2XP4cQfSofcj1yUDLJRqUCS3GZo16rmn3Fs7uoUdqbd55Nw"}

登录失败

当提供的用户名或密码无效时,登录将失败。

curl -i -X POST -H 'Content-Type: application/json' -d '{"username" : "elchroy", "password" : "incorrectpassword"}' https://:8000/auth/login

响应

HTTP/1.1 404 Not Found
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 56

{"message":"Incorrect username or password","data":null}

只有经过授权的用户(具有令牌的用户)才能访问请求 创建更新删除 emoji。

创建emoji

curl -i -X POST -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjYzNzIsImp0aSI6Ik1UUTJNRGN5TmpNM01nPT0iLCJuYmYiOjE0NjA3MjYzODIsImV4cCI6MTQ2MDcyODM4MiwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.z22I-1QZwolyVKxE7UwoBUx0UmUJ4qd-ueRMPgNA50WhDCUHGYLFa1Kfw7mQss2SUJoGE5LPAKj_Kk6fkKvMdw' -d '{"name" : "Aunty!", "chars" : "o", "keywords" : "raise hands woman girl", "category" : "people"}' https://:8000/emojis

响应

HTTP/1.1 201 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 57

{"message":"The new emoji has been created successfully.","data":null}

更新emoji

这是您想更新emoji所有属性的情况。

curl -i -X PUT -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjYzNzIsImp0aSI6Ik1UUTJNRGN5TmpNM01nPT0iLCJuYmYiOjE0NjA3MjYzODIsImV4cCI6MTQ2MDcyODM4MiwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.z22I-1QZwolyVKxE7UwoBUx0UmUJ4qd-ueRMPgNA50WhDCUHGYLFa1Kfw7mQss2SUJoGE5LPAKj_Kk6fkKvMdw' -d '{"name" : "Aunties!", "chars" : "Au", "keywords" : "praise pretty women ladies", "category" : "people"}' https://:8000/emojis/2

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 57

{"message":"The emoji has been updated successfully.","data":null}

更新emoji(部分)

这是您只想更新emoji某些属性的情况。

curl -i -X PATCH -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjYzNzIsImp0aSI6Ik1UUTJNRGN5TmpNM01nPT0iLCJuYmYiOjE0NjA3MjYzODIsImV4cCI6MTQ2MDcyODM4MiwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.z22I-1QZwolyVKxE7UwoBUx0UmUJ4qd-ueRMPgNA50WhDCUHGYLFa1Kfw7mQss2SUJoGE5LPAKj_Kk6fkKvMdw' -d '{"name" : "Aunties!", "chars" : "Au"}' https://:8000/emojis/2

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 57

{"message":"The emoji has been updated successfully.","data":null}

删除emoji

curl -i -X DELETE -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjYzNzIsImp0aSI6Ik1UUTJNRGN5TmpNM01nPT0iLCJuYmYiOjE0NjA3MjYzODIsImV4cCI6MTQ2MDcyODM4MiwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.z22I-1QZwolyVKxE7UwoBUx0UmUJ4qd-ueRMPgNA50WhDCUHGYLFa1Kfw7mQss2SUJoGE5LPAKj_Kk6fkKvMdw' https://:8000/emojis/2

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 53

{"message":"The emoji has been deleted.","data":null}

更新/删除 - 当emoji找不到时

对于需要创建或删除找不到的emoji的请求,将向用户返回 404 响应。

curl -i -X DELETE -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjYzNzIsImp0aSI6Ik1UUTJNRGN5TmpNM01nPT0iLCJuYmYiOjE0NjA3MjYzODIsImV4cCI6MTQ2MDcyODM4MiwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.z22I-1QZwolyVKxE7UwoBUx0UmUJ4qd-ueRMPgNA50WhDCUHGYLFa1Kfw7mQss2SUJoGE5LPAKj_Kk6fkKvMdw' https://:8000/emojis/30000

响应

HTTP/1.1 404 Not Found
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 53

{"message":"Cannot find the emoji to update.","data":null}

未经授权访问私有路由

任何对私有路由(创建、删除、更新)的请求,如果没有适当的令牌验证,将向用户返回响应。

对于请求中没有提供令牌的情况。

curl -i -X DELETE -H 'Content-Type: application/json' https://:8000/emojis/2

响应

HTTP/1.1 400 Bad Request
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 80

{"message":"Bad Request - Token not found in request. Please Login","data":null}

对于令牌已过期的头部。

curl -i -X DELETE -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjYzNzIsImp0aSI6Ik1UUTJNRGN5TmpNM01nPT0iLCJuYmYiOjE0NjA3MjYzODIsImV4cCI6MTQ2MDcyODM4MiwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.z22I-1QZwolyVKxE7UwoBUx0UmUJ4qd-ueRMPgNA50WhDCUHGYLFa1Kfw7mQss2SUJoGE5LPAKj_Kk6fkKvMdw' https://:8000/emojis/2

响应

HTTP/1.1 405 Method Not Allowed
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 80

{"message":"Token is Expired. Please re-login.","data":null}

登出

只有已登录的用户才能登出。

curl -i -X GET -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0NjA3MjYzNzIsImp0aSI6Ik1UUTJNRGN5TmpNM01nPT0iLCJuYmYiOjE0NjA3MjYzODIsImV4cCI6MTQ2MDcyODM4MiwiZGF0YSI6eyJ1c2VybmFtZSI6ImVsY2hyb3kifX0.z22I-1QZwolyVKxE7UwoBUx0UmUJ4qd-ueRMPgNA50WhDCUHGYLFa1Kfw7mQss2SUJoGE5LPAKj_Kk6fkKvMdw' https://:8000/auth/logout

响应

HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/7.0.2
Content-Type: application/json;charset=utf-8
Content-Length: 49

{"message":"Successfully Logged Out","data":null}

测试

要测试此包,您可以使用PHPUnit,从命令行(WindowsOS)或终端(MacOS)。

注意:请确保在应用根目录中执行 cd

$ phpunit