首页IT科技react框架要学多久(react框架next.js学习之API 路由篇详解)

react框架要学多久(react框架next.js学习之API 路由篇详解)

时间2025-09-18 17:05:28分类IT科技浏览6865
导读:正文 next.js 作为最热门的 react 框架,不过这么久了好像国内使用率一直不太高。最近在研究做个小项目正好做下笔记,有兴趣的可以一起来学习。...

正文

next.js 作为最热门的 react 框架                  ,不过这么久了好像国内使用率一直不太高                  。最近在研究做个小项目正好做下笔记                           ,有兴趣的可以一起来学习                           。

next.js 首页标榜的 12 个特性之一就是 API routes         ,简单的说就是可以 next.js 直接写 node 代码作为后端服务来运行         。因此我们可以直接使用 next.js 直接维护一个全栈项目                  ,听起来很香的样子         。

使用方式

next.js 中使用文件路径作为路由                           ,所以在 API routes 中也是一样         ,一般的页面文件我们会放在 pages 下         ,而 API routes 文件我们则需要放在 pages/api 下                           ,emmm                  ,其实我觉得这个设计有点奇怪         ,为啥不是在外层增加一个 server 或者 api 的文件夹呢                           ,放在 pages 下面感觉怪怪的                           。而请求时                  ,需要请求对应的 /api/ 下的文件地址,emmm                           ,好吧                           ,真的挺奇怪的                  。

所以我们要新增一个 API 只需要在 pages/api/ 目录下新建一个文件即可         。

API 路由匹配

而 API 的文件命名有三种方式:

pages/api/route.js

pages/api/route/[param].js

pages/api/route/[...slug].js

第一种很好理解,就是会处理发送到 /api/route 的请求                  ,第二种会接受来自 /api/route/xxxx 的请求                           ,并将 xxxx 作为参数放到 param 中         ,而第三种则是会接收所有的到 /api/route/ 下的请求                  ,比如 /api/route/a/b/c 等                           。

当请求过来进行匹配时                           , next.js 将会按照从上到下的优先级来匹配应该处理的路由         ,比如上面三个文件同时存在         ,那么发送到 /api/route 的请求将会从被第一个文件所处理                           ,而 /api/route/a 的请求会被第二个文件所处理                  ,剩余的请求才会进入第三个文件中处理                  。

API 处理

而在处理文件中         ,会调用默认的导出函数来处理请求:

export default function handler(req, res) { res.status(200).json({ foo: bar }); }

如上代码表示请求的响应体 http 状态码为 200                           ,响应体中是一段 json。

除了 nodejs 原生中包含的一些属性和方法外                  ,next 还在 res 中扩展了以下几个常用的方法:

res.status(code) 响应的 http 状态码 res.json(body) json 响应体 res.send(body) 其它响应体,可以是 string                  、object                           、Buffer res.redirect([status,] path) 重定向 res.revalidate(urlPath) 重新进行校验

而在 req 中则扩展了以下几个常用属性:

req.cookies 请求包含的 cookies req.query 请求的 query 参数 req.body 请求体

是不是很熟悉                           ,没错就是 express.js 的一些功能                           。

API 配置

除了 export 默认的处理函数处理请求外                           ,还可 export 一个 config 对象来配置:

export const config = { api: { // 请求体处理 bodyParser: { sizeLimit: 1mb }, // 响应体的大小限制 responseLimit: 8mb, // 用于指定请求是否被外部服务处理,这个暂时还没搞清楚是怎么工作的                  ,等研究完了再来更新 externalResolver: true } };

边缘计算支持

此外                           ,next.js 的 API routes 还支持最近很火的边缘计算         ,不过边缘计算的运行时和 node 运行时差异较大                  ,需要注意改动                           。由于暂时对这方面没有研究                           ,不做过多深入。

自定义 API

除了默认的请求处理         ,还可以借助外部 server 来处理请求         ,比如 graphql:

import { createServer } from @graphql-yoga/node; const typeDefs = /* GraphQL */ ` type Query { users: [User!]! } type User { name: String } `; const resolvers = { Query: { users() { return [{ name: Nextjs }]; } } }; const server = createServer({ schema: { typeDefs, resolvers }, endpoint: /api/graphql }); export default server;

注意点

另外需要注意的是                           ,如果配置了 pageExtensions                  ,API 文件的命名也会受影响                  。

还有如果同时存在 pages/api/route/[param].js 和 pages/api/route/[param1].js 不知道会发什么什么         ,回头有空试试                           。

总结

使用 next.js 的 API routes                           ,我们可以直接在项目中编写 nodejs 后端代码                  ,轻松完成全栈开发         。

再多说几句,经过这么多年的发展                           ,前后端终于分离了                           ,然而最近几年,前端又开始干起后端的活                  ,梦回 php         、jsp                  。古人云的好:风水轮流转                           ,前后不分家                           。

以上就是react框架next.js学习之API 路由篇详解的详细内容         ,更多关于react框架next.js API路由的资料请关注本站其它相关文章!

声明:本站所有文章                  ,如无特殊说明或标注                           ,均为本站原创发布         。任何个人或组织         ,在未征得本站同意时         ,禁止复制                  、盗用                           、采集         、发布本站内容到任何网站         、书籍等各类媒体平台         。如若本站内容侵犯了原著者的合法权益                           ,可联系我们进行处理                           。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
日本服务器vps(大卖家背后的流量武器?来看日本多IP服务器搭建店群优势!) macbook快捷键打开终端(MAC 快捷键二则(附终端光标的快捷键))