I'm not sure if this is a Shopify related issue or a general coding issue, but when I send a request to the API for Next.js or how Shopify has exemplified, I get a 405 error. I am using Koa Router (that was what Shopify has prebuilt with their Auth boilerplate setup) and MongoDB.
server.js
import addTest from "../helpers/add";
...
router.post("/api/add", async (ctx) => {
try {
/* Get the shop from the authorization header to prevent users from spoofing the data */
shopDomain = await getShopUrlFromSession(ctx.req, ctx.res);
if (shopDomain) {
addTest(ctx.req, ctx.res);
}
res.status(201).send(response[0]);
} catch (error) {
res.status(500).send(error.message);
}
});
add.js
import connectMongo from "../../../utils/connectMongo";
import { Shopify } from "@shopify/shopify-api";
import Test from "../../../models/testModel";
export default async function addTest(req, res) {
try {
console.log("CONNECTING TO MONGO");
await connectMongo();
console.log("CONNECTED TO MONGO");
const session = await Shopify.Utils.loadCurrentSession(req, res, true);
const client = new Shopify.Clients.Graphql(
session.shop,
session.accessToken
);
const shopId = `https://${session.shop}`;
console.log("CREATING DOCUMENT");
const test = await Test.create(req.body);
console.log("CREATED DOCUMENT");
res.json({ test });
} catch (error) {
console.log(error);
res.json({ error });
}
}