前后端协作开发遇到的 api 地址问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
shuyunquan
V2EX    程序员

前后端协作开发遇到的 api 地址问题

  •   shuyunquan 2024-10-11 10:24:19 +08:00 2993 次点击
    这是一个创建于 414 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近开发一个前后端分离的 web 项目

    我又写后端 api 又写前端页面(前端不精通), 还有一个专业的前端同事配合我专门写前端页面. 现在有个问题有些麻烦,想看看大家是怎么解决的

    写完后端 API 发布测试环境,.env.development文件写上测试环境 api 地址,我这边体验不是很好 每次开发完 api 本地测测发布到测试环境,再调试前端,缺这个哪个再改 api 再发

    我负责开发的页面更希望.env.development文件直连我的本地 api 地址,这样开发调试都很方便, 但是经常忘记,每次提交代码都把.env.development文件提交上去了,导致前端同事那边连不上 api

    .env.development文件忽略是可以 但是感觉这样不是正确的做法

    注: 问: 为什么不一次性把 api 写完善了直接发布测试环境, 不要改来改去的? 答: 这个项目没有明确的需求, 是我自己想需求, 做出来后,试用后反馈给我问题再改

    第 1 条附言    2024-10-11 11:07:38 +08:00
    各位老哥真牛逼 又热情又牛逼 谢谢大家了
    16 条回复    2024-10-11 16:11:44 +08:00
    Features
        1
    Features  
       2024-10-11 10:30:08 +08:00
    后端测试机器放到云端或者局域网中立的机器上面
    用 remote 手段进行开发
    xiaogu2014
        2
    xiaogu2014  
       2024-10-11 10:32:07 +08:00
    1. 一般会有 local.yaml 文件来保存本地的允许配置。这部分是不推到 git 上面的。
    2. 测试环境只有一个的话。不建议反复该来改去发布当本地环境来用哦。
    Kusoku
        3
    Kusoku  
       2024-10-11 10:34:20 +08:00   1
    用 .env.local
    sagaxu
        4
    sagaxu  
       2024-10-11 10:34:26 +08:00
    本地:.env.local
    开发环境:.env.dev
    测试环境:.env.test
    预发环境:.env.pre
    线上:.env[.prod]
    czkm1320
        5
    czkm1320  
       2024-10-11 10:35:39 +08:00
    npm run dev
    和 npm run dev-test
    2 边可以配置不同的地址 这样你就可以一个地址是本地 一个是线上了
    czkm1320
        6
    czkm1320  
       2024-10-11 10:36:17 +08:00
    @czkm1320 #5 可以看楼上 差不多的意思 可以配置多个 env 然后启动命令的时候配置
    dumbass
        7
    dumbass  
       2024-10-11 10:36:31 +08:00
    webszy
        8
    webszy  
       2024-10-11 10:36:41 +08:00
    新建一个.env.local,然后你配置一个新的启动命令,读取这个配置文件就行了,这样你和另一个前端都互不影响了
    shakaraka
        9
    shakaraka  
    PRO
       2024-10-11 10:39:49 +08:00
    不盲猜,你写的是 PHP,不是我吃粑粑。

    在盲猜你写的是 vue 。以 vue3 为例在你本地的创建一个带.local 的环境变量即可

    https://cn.vite.dev/guide/env-and-mode.html#env-files


    以我们举例,正常的前端项目应该有这几个环境变量
    .env.dev
    .env.sit
    .env.uat
    .env.prod
    xR13zp0h67njQr2S
        10
    xR13zp0h67njQr2S  
       2024-10-11 10:47:53 +08:00
    不想走这些了就走一遍 nginx 代理,修改本地 host
    Cheesen
        11
    Cheesen  
       2024-10-11 11:00:36 +08:00
    多年开发经验建议不要用 env 来配置后端接口,一前端对一后还好,多对多就麻烦了。如果其他前端没有.env.local ,启动时可能会报错或者无法启动,如果写在.env.development 并且提交上去,那么必然会有冲突的几率。

    以下是我的用法,仅供参考,前提是用 vite 。

    修改 vite.config.ts 文件:

    import { defineConfig } from 'vite'
    import type { ConfigEnv, UserConfigExport } from 'vite'
    // 添加 @inquirer/prompts 插件用于启动时做选择。
    import { select } from '@inquirer/prompts'

    export default async ({ command }: ConfigEnv): Promise<UserConfigExport> => {
    let proxyTarget = 'test'

    const servers: {
    [propName: string]: string
    } = {
    test: 'https://测试域名',
    prod: 'https://生产域名',
    张三: 'http://局域网 ip:端口',
    李四: 'http://局域网 ip:端口',
    王五: 'http://局域网 ip:端口',
    }
    if (command === 'serve') {
    proxyTarget = await select({
    message: '请选择后端接口地址',
    choices: Object.entries(servers).map(([key, value]) => ({
    name: `${key} - ${value}`,
    value: key,
    })),
    })
    }

    return defineConfig({
    server: {
    proxy: {
    '/api': {
    target: servers[proxyTarget],
    },
    },
    },
    })
    }



    这样一来,其他前端在启动项目的时候,可以自己选择指向任何后端接口。
    Immortal
        12
    Immortal  
       2024-10-11 11:13:47 +08:00
    你们就 2 个人搞这些不是折腾自己么
    直接连你电脑的 API 就行了,如果人多再考虑规范的事情
    realpg
        13
    realpg  
    PRO
       2024-10-11 12:03:55 +08:00
    这种我更推荐配置找现成的轮子 实现好 "shell 的环境变量 环境变量文件" 的优先级顺序和忽略规则

    shell 的环境变量优先于.env.dev

    版本库中忽略 .env.dev 和 .env.release

    但是版本库中放:
    .env.dev.sample 和.env.release.sample 以便标注各个环境所需变量 并在 .env.dev.sample 中添加大量注释 备注好从系统环境变量读取优先级大于本文件的说明
    evada
        14
    evada  
       2024-10-11 15:05:37 +08:00
    https://ngrok.com/ 可以把你的服务暴露在公网,直接连你本地测试
    lizhien
        15
    lizhien  
       2024-10-11 16:00:21 +08:00
    .env 的回答有了
    git 可以临时忽略文件的,仅对自己有效
    git update-index --assume-unchanged
    1024potato
        16
    1024potato  
       2024-10-11 16:11:44 +08:00
    还有一种防范: 使用 SwitchHosts 修改 host 文件,测试环境域名指向本机 ip
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2692 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 08:08 PVG 16:08 LAX 00:08 JFK 03:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86