helloword001
V2EX  ›  PHP

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

  •  
  •   helloword001 · Aug 7, 2022 · 16680 views
    This topic created in 1551 days ago, the information mentioned may be changed or developed.
    打算做个 APP ,请教一下各位大神,Java ,PHP ,Go ,哪种语言和框架更适合开发 APP 的 API 接口?请各位大神赐教?
    Supplement 1  ·  Aug 8, 2022

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

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

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

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

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

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

    要严格格式的,首选 java 和 GO ,PHP 要开严格模式才可以。
    PinkLadyMage
    PinkLadyMage
    Aug 8, 2022
    35
    自己做 app ,可以用这种 strapi
    Lattez
    Lattez
    Aug 8, 2022
    36
    flask
    moell
    moell
    Aug 8, 2022
    37
    PHP ,框架的话,强烈推荐 Laravel 或者他的同门 Lumen ,如果有性能有要求,可以看看 hyperf 。
    daiqiangbudainiu
    daiqiangbudainiu
    Aug 8, 2022
    38
    没人觉得 spring 写业务还挺简单的?
    TateLiao
    TateLiao
    Aug 8, 2022
    39
    Java ,框架:Spring 全家桶。应用框架,也很多,若依,pig 等等,直接搭建好了通用的东西
    wx497657341
    wx497657341
    Aug 8, 2022
    40
    推 go 的是单纯的坏
    bthulu
    bthulu
    Aug 8, 2022
    41
    php 去死, 又是扩展又是包的, 老板随便给你个陈年老包让你部署起来, 你死都不知道怎么死的.
    HENQIGUAI
    HENQIGUAI
    Aug 8, 2022❤️1
    42
    跑个题,推荐 ROR
    yy77
    yy77
    Aug 8, 2022
    43
    python 的 fastapi 推一下。
    laolaowang
    laolaowang
    Aug 8, 2022
    44
    @passer9527 莫名其妙的笑起来了
    lancelock
    lancelock
    Aug 8, 2022
    45
    @kingjpa java 写 api 复杂? 1 分钟就能跑起个新项目,真是搞笑
    keepeye
    keepeye
    Aug 8, 2022
    46
    8 年 php 5 年 go 现在所有服务端项目都用 go 写了,当然坚持 php 的也可以用 swoole 这种框架,但我不喜欢
    wangnimabenma
    wangnimabenma
    Aug 8, 2022
    47
    @bthulu #41 贵司老板细致入微到用什么包?
    5oiR5piv5YK76YC8
    5oiR5piv5YK76YC8
    Aug 8, 2022
    48
    我是写 go 的,我推介 java
    byte10
    byte10
    Aug 8, 2022
    49
    @lemonTreeTop 赞同。nodejs 表示不服。json 通用,弱类型,参数验证复用、前后端通吃。
    ywisax
    ywisax
    Aug 8, 2022
    50
    java 跟 php 是合适的选择。
    stoluoyu
    stoluoyu
    Aug 8, 2022
    51
    会什么选什么。
    bthulu
    bthulu
    Aug 8, 2022❤️1
    52
    @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 简单容易一万倍?
    Dowding
    Dowding
    Aug 8, 2022
    53
    @kingjpa #10 新版本的 PHP 其实不再追求极致简单了,PHP 8.1 + Symfony6 ,俨然一个 Spring Boot
    keppelfei
    keppelfei
    Aug 8, 2022
    54
    表面上推荐这推荐那,各种语言屌,一到实际生产大多数全部是 Java ,最后还是不得向 java 低头
    aviator
    aviator
    Aug 8, 2022
    55
    问就是 java
    1sen
    1sen
    Aug 8, 2022
    56
    java ,用 springboot ,搭架子贼快
    flyqie
    flyqie
    Aug 8, 2022 via Android
    57
    @bthulu

    别的不说。

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

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

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

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

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

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

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

    谁来举个例子具体说一下,不行在哪儿,特别好奇。
    zhenrong
    zhenrong
    Aug 8, 2022
    80
    Javalin
    Wanex
    Wanex
    Aug 8, 2022
    81
    看你说你是前端,你用 go 不如用 nodejs ,和用 go 的体验不是一个量级的,js 写的舒服,性能可以,生态好,部署也方便
    Trim21
    Trim21
    Aug 8, 2022 via Android
    82
    fastapi (
    QlanQ
    QlanQ
    Aug 8, 2022
    83
    @bthulu 其实是对服务器不熟悉吧,服务器上你 jdk 怎么装的,PHP 和 PHP 的扩展就可以怎么装呀,都有官方包,不需要编译
    ivencooli
    ivencooli
    Aug 8, 2022
    84
    如果需要框架推荐的话,我用过的 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
    airqj
    Aug 8, 2022
    85
    一定要用 php 的话 ,推荐 webman
    简单易上手性能好,现在 xdebug 也支持了
    bthulu
    bthulu
    Aug 8, 2022
    86
    @pytth 有你说的这么简单, 那咋我丢进去就是不行呢?
    go233
    go233
    Aug 8, 2022
    87
    bthulu
    bthulu
    Aug 8, 2022
    88
    @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
    liuxu
    Aug 8, 2022
    89
    @bthulu #88 按照你这种拿 php5.6 进行手动编译部署方式,那我也只能说 java5 不好用了
    2bad4u
    2bad4u
    Aug 8, 2022
    90
    Java 有成熟的规范(死板,在规范下写代码有一种真正搬砖人的感觉),php 一个文件就能写个博客写代码够自由热部署(自由发挥的项目大了人多了管理不好的话写的乱七八糟不容易维护),同样的项目 java 比 php 代码量更多,java 比 php 需要更多的人手,java 比 php 需要更多的开发时间,java 比 php 运行起来需要更多内存 cpu 这些硬件资源,所以,项目大有钱就 java ,项目小省钱省资源用 php 。
    liuxu
    liuxu
    Aug 8, 2022
    91
    @helloword001 #5 laravel 吊打一切
    2bad4u
    2bad4u
    Aug 8, 2022
    92
    另外,在操作数据库方面
    php 有 pdo ,php 的框架基本上都有 orm ,写 sql 写 orm 随便,没有规范的话会导致乱写的人多了项目就特别不好维护。
    java 虽然也有 orm 但是基本上都是用 mybatis ,xml 里面写 sql 也是很奇葩的,如果人少没人 codeview 规范不足的话也容易写的乱七八糟。
    wonderfulcxm
    wonderfulcxm
    Aug 8, 2022
    93
    @bthulu 我去,你这是连个 php-fpm 都装不了的,入门都没有,还编译安装,水平不够用 yum, apt ,再不行用 docker 好吗?还不行买个虚拟主机自带 php 环境,而且 nginx 默认的 nginx.conf 自带 php-fpm 配置,不过是被注释掉的。
    markgor
    markgor
    Aug 8, 2022
    94
    @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
    bthulu
    Aug 8, 2022
    95
    @markgor java 高版本替换低版本绝大部分时候是没问题的, java1.1 时代的包, 在 java17 上都能正常运行.
    java 部署不需要 tomcat 的, springboot 打包出来的 jar 包一丢就行了.
    php 安装我是按照 php 官网文档来的, 文档里说的就是编译部署啊, 直接 Install 的, 难道不是安装的最新版吗? 又不能 install 指定版本, 不就只能编译部署了?
    agdhole
    agdhole
    Aug 8, 2022
    96
    @markgor #94 .net core 可以把 runtime 都一起打包了
    bthulu
    bthulu
    Aug 8, 2022
    97
    @agdhole 所以说嘛, 玩 php 的都有点跟不上时代了. java, C#, go, js, 开发都越来越方便了, 部署也是一个赛一个的简单, 就 php 还在原地踏步还以为别人也跟他一样.
    agdhole
    agdhole
    Aug 8, 2022❤️1
    98
    @bthulu #97 我写了很多年 PHP ,前两年用到 PHP 7 + swoole 之后就再也不用了,这语言各方面都落后太多了,不知道为什么那么多人抱着不放。
    用 ts c# 做开发完全感觉不到效率比 PHP 差到哪里,反而体验更好,性能能好,安装部署也更方便。
    realpg
    realpg
    Aug 8, 2022
    99
    @kingjpa #10
    不 很多人把 PHP 搞成了 java 的样子
    aitaii
    aitaii
    Aug 8, 2022❤️1
    100
    Ruby on Rails
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1334 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 143ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    ♥ Do have faith in what you're doing.