现代实战 Hello World

原因

现代开发架构一般是前端与后端分离,中间用标准的api连接,特别是集成其他系统,比如公众号之类。好处是可以随时替换,不受现有的代码束缚,也可以轻松调用异构系统(不同语言,不同平台,不同公司等),坏处就是在调试的时候会比较麻烦,要进行前后端联调,另外就是开始创建架构的时候比较复杂。这里就是用尽可能简单的方法创建出一个现代的 Hello World

前提

环境:Mac 14+,nodejs 20.10 LTS ,PHP 8.2 ,composer , brew

目录结构:~/Code 为主目录,子目录:hello-ui (前端) , hello-service (后端)

账号: gitlab 或 github , vercel,ngrok.com

特点

  • 现代开发架构,用于实战也不会落后
  • 全免费(除了自己的上网费)
  • 全https域名
  • 不需要租用或购买服务器,本地就可以跑服务,方便调试

重点提示

域名:https://api.ngrokhttps://ui.vercel 替换为自己生成的域名

本地域名: http://hello-service.test 可以替换为自己的本地域名

所有内容在 Mac上可用,如果用Windows 少数要转成不同的命令

步骤

  • 设定ngrok
    • 登录 ngrok.com
    • 设定固定域名: Cloud Edge -> Domains -> New Domain ,会生成一个固定域名,一般来说是 ngrok-free.app 结尾的,当然了,如果要定制域名就要付费了,自己调试只要固定域名就行了。
    • 这个固定域名就是互联网上可以访问到的域名,自带 https 挺不错的。
    • 后面都会用到这个固定域名,假设这个固定域名是 https://api.ngrok
  • 创建 hello-ui
  • 发布到 vercel
    • 登录后连接 gitlab/github ,选择 hello-ui,然后会自动发布
    • 设定 NEXT_PUBLIC_API_BASE_URL,内容就是 ngrok 设定的固定域名 https://api.ngrok
    • 发布后会生成一个域名,这个就是前端的主域名,假设这个域名是 https://ui.vercel
  • 创建 hello-service
  • 启动本地服务
  • 创建 hello-db
  • hello-service 初始化数据
    • 初始化数据库: php artisan migrate
    • 初始化数据(包括登录账号):php artisan db:seed
  • hello-service 设定CORS
    • CORS 原理:根据发起域名进行安全审查
      • 安全审查:设定在config/cors.php,域名,方法,具体的uri等
      • 发起域名:一般来自 referrer,如果发起域名与api当前域名不同,就需要安全审查
    • Laravel 10.x 已经内置CORS,直接可以设定 config/cors.php
      • allowed_origins: 把需要认证的域名都加上,比如vercel 生成的前端主域名
      • supports_credentials: 使用token模式就可以关掉这个,设为false
  • ngrok 穿透内网
    • 安装 brew install ngrok/ngrok/ngrok
    • 设定 auth token : ngrok config add-authtoken
    • 启动:ngrok http --host-header=hello-service.test --domain=api.ngrok 80
  • 调试
    • 打开 vercel 的域名 https://ui.vercel
    • 尝试登录
    • CORS: 如果console里出现 CORS 的错误,就要检查 config/cors.php 的设定
    • 如果是密码错误,则要检查是否初始化数据

参考

hello-service: 创建hello-service-CSDN博客

hello-db: 创建 hello-db-CSDN博客

hello-ui: 创建 hello-ui-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值