添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Egg.js (四) httpclient模块的使用 微信小程序获取用户openid 写到的实际是以一个示例来发送GET请求。
Egg.js (二) GET和POST请求 这里是自己写GET和POST请。
这里还是多看文档:
https://eggjs.org/zh-cn/basics/controller.html
https://eggjs.org/zh-cn/core/httpclient.html
下来还是以一个实例还写下发送POST请求。

Controller中实现

async showapi() {
    const { ctx } = this;
    // 获取post 请求参数
    let count = ctx.request.body.count;
    const url = 'https://route.showapi.com/1211-1';
    const result = await ctx.curl(url,{
      method: 'POST', // 设置请求方式 默认是GET
      dataType: 'json',
      // contentType: 'json', // 默认是 form
      data: {
        count: count,
        showapi_appid: '3****1',
        showapi_sign: 'a**********************4'
    });
    ctx.body = {
      result: result

这里用的是https://www.showapi.com/的免费接口。

路由中router.js

router.post('/httpclient/showapi', controller.httpClient.showapi); 
 

框架对 bodyParser 设置了一些默认参数,配置好之后拥有以下特性:

当请求的 Content-Typeapplication/jsonapplication/json-patch+jsonapplication/vnd.api+jsonapplication/csp-report 时,会按照 json 格式对请求 body 进行解析,并限制 body 最大长度为 100kb
当请求的 Content-Typeapplication/x-www-form-urlencoded 时,会按照 form 格式对请求 body 进行解析,并限制 body 最大长度为 100kb
如果解析成功,body 一定会是一个 Object(可能是一个数组)。
一般来说我们最经常调整的配置项就是变更解析时允许的最大长度,可以在 config/config.default.js 中覆盖框架的默认值。

module.exports = {
  bodyParser: {
    jsonLimit: '1mb',
    formLimit: '1mb',

如果用户的请求 body 超过了我们配置的解析最大长度,会抛出一个状态码为 413 的异常,如果用户请求的 body 解析失败(错误的 JSON),会抛出一个状态码为 400 的异常。

注意:在调整 bodyParser 支持的 body 长度时,如果我们应用前面还有一层反向代理(Nginx),可能也需要调整它的配置,确保反向代理也支持同样长度的请求 body

一个常见的错误是把 ctx.request.bodyctx.body 混淆,后者其实是ctx.response.body 的简写。

  1. 安装npm i egg-cors --save
  2. config/plugin.js 中添加如下代码:
exports.cors = {
  enable: true,
  package: 'egg-cors',
  1. config/config.default.js 中添加如下代码:
  const config = exports = {
   security: {
      csrf: {
        enable: false,
      }, // 必须加 否则: 403 Forbidden message: "missing csrf token"
      // domainWhiteList: [ '*' ]
    cors: {
      origin:'*',
      allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS'

以上也就是一些简单的场景的使用,是上Egg.js提交的功能和说明都是非常强大的,一定多看文档。

在Egg.js (四) httpclient模块的使用 微信小程序获取用户openid写到的实际是以一个示例来发送GET请求。在Egg.js (二) GET和POST请求这里是自己写GET和POST请。这里还是多看文档:https://eggjs.org/zh-cn/basics/controller.htmlhttps://eggjs.org/zh-cn/core/httpclient.html下来还是以一个实例还写下发送POST请求。Controller中实现async showapi()
使用Egg写接口时,当请求POST请求,使用ctx.request.body即可接收到参数。如果Body为form-data时,用ctx.request.body是接收不到参数的,那是因为Egg封装里面只接收x-www-form-urlencoded这种类型我们只要将Body的类型改为x-www-form-urlencoded即可用ctx.request.body接收参数 x-www-form-urlencoded 多个字段值用 & 拼接,用于传文本。(「窗体数据被编码为名称/值对」) Egg 是基于 Koa 实现的 Egg 的中间件形式和 Koa 的中间件形式是一样的,都是基于洋葱圈模型 Koa中的中间件:http://eggjs.org/zh-cn/intro/egg-and-koa.html#midlleware Egg中的中间件:http://eggjs.org/zh-cn/basics/middleware...
一、文章前言egg.js是node.js的一个web后台框架,为我们进行web后台开发带来了太多的便利。诸如此类的框架还有很多,例如:express、koa。本文将着重讨论egg.js,因为它是很严格的MVC开发模式。 eggJS『约定优于配置』二、准备工作1.首先我们需要先找到egg.js的官网:[egg.js](https://eggjs.org/zh-cn/) 2.开发工具,这里我使用的是vs
<form action="/news/doAdd?_csrf=<%=csrf%>" method="POST"> 用户名:<input type="text" name="username"/><br><br> 密 码:<input type="text"name="passwor... module.exports = (option, app) => { return async function auth (ctx, next) { ctx.state.csrf = ctx.csrf; await next(); 2、注册中间件,config > config.default.js // config.default.js 坑1:wx.request()的post请求发不出去,不允许http 脱坑方案:在『微信开发者工具』:设置&gt;&gt;项目设置&gt;&gt;勾选『不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书』 坑2:egg.j... 在上面的配置中,我们将请求的路径中的 /api 替换为空字符串,并将请求代理到 http://localhost:8080 上。 最后,在我们的控制器中,可以通过 this.ctx.proxy 对象来代理请求: ```javascript const result = await this.ctx.proxy('/api/user/getUserInfo', { method: 'GET', 这里我们将请求代理到 http://localhost:8080/api/user/getUserInfo 上,并使用 GET 方法发送请求。 以上就是在 Egg.js 中配置代理服务器的步骤,希望能对你有所帮助!