配置引入

方式来引入。

main包

每个项目至少存在一个package main,用于程序的入口执行。

/main.go

  1. package main
  2. import (
  3. _ "github.com/gogf/gf-demos/boot"
  4. _ "github.com/gogf/gf-demos/router"
  5. "github.com/gogf/gf/frame/g"
  6. )
  7. func main() {
  8. g.Server().Run()
  9. }

编译运行

我们可以使用IDE执行运行,也可以使用以下命令编译运行。

  1. $ go build main.go

执行后,终端输出的路由表如下:

  1. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  2. default | default | :8199 | ALL | /user/checknickname | github.com/gogf/gf-demos/app/api/user.(*Controller).CheckNickName | middleware.CORS
  3. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  4. default | default | :8199 | ALL | /user/checkpassport | github.com/gogf/gf-demos/app/api/user.(*Controller).CheckPassport | middleware.CORS
  5. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  6. default | default | :8199 | ALL | /user/issignedin | github.com/gogf/gf-demos/app/api/user.(*Controller).IsSignedIn | middleware.CORS
  7. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  8. default | default | :8199 | ALL | /user/profile | github.com/gogf/gf-demos/app/api/user.(*Controller).Profile | middleware.CORS
  9. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  10. default | default | :8199 | ALL | /user/profile | github.com/gogf/gf-demos/app/api/user.(*Controller).Profile | middleware.CORS,middleware.Auth
  11. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  12. default | default | :8199 | ALL | /user/signin | github.com/gogf/gf-demos/app/api/user.(*Controller).SignIn | middleware.CORS
  13. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  14. default | default | :8199 | ALL | /user/signout | github.com/gogf/gf-demos/app/api/user.(*Controller).SignOut | middleware.CORS
  15. |---------|---------|---------|--------|---------------------|-------------------------------------------------------------------|---------------------------------|
  16. default | default | :8199 | ALL | /user/signup | github.com/gogf/gf-demos/app/api/user.(*Controller).SignUp | middleware.CORS

接口测试

我们通过curl命令来对其中两个接口执行简单的测试。

注册一个账号test001,昵称为john,密码为123456

  1. {"data":null,"code":0,"message":"ok"}
  1. curl -d 'nickname=john&passport=test001&password=123456&password2=123456' http://127.0.0.1:8199/user/signup
  1. {"data":null,"code":1,"message":"账号 test001 已经存在"}

可以看到注册失败了,相同名称只能注册一个账号。

2.用户登录 -

我们先访问获取用户信息的接口,验证鉴权中间件是否生效。

  1. Forbidden

我们用刚才注册的账号登录。

  1. curl -i -d 'passport=test001&password=123456' http://127.0.0.1:8199/user/signin
  1. HTTP/1.1 200 OK
  2. Access-Control-Allow-Credentials: true
  3. Access-Control-Allow-Headers: Origin,Content-Type,Accept,User-Agent,Cookie,Authorization,X-Auth-Token,X-Requested-With
  4. Access-Control-Allow-Methods: GET,PUT,POST,DELETE,PATCH,HEAD,CONNECT,OPTIONS,TRACE
  5. Access-Control-Allow-Origin: *
  6. Access-Control-Max-Age: 3628800
  7. Content-Type: application/json
  8. Server: gf-demos
  9. Set-Cookie: gfsessionid=BZT1SP2OX980EHALYV; Path=/; Expires=Sun, 10 Jan 2021 14:56:36 GMT
  10. Date: Sat, 11 Jan 2020 14:56:36 GMT
  11. Content-Length: 37

我们这里使用了-i选项用于终端打印出服务端返回的Header信息,目的是为了获取sessionidGF框架默认的sessionid名称为gfsessionid,我们看到返回的Header中已经有了,并且是通过Cookie方式返回的。

  1. {"code":0,"message":"","data":{"id":1,"passport":"test001","password":"123456","nickname":"john","create_time":"2020-01-10 23:51:41"}}