美文网首页
08 | 前后联调

08 | 前后联调

作者: cemcoe | 来源:发表于2020-11-02 13:24 被阅读0次

这里是在简书仿简书的第八篇,早睡早起身体好

上篇已经将后端写好了,那么激动人心的联调来了,先来看一看连接上不。

网络请求函数放在network文件夹中,本次注册接口是和用户相关的,那就在该目录下创建user.js存放和用户相关的网络请求函数。

对于注册接口,前后端的约定是这样的。

那我们就可以这样做了

// network/user.js
import { request } from './request'


// 用户注册
export function register(name, password) {
  return request({
    method: "post",
    url: '/users',
    data: {
      name,
      password
    },
  })
}

当需要发起注册请求时调用该函数,并将用户名和密码导入就可以了。


下面来试一试。

不妨新建login路由文件,当然了,你在App.vue里尝试也是可以的。

两个表单input在data中预设name和password,使用v-model进行双向的数据绑定。
点击提交的按钮时注册函数拿到data中的用户信息发送请求。

<!--Login.vue-->
<div class="register">
      <form>
        <div>
          <input placeholder="用户名" type="text" v-model="name" />
        </div>
        <div>
          <input placeholder="密码" type="password" v-model="password" />
        </div>
        <button class="sign-in-button" type="button" @click="registerClick">
          <span id="sign-in-loading"></span>
          注册
        </button>
      </form>
    </div>

export default {
  data() {
    return {
      name: "",
      password: "",
    };
  },
  methods: {
    registerClick() {
      register(this.name, this.password).then((res) => {
        if (res.status === 200) {
          this.$toast.show("注册成功,请登录", 2000);
        } else if (res.status === 409) {
          this.$toast.show("注册失败", 2000);
        }
      });
    },
  },
}

好的,对于用户注册前端也写好了,那就来联调了。


后端项目启动,前端项目启动,打开页面输入用户名密码注册看一看。

毫无意外地,你会得到一个报错。

Access to XMLHttpRequest at 'http://localhost:3000/users' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

很明显是触发跨域,被浏览器给绊了。解决跨域的方案网上讨论很多,一搜就有,现在的话呢,更推荐使用cors,毕竟浏览器都告诉你了,犯不着还用什么jsonp了。主要是我不会。

好了,很简单嘛,开卷考试,在No 'Access-Control-Allow-Origin' header is present on the requested resource. 这句话里已经告诉我们解决方案了,在后端添加上好了。

// /jianshu_server/index.js
// 跨域问题
app.use(async (ctx, next) => {
  ctx.set("Access-Control-Allow-Origin", "*");
  await next()
})

后端设置完成后,打开前端用户注册页面试一试,是不是成功了,天真。你大概率会遇到下面的惊喜。

Access to XMLHttpRequest at 'http://localhost:3000/users' from origin 'http://localhost:8080' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

好的现在是 Headers 的问题,还是开卷考试,Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.这句话已经告诉了我们解决方案。

常见的请求头有 x-requested-with,Authorization,Content-Type,Accept,不妨都将他们加上。

// 跨域问题
app.use(async (ctx, next) => {
  ctx.set("Access-Control-Allow-Origin", "*");
  ctx.set("Access-Control-Allow-Headers", "x-requested-with,Authorization,Content-Type,Accept");
  await next()
})

那再测试一下。理论上,对于该注册接口,上述 cors 配置是够用的,在开发用户登录时,我们可能还要给跨域打交道。

经过简单的联调,我们实现了第一个功能,用户注册。

相关文章

  • 08 | 前后联调

    这里是在简书仿简书的第八篇,早睡早起身体好 上篇已经将后端写好了,那么激动人心的联调来了,先来看一看连接上不。 网...

  • 前后端联调

    问题: 小张同学的项目采用的是前后端分离架构,现在前后端程序猿已经碰过面,协商好了一些前端需要的数据接口,于是前后...

  • 前后端联调

    我们在写前端代码的时候,可能后端接口还没有写好,这个时候,就需要我们自己mock数据,也就是说,前端的数据都是我们...

  • 2017-11-22(TW实习)

    今天主要有下面这几件事 企业信息列表前后端联调 组内session 组内code diff 企业信息列表前后端联调...

  • 第12章 Vue项目的联调、测试与发布上线

    12-1 Vue项目的联调测试上线--项目前后端联调 当我们项目开发完成后,我们需要和后端进行联调,那么我们需要把...

  • 如何构建Spring Boot的Mock环境

    最近项目中需要进行前后端联调的工作比较多,而前后端联调最复杂的部分就是接口格式的定义和Mock数据的生成了,在查阅...

  • 前后端开发联调

    前后端开发联调需要注意哪些事情? 接口叫什么?接口名称,统一命名,定制规范,甚至拟定命名表。 接口传什么?数据类型...

  • 第二次作业整理

    NodeJS实战--使用NodeJS实现前后端的联调 180 sunxiaochuan 简书作者 2017.11....

  • Vue:前后端数据联调

    前言 前后端分离以后,数据的获取渲染都由前端完成。后台只提供纯粹的数据,以JSON为主。因此在获取数据的过程中会遭...

  • 前后端联调规范总结

    1、http状态码规范:2xx:前端向服务器请求成功,但是返回了有可能的多种状态3xx:缓存,重定向4xx:找不到...

网友评论

      本文标题:08 | 前后联调

      本文链接:https://www.haomeiwen.com/subject/uypfmktx.html