Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

要怎么运行和测试呢? #2

Open
TommyLemon opened this issue Nov 2, 2021 · 6 comments
Open

要怎么运行和测试呢? #2

TommyLemon opened this issue Nov 2, 2021 · 6 comments

Comments

@TommyLemon
Copy link
Contributor

TommyLemon commented Nov 2, 2021

按照本项目文档已经成功启动了 docker 实例
image

但再按 Hyperf 官网文档
https://hyperf.wiki/2.2/#/zh-cn/quick-start/install
image

运行项目时报错
TommyMac:hyperf-APIJSON-master Tommy$ php bin/hyperf.php start

Parse error: parse error in /Users/Tommy/Documents/APIJSON/hyperf-APIJSON-master/bin/hyperf.php on line 24
image

@TommyLemon
Copy link
Contributor Author

PHP 5.5 换成 8.0 后执行
php bin/hyperf.php start
仍然有报错:

TommyMac:hyperf-APIJSON-ed00752ac766ed4dee4cf1656552e3ea956953d0 Tommy$ php bin/hyperf.php start

Fatal error: Uncaught Error: Undefined constant "SWOOLE_HOOK_ALL" in /Users/Tommy/Downloads/hyperf-APIJSON-ed00752ac766ed4dee4cf1656552e3ea956953d0/bin/hyperf.php:12
Stack trace:
#0 {main}
thrown in /Users/Tommy/Downloads/hyperf-APIJSON-ed00752ac766ed4dee4cf1656552e3ea956953d0/bin/hyperf.php on line 12

image

另外代码中的 vendor 目录及文件 autoload.php 都不存在,是否漏上传了?

@kvnZero
Copy link
Owner

kvnZero commented Nov 4, 2021

  • 我重新修改了docker建立容器的命令 -p需要在镜像之前
docker run -dit --name hyperf-apijson -p 9501:9501 hyperf-apijson:v1
  • 之后的问题是你在终端运行的环境不对。 你终端运行的是本机的环境,使用docker的话需要在docker容器终端下执行hyperf命令; 如果不使用docker的话 需要本地环境安装PHP8.0 + Swoole扩展 (否则就会出现你那报的Undefined constant "SWOOLE_HOOK_ALL的错误)
  • 按照REDAME的使用步骤的话,dockerfile是已经封装好的 不必再执行Hyperf文档中的启动项目的命令 直接可以访问本地的9501即可 后续只需要启动容器就会启动项目了。( 如果9501端口冲突可以换其他端口映射
  • vendor是包管理目录里面内容都属于第三方包; 如果你在本地运行的话需要执行composer install;使用docker的话已经通过配置的方式自动化这些过程了

终端运行目录后运行成功的样子,如图:
1636005550(1)

@TommyLemon
Copy link
Contributor Author

感谢,用最新源码及按最新方式运行,可以调用接口了,不过测试具体查询功能时会报错 500 internel server error 或 404 Not Found

image

image

image

image

image

image

@kvnZero
Copy link
Owner

kvnZero commented Nov 4, 2021

  • 这个和我路由配置有关 我根据设计规范的操作方法看 路径的定义是 /get/ /head/ /post/ /put/ /delete/ 的写法 所以你访问 /get 会404报错 然后暂时没支持/get/{tag}的路由(在想怎么匹配复杂条件,包括tag的意义没太明白,希望可以交流下)
  • 报500的错误也是同上 因为无法处理导致的 ;然后当出现错误的返回(比如你图里的Allow: GET)目前还没做处理现在还在完善查询器条件

image
image

@TommyLemon
Copy link
Contributor Author

  • 这个和我路由配置有关 我根据设计规范的操作方法看 路径的定义是 /get/ /head/ /post/ /put/ /delete/ 的写法 所以你访问 /get 会404报错 然后暂时没支持/get/{tag}的路由(在想怎么匹配复杂条件,包括tag的意义没太明白,希望可以交流下)
  • 报500的错误也是同上 因为无法处理导致的 ;然后当出现错误的返回(比如你图里的Allow: GET)目前还没做处理现在还在完善查询器条件

image image

APIJSON 是所有请求都用 HTTP POST,只是为了文档上方便演示才对 /get, /head 额外支持 HTTP GET
https://github.com/Tencent/APIJSON/blob/master/Document.md#3
image

我这边旧版 Postman 在 GET 请求里还不能选 Body,我改下代码再试试
image

@TommyLemon
Copy link
Contributor Author

TommyLemon commented Nov 4, 2021

tag 的意义在于标记某个请求的目的,例如新增动态、删除评论,这些非开放查询请求需要用 tag, version, method 作为条件从 Request 表查出参数校验规则 structure 来对请求 JSON 做校验字段值和补充键值对。
https://github.com/Tencent/APIJSON/blob/master/Document.md#3.1
image

image

image

https://github.com/Tencent/APIJSON/wiki#%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86

这个可以放后面再实现,现在最重要的是支持复杂关联查询,一对一与一对多(引用赋值),各种 JOIN 和子查询等

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants