如何使用 loopback 4 修复(将 rest 翻译成 graphql):OPTIONS http://localhost:3001/graphql 405(方法不允许)

How to fix using loopback 4 (translate rest to graphql) : OPTIONS http://localhost:3001/graphql 405 (Method Not Allowed)

我正在将 postgresql 与环回 4 连接起来,并使用 axios + restful 在前端调用 API 并成功完成。

但是当我尝试将 postgresql 与环回 4 连接并使用 axios + graphql 在前端调用 API 时,它在浏览器的控制台上给出了这 3 个错误:

我尝试在谷歌上搜索和阅读,但大多数都没有使用环回。

我遵循了这个教程,

  1. https://v4.loopback.io/getting-started-oasgraph.html
  2. https://www.thepolyglotdeveloper.com/2019/01/query-graphql-api-vuejs-axios/

但还是没有解决。

这里是我的源码修改,Home.vue.

<template>
    <div>
    </div>
</template>

<script>
    import axios from "axios";
    export default {
        name: "HelloWorld",
        async mounted() {
            try {
                var result = await axios({
                    method: "POST",
                    url: "http://localhost:3001/graphql",
                    data: {
                        query: `
                            {
                                organizations {
                                  organizationId
                                  organizationName
                                }
                            }
                        `
                    }
                });
                console.log("kk", result);

            } catch (error) {
                console.error(error);
            }
        }
    }
</script>

<style scoped></style>

我希望控制台内的输出应该是 API 内容。是否还有其他我遗漏的设置?

在我看来,请求被拒绝是因为 CORS

我查看了oasgraph-cli的源码,默认是不允许CORS的。幸运的是,有一个 CLI 选项可以启用对 cross-origin 请求的支持。

以下命令应该可以为您解决问题:

oasgraph --cors [path to saved OAS]

已定义 CLI 选项 here:

.option('--cors', 'enable Cross-origin resource sharing (CORS)')

并将 the following change 应用于 Express 应用程序:

if (program.cors) {
  app.use(cors());
}