V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
helloword001
V2EX  ›  PHP

Java , PHP , Go,哪种语言和框架更适合开发 API 接口?

  •  
  •   helloword001 · 119 天前 · 9230 次点击
    这是一个创建于 119 天前的主题,其中的信息可能已经有所发展或是发生改变。
    打算做个 APP ,请教一下各位大神,Java ,PHP ,Go ,哪种语言和框架更适合开发 APP 的 API 接口?请各位大神赐教?
    第 1 条附言  ·  118 天前

    非常感谢大家的建议,我的本质工作是一个前端,之前自学Python用Django REST framework写过一些小说类APP的API且上线运行良好。

    综合一下大家的两个方案如下

    • Go + go-zero
    • PHP + Laravel
    129 条回复    2022-08-31 18:21:47 +08:00
    1  2  
    phpfpm
        1
    phpfpm  
       119 天前   ❤️ 6
    别问,问就是 php
    well775397252
        2
    well775397252  
       119 天前
    问就是 php
    helloword001
        3
    helloword001  
    OP
       119 天前
    @phpfpm php 框架推荐一个啊,https://github.com/dingo/api 这个吗
    helloword001
        4
    helloword001  
    OP
       119 天前
    @well775397252 php 框架推荐一个啊,dingo/api 这个吗
    helloword001
        5
    helloword001  
    OP
       119 天前
    各位大神,把 Java ,PHP ,Go 相应的框架也说一下啊
    janus77
        6
    janus77  
       119 天前
    都差不多,你哪种擅长就用哪种
    passer9527
        7
    passer9527  
       119 天前 via iPhone   ❤️ 20
    能问这问题,说明对你都不容易,花钱找人帮你写吧
    ByteCat
        8
    ByteCat  
       119 天前
    差不多吧,我一直用 Kotlin 写 Spring Boot
    zhuangzhuang1988
        9
    zhuangzhuang1988  
       119 天前
    都试试 这种都是小马过河
    适合自己 最重要.
    kingjpa
        10
    kingjpa  
       119 天前
    java 和 php 可以说是互斥的,没有可比性,
    一个追求极致的简单,一个追求极致的复杂(规范)。
    所以用 go 吧,既有 java 的性能,也有 php 的简约
    pytth
        11
    pytth  
       119 天前 via iPhone
    php 又快又方便
    Aloento
        12
    Aloento  
       119 天前
    问就是 php
    fox0001
        13
    fox0001  
       119 天前 via Android   ❤️ 2
    在 PHP 节点问这种问题?
    wjfz
        14
    wjfz  
       119 天前   ❤️ 6
    用 GO 写接口是我代码生涯中最痛苦的时光。
    buxudashi
        15
    buxudashi  
       119 天前   ❤️ 1
    强类型肯定不适合。光弄字段名称都够烦的。

    用 Php 的 cli 啊,像 swoole,workerman 这些。性能强,效率高;
    lemonTreeTop
        16
    lemonTreeTop  
       119 天前
    js 表示不服
    chi1st
        18
    chi1st  
       119 天前 via Android
    Django
    DamonLin
        19
    DamonLin  
       119 天前   ❤️ 1
    很多人看不起 php ,但事实上手最快的就是 php ,java 就不说了,go 说业务逻辑真的吐血。
    herozzm
        20
    herozzm  
       119 天前   ❤️ 1
    php 最快,go 一复杂就痛苦,简单的没问题
    jjshare123
        21
    jjshare123  
       119 天前   ❤️ 1
    写业务逻辑最快的,还是 PHP 哇,Java 太重了
    go 是真的不是适合写业务哇,不知道为啥那么多人提
    Rocketer
        22
    Rocketer  
       119 天前 via iPhone
    你在 PHP 节点问,怕是没人给你推荐别的。

    PS:我工作项目用 Java ,个人项目以前用 PHP ,现在用 NodeJS
    iseki
        23
    iseki  
       119 天前 via Android
    问就 Kotlin
    YUX
        24
    YUX  
       119 天前
    推荐 Golang

    https://gofiber.io/
    coolair
        25
    coolair  
       119 天前
    做 api ,我觉得没有什么比 django 更快的。
    matatabi
        26
    matatabi  
       119 天前
    问就是 nodejs
    fiypig
        27
    fiypig  
       119 天前
    PHP - go -java
    LeeReamond
        28
    LeeReamond  
       119 天前
    @coolair fastapi
    OoGKoO
        29
    OoGKoO  
       119 天前   ❤️ 1
    flask(光速逃)
    chenyu0532
        30
    chenyu0532  
       119 天前
    一看就是客户端 /前端,我之前也有这种疑问,现在没了,学任何一个都行
    Yoock
        31
    Yoock  
       119 天前
    数据库定义好了以后,可以试试生成代码的工具
    三种生态都有
    masker
        32
    masker  
       119 天前 via Android
    问就是 nosejs
    gejun123456
        33
    gejun123456  
       119 天前
    kotlin springboot
    Felldeadbird
        34
    Felldeadbird  
       119 天前
    都不熟悉的话,PHP 最快。上面三个语言,自己熟悉哪个就用自己掌握的。

    要严格格式的,首选 java 和 GO ,PHP 要开严格模式才可以。
    PinkLadyMage
        35
    PinkLadyMage  
       119 天前
    自己做 app ,可以用这种 strapi
    Lattez
        36
    Lattez  
       119 天前
    flask
    moell
        37
    moell  
       119 天前
    PHP ,框架的话,强烈推荐 Laravel 或者他的同门 Lumen ,如果有性能有要求,可以看看 hyperf 。
    warcraft1236
        38
    warcraft1236  
       119 天前
    没人觉得 spring 写业务还挺简单的?
    TateLiao
        39
    TateLiao  
       119 天前
    Java ,框架:Spring 全家桶。应用框架,也很多,若依,pig 等等,直接搭建好了通用的东西
    wx497657341
        40
    wx497657341  
       119 天前
    推 go 的是单纯的坏
    bthulu
        41
    bthulu  
       119 天前
    php 去死, 又是扩展又是包的, 老板随便给你个陈年老包让你部署起来, 你死都不知道怎么死的.
    HENQIGUAI
        42
    HENQIGUAI  
       119 天前   ❤️ 1
    跑个题,推荐 ROR
    yy77
        43
    yy77  
       119 天前
    python 的 fastapi 推一下。
    laolaowang
        44
    laolaowang  
       119 天前
    @passer9527 莫名其妙的笑起来了
    lancelock
        45
    lancelock  
       119 天前
    @kingjpa java 写 api 复杂? 1 分钟就能跑起个新项目,真是搞笑
    keepeye
        46
    keepeye  
       119 天前
    8 年 php 5 年 go 现在所有服务端项目都用 go 写了,当然坚持 php 的也可以用 swoole 这种框架,但我不喜欢
    wangnimabenma
        47
    wangnimabenma  
       119 天前
    @bthulu #41 贵司老板细致入微到用什么包?
    Marmot
        48
    Marmot  
       119 天前
    我是写 go 的,我推介 java
    byte10
        49
    byte10  
       119 天前
    @lemonTreeTop 赞同。nodejs 表示不服。json 通用,弱类型,参数验证复用、前后端通吃。
    ywisax
        50
    ywisax  
       119 天前
    java 跟 php 是合适的选择。
    stoluoyu
        51
    stoluoyu  
       119 天前
    会什么选什么。
    bthulu
        52
    bthulu  
       119 天前   ❤️ 1
    @wangnimabenma 是啊, 其他公司维护到期了不维护了, 甲方就丢给我们老板了. 对方就给了个 php 的 zip 包, 叫我们部署起来. 结果一看傻眼了, 要啥扩展不知道, 要引用啥第三方包也没说明, 报错日志也不知道在哪, php 版本也不知道.
    关键公司里还没人熟悉 php, 只能照着 php 官网教程来部署, 官网文档还错漏百出. 装个 php 还得编译, 编译好后执行几个 php 官网的复制配置文件的指令, 结果 cp 的文件居然没有.
    折腾两天了, 终于搭起来一个了一个 php 环境, 自己写了个.php 文件放上去能用. 然后将客户的包解压过去, 就是不能用, 报 HTTP500 错误. 想着去看下日志, 结果找了半天没找到日志文件在哪, 也不知道有没有日志.
    搜了老半天才知道 php 居然有扩展和三方包的说法, 然后扩展还得手动启用, 三方包也不知道要怎么搞.
    而且搜了下, 据说 php 各个版本之间还不兼容, 貌似 5.6 开发的版本在 7.x, 8.x 上会报错. 咱也不知道他这个包到底要运行在哪个版本上, 到底要启用哪些扩展, 到底是不是还要安装几个第三方包.
    咋个这么麻烦呢. 如果是 java 的话, 安装个 jdk, 直接执行.jar 文件就完事了. C#和 GO 的话, 直接复制单文件过去运行就好了. 这不都比 php 简单容易一万倍?
    takashiki
        53
    takashiki  
       119 天前
    @kingjpa #10 新版本的 PHP 其实不再追求极致简单了,PHP 8.1 + Symfony6 ,俨然一个 Spring Boot
    keppelfei
        54
    keppelfei  
       119 天前
    表面上推荐这推荐那,各种语言屌,一到实际生产大多数全部是 Java ,最后还是不得向 java 低头
    aviator
        55
    aviator  
       119 天前
    问就是 java
    weivi
        56
    weivi  
       119 天前
    java ,用 springboot ,搭架子贼快
    flyqie
        57
    flyqie  
       119 天前 via Android
    @bthulu

    别的不说。

    单从部署方式这块,你拿 php 跟 java/c#/go 比。。

    不知道该咋说。
    wangnimabenma
        58
    wangnimabenma  
       119 天前
    @bthulu #52 感受到了你的绝望,建议外包给我 (狗头
    javaisthebest
        59
    javaisthebest  
       119 天前
    java + maven 一分钟就能让你启动个 hello world web 了
    helloword001
        60
    helloword001  
    OP
       119 天前
    @keepeye 我看大家都在说用 Go 不适合写业务,要写一堆结构体,重复代码多等,你用 Go 写业务觉得复杂吗
    18601294989
        61
    18601294989  
       119 天前
    这三个都适合写 api
    helloword001
        62
    helloword001  
    OP
       119 天前
    @janus77 我是做前端的,哪个适合就学一下
    huangwei8ku
        63
    huangwei8ku  
       119 天前
    golang
    helloword001
        64
    helloword001  
    OP
       119 天前
    @kingjpa go 用 goframe 框架吗
    justin2018
        65
    justin2018  
       119 天前
    楼主 擅长哪个 就用哪个

    能挣钱 asp 都行 😁
    bthulu
        66
    bthulu  
       119 天前
    @flyqie 啥意思? 是说 php 本来就是开发快, 部署复杂嘛? java 还要装个 jdk, 稍微麻烦点, 另外俩直接复制编译后的文件过去运行就完事了, 这还不简单你还要多简单? 难道有文件都不用复制也不用运行的虚空部署办法?
    lcy630409
        67
    lcy630409  
       119 天前
    @bthulu
    没搞过 php 所以觉得很复杂
    其实 php 在部署上 这几个语言来比较 是最简单的
    你说的这个是用上了你现在语言的思维了
    一般直接给你 php 文件包 是直接放网站目录就可以用了,第三方包是直接存在了文件里 不用再下载
    稍微规范一点的 php 框架都有 php 版本检测 和提示,你这个没有 估计是他们自己写的,看入口文件

    扩展如果你没有安装 是会直接提示你缺少扩展 照着扩展名安装就行了

    编译 php 环境 直接装个 bt 面板,一步到位 官网 bt.cn
    helloword001
        68
    helloword001  
    OP
       119 天前
    @pytth PHP 推荐一个框架啊
    ciki
        69
    ciki  
       119 天前
    三个都可以写,但是实际上互联网行业的后端 API 90%以上都是 Java 写的吧
    king888
        70
    king888  
       119 天前
    那些说 go 不适合写业务,估计是写脚本语言写惯了
    什么叫写一堆结构体,如果要用到,这结构体也是业务抽象一部分好吧,不然写来玩还是..
    重复代码是指 err != nil ?这看个人喜好,不喜欢直接略过不处理,强迫症处理更好
    还是其它原因导致重复代码多,那么作为程序员,连基本代码优化都不懂还是...

    习惯用什么就用什么,看自己情况来,项目赚钱才是重点,其它无关紧要
    OMGZui
        71
    OMGZui  
       119 天前
    SpringBoot ,用 map 接收参数,跑。。。
    king888
        72
    king888  
       119 天前
    还有说 php 是这几个语音里部署简单真给整笑了, 夏虫语冰 \doge
    pytth
        73
    pytth  
       119 天前
    @bthulu 写个简单的 app 的 API 一般没有什么扩招和包吧,随便一个成熟点的框架一下子就写出来了。
    king888
        74
    king888  
       119 天前
    @king888 语音->语言
    hakr
        75
    hakr  
       119 天前
    typescript 吧, 找个云开发 /云函数平台 [狗头]
    pytth
        76
    pytth  
       119 天前
    php 写好之后不用编译成什么包,直接所有代码整个文件目录传到站点目录,访问入口文件就行。php 的运行环境也是很容易搭建起来,如果是宝塔,直接就是创建一个站点,把代码丢进去,解析好域名,访问 http(s)://域名 /index.php 就能跑。

    就算有什么扩展,或者外部类,常见的扩展一般安装在运行环境中,例如 Redis ,一些包、类文件那都是直接在 php 项目的目录下的,例如调用一个邮件类,那就是直接在相关代码中 require 'email.class.php'就行了。
    keepeye
        77
    keepeye  
       119 天前
    @helloword001 实践出真知,不要人云亦云,k8s 这么复杂的项目都是用 go 写,有些人会把其他语言固化思维代入到 go 中,哪哪都不爽,然后得出这种无知的言论。至少我写了几十个项目,肯定比一般的 crud 复杂的多,也没觉得有啥不合适的,慢慢精炼代码也是提升自己的过程
    Mexion
        78
    Mexion  
       119 天前
    首先排除 go ,这是一门写的很痛苦的语言
    Hanggi
        79
    Hanggi  
       119 天前   ❤️ 1
    那些说 Go 写不了业务逻辑的到底是思想转不过弯呢,还是编码能力不行呢?还是说只是先入为主。

    谁来举个例子具体说一下,不行在哪儿,特别好奇。
    zhenrong
        80
    zhenrong  
       119 天前
    Javalin
    Mexion
        81
    Mexion  
       119 天前
    看你说你是前端,你用 go 不如用 nodejs ,和用 go 的体验不是一个量级的,js 写的舒服,性能可以,生态好,部署也方便
    Trim21
        82
    Trim21  
       119 天前 via Android
    fastapi (
    QlanQ
        83
    QlanQ  
       119 天前
    @bthulu 其实是对服务器不熟悉吧,服务器上你 jdk 怎么装的,PHP 和 PHP 的扩展就可以怎么装呀,都有官方包,不需要编译
    ivencooli
        84
    ivencooli  
       119 天前
    如果需要框架推荐的话,我用过的 golang 和 php 各有一个可以推荐

    golang 的话 推荐 go-zero ,有快速生成工具 goctl
    地址: https://go-zero.dev/cn/

    php 的话,推荐 hyperf ,我司有几个线上的项目正在使用,不过不是做 api 服务,对接的是微信服务,对于习惯 php-fpm 的人来说也比较容易上手,而且对协程封装后,使用起来更简单,不过对于 api 服务不肯定适不适合
    地址: https://hyperf.wiki/2.2/#/README

    最后,使用什么代码什么框架,可能还是看业务需求,上线时间,还有对应用到的哪些数据库,去匹配合适的语言和框架,建议先看下文档和 demo
    airqj
        85
    airqj  
       119 天前
    一定要用 php 的话 ,推荐 webman
    简单易上手性能好,现在 xdebug 也支持了
    bthulu
        86
    bthulu  
       119 天前
    @pytth 有你说的这么简单, 那咋我丢进去就是不行呢?
    go233
        87
    go233  
       119 天前
    bthulu
        88
    bthulu  
       119 天前
    @QlanQ jdk 我是直接复制 jdk-xxx.tar.gz, 解压到用户 home 目录, 设置环境变量 JAVA_HOME 指向这个目录就算完事了.
    php 还要先安装 nginx, 然后配置 location ~ \.php$ {...}
    我再给你看看 php-fpm 是怎么安装的, 其中三个 cp 指令, 官网文档还写错了, /usr/local/etc/php-fpm.d/www.conf.default 根本没有这个文件, 实际应该是 /usr/local/etc/www.conf.default
    wget http://xxx/php-5.6.40.tar.gz
    tar -zxvf ./php-5.6.40.tar.gz
    sudo apt install libxml2-dev
    cd php-5.6.40
    ./configure --enable-fpm
    make
    sudo make install
    cp php.ini-development /usr/local/php/php.ini
    cp /usr/local/etc/www.conf.default /usr/local/etc/www.conf
    cp sapi/fpm/php-fpm /usr/local/bin
    # 修改 /usr/local/php/php.ini 文件中的 cgi.fix_pathinfo=0
    # 修改 /usr/local/etc/www.conf 中的 user 和 group 为当前用户及所在群组
    sudo /usr/local/bin/php-fpm

    就这你跟说个安装简单, 部署简单? 见鬼去吧
    liuxu
        89
    liuxu  
       119 天前
    @bthulu #88 按照你这种拿 php5.6 进行手动编译部署方式,那我也只能说 java5 不好用了
    2bad4u
        90
    2bad4u  
       119 天前
    Java 有成熟的规范(死板,在规范下写代码有一种真正搬砖人的感觉),php 一个文件就能写个博客写代码够自由热部署(自由发挥的项目大了人多了管理不好的话写的乱七八糟不容易维护),同样的项目 java 比 php 代码量更多,java 比 php 需要更多的人手,java 比 php 需要更多的开发时间,java 比 php 运行起来需要更多内存 cpu 这些硬件资源,所以,项目大有钱就 java ,项目小省钱省资源用 php 。
    liuxu
        91
    liuxu  
       119 天前
    @helloword001 #5 laravel 吊打一切
    2bad4u
        92
    2bad4u  
       119 天前
    另外,在操作数据库方面
    php 有 pdo ,php 的框架基本上都有 orm ,写 sql 写 orm 随便,没有规范的话会导致乱写的人多了项目就特别不好维护。
    java 虽然也有 orm 但是基本上都是用 mybatis ,xml 里面写 sql 也是很奇葩的,如果人少没人 codeview 规范不足的话也容易写的乱七八糟。
    wonderfulcxm
        93
    wonderfulcxm  
       119 天前
    @bthulu 我去,你这是连个 php-fpm 都装不了的,入门都没有,还编译安装,水平不够用 yum, apt ,再不行用 docker 好吗?还不行买个虚拟主机自带 php 环境,而且 nginx 默认的 nginx.conf 自带 php-fpm 配置,不过是被注释掉的。
    markgor
        94
    markgor  
       119 天前
    @bthulu #52
    @bthulu #88
    你这说法.....
    其实你为什么不把 NGINX 源码编译也展开来说呢?

    另外你部署 java 的前置不需要配合 tomcat 这些 web 服务吗?
    是 java 项目中自己实现了 http 服务或用 1.6 的 HttpServer ?

    那按你这么说,如果你们 PHP 是基于 CLI 模式或使用 PHP 的內置的 web 服務也不需要 nginx 啊。
    还有你不熟悉的情況下為什麼要编译 PHP 呢? yum/apt-get 这些不行吗?或者找 rpm/deb 包?


    其实对方丢给你们部署,你们可以先问对方要运行环境信息,这样就不存在你说的 什么扩展 /插件也不清楚。
    *PHP 的插件都在运行代码里,所以其实你不需要搞清楚用什么插件,但使用到的扩展则必须要用;
    *如果不知道什么扩展,可以把支持的扩展都编译进去。
    *如果不熟悉编译,其实可以 yum/apt-get 形式安装 PHP 和 PHP 的扩展。

    另外你 java/C#的话,JDK 版本和.net core 版本可以随意换不出错吗?

    ------------------------------------------------------
    yum install php
    yum install php-*
    php -S 0.0.0.0:80 -t /PATH/TO/WEB

    搞定
    --------------------------------------------------
    bthulu
        95
    bthulu  
       119 天前
    @markgor java 高版本替换低版本绝大部分时候是没问题的, java1.1 时代的包, 在 java17 上都能正常运行.
    java 部署不需要 tomcat 的, springboot 打包出来的 jar 包一丢就行了.
    php 安装我是按照 php 官网文档来的, 文档里说的就是编译部署啊, 直接 Install 的, 难道不是安装的最新版吗? 又不能 install 指定版本, 不就只能编译部署了?
    agdhole
        96
    agdhole  
       119 天前
    @markgor #94 .net core 可以把 runtime 都一起打包了
    bthulu
        97
    bthulu  
       119 天前
    @agdhole 所以说嘛, 玩 php 的都有点跟不上时代了. java, C#, go, js, 开发都越来越方便了, 部署也是一个赛一个的简单, 就 php 还在原地踏步还以为别人也跟他一样.
    agdhole
        98
    agdhole  
       119 天前   ❤️ 1
    @bthulu #97 我写了很多年 PHP ,前两年用到 PHP 7 + swoole 之后就再也不用了,这语言各方面都落后太多了,不知道为什么那么多人抱着不放。
    用 ts c# 做开发完全感觉不到效率比 PHP 差到哪里,反而体验更好,性能能好,安装部署也更方便。
    realpg
        99
    realpg  
       119 天前
    @kingjpa #10
    不 很多人把 PHP 搞成了 java 的样子
    aitaii
        100
    aitaii  
       119 天前   ❤️ 1
    Ruby on Rails
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4908 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 999ms · UTC 08:34 · PVG 16:34 · LAX 00:34 · JFK 03:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.