文章标题 原创 翻译 转载 文章内容 koa2处理get,post参数的常见方式 举几个常见的例子 # url显示传参 ## 根据文章id获取这篇文章的内容 url:```https://www.ningto.com/post/5b8f371ce1d77b114b42306a``` 路由: ``` app.use(route.get('/post/:id', Posts.show)) ``` 处理: ``` module.exports.show = async function(ctx, id) { // ... } ``` show函数的第二个参数id就是用户传过来的参数 ## 分页获取文章列表 url:```https://www.ningto.com/?page=2&count=50``` 路由: ``` app.use(route.get('/api/list', Posts.list)) ``` 处理: ``` module.exports.list = async function(ctx) { var page = ctx.query.page || 1 var count = ctx.query.count || 20 // ... } ``` 通过ctx.query对象获取page和count这两个参数 # post提交表单 表单: ``` <form class="form-signin" action="/user/signin" method="post"> <input type="text" name="username" class="form-control" placeholder="用户名" required autofocus> <input type="password" name="password" class="form-control" placeholder="密码" required> <div> <a href="/user/githubLogin" target="_bank">Github登录</a> </div> </form> ``` 路由: ``` app.use(route.post('/user/signin', User.reqSignin)) ``` 处理: ``` module.exports.reqSignin = async function(ctx) { const req = ctx.request.body if (req.username.length == 0 || req.password.length == 0) { ctx.body = 'username or password error' } // ... ``` 通过ctx.request.body获取表单对象,其中username和password就是通过表单传过来的参数 # ajax post ajax ``` $.ajax({ type: 'POST', url: 'search', data: {keyword: keyword}, success: function(result) { // ... } }) ``` 路由: ``` app.use(route.post('/search', Posts.reqSearch)) ``` 处理: ``` module.exports.reqSearch = async function(ctx, next) { const req = ctx.request.body const keyword = req.keyword // ... ``` 同上,通过ctx.request.body来获取参数 如果将ajax中的data参数改为字符串如: ``` $.ajax({ type: 'POST', url: 'search', data: JSON.stringify({keyword: keyword}), success: function(result) { // ... } }) ``` 那么处理的时候需要进行解析: ``` JSON.parse(ctx.request.body); ``` 以上就是常见的几种请求应答处理参数的方法。 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交