为什么Next.js的getInitialProps中使用axios.post而非axios.get请求
原因说明
1. 修改为GET后报错的根源
后端的${API}/category/${query.slug}接口仅支持POST请求,前端发送GET请求会触发405方法不允许错误,这和getInitialProps本身的作用无关,接口允许的请求方法由后端开发定义,前端不能随意更换。
你现有代码中的POST请求没有传递第二个参数(请求体),是因为鉴权所需的token已经通过withAdmin高阶组件注入到了axios的全局请求头中,后端只要校验请求头的合法性就会返回分类数据。
2. 不使用GET的常见原因
实际开发中这种违背REST语义的设计非常普遍,尤其是后台内部接口,通常出于两个考量:
- 项目统一规范:很多后台系统会统一用POST处理所有接口请求,不管是查询还是写入操作,一方面可以统一鉴权逻辑,另一方面避免敏感的查询参数出现在URL、访问日志中,降低泄露风险
- 参数传递需求:部分查询接口需要传递较多、或者敏感的参数,GET请求的查询字符串长度有限制,且传递敏感信息不安全,用POST在请求体传参更稳定合规
这类管理员权限页面的内部功能接口,不严格遵循REST语义是行业常态,不需要纠结语义匹配的问题,按照后端定义的规则调用即可。
内容的提问来源于stack exchange,提问作者user483801
相关产品推荐
相关产品推荐

