Мы живем в мире, настолько погруженном в цифровые технологии, где веб-API может создать бизнес на миллион долларов, и в этой статье я покажу вам, как монетизировать strong> ваш API с библиотекой под названием Stripe Mongoose Api, используя NodeJS и Express.
Настройте свой проект
требования
- MongoDB установлен на вашем компьютере или в сетевом кластере MongoDB.
- Аккаунт Stripe
Во-первых, нам нужно установить все зависимости:
npm install stripe-mongoose-api stripe mongoose express ejs
Теперь мы можем приступить к созданию нашего собственного проекта, я буду вести вас шаг за шагом:
- Создайте app.js и userModel.js
- Создайте модель в userModel.js
- Добавить соединение с мангустом
- Экспресс-настройка
- Базовая маршрутизация
- Добавление функций Stripe Mongoose API
Исходный код вы найдете здесь.
1. Создайте user.js и userModel.js
Создайте папку, используя:
mkdir <folderName>
Создайте новые файлы в папке: app.js и userModel.js (вы можете назвать этот файл как хотите, но это соглашение именовать файлы так).
2. Создайте модель в userModel.js
Мы создадим очень простую схему без полей схемы, чтобы упростить нашу работу, но вы можете просто добавить любое поле, которое хотите.
const mongoose = require('mongoose'); const apiSystem = require('stripe-mongoose-api'); const userSchema = new mongoose.Schema({}) userSchema.plugin(apiSystem, <options>); module.exports = mongoose.model('User', userSchema)
В поле ‹option› необходимо указать объект, который содержит:
{ stripeSecret: 'your stripe secret key', webhookSign: 'your stripe webhook sign key', priceId: 'the price id of your product' }
Это параметры обязательные, но вы можете просто проверить документацию и выбрать, какие другие параметры добавить.
3. Добавьте соединение с мангустом
Перейдем к app.js, добавим в файл этот код:
const mongoose = require('mongoose'); const MONGO_URI = 'Your MongoDB uri' mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, }); const db = mongoose.connection; db.on("error", console.error.bind(console, "connection error:")); db.once("open", () => { console.log("Database connected"); }); const User = require('./userModel');
И теперь, если вы попытаетесь запустить файл и все прошло хорошо, вы увидите в консоли: «База данных подключена».
4. Экспресс-настройка
Требовать и запускать экспресс:
const express = require('express'); const app = express(); app.use(express.json({verify: (req, res, buffer) => (req['rawBody'] = buffer)}));
express.json является обязательным промежуточным программным обеспечением для этого проекта, поскольку без этого Stripe Mongoose API не может понимать запросы веб-перехватчиков.
Добавить Виды:
const path = require('path'); const ejs = require('ejs'); app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views'));
Создайте папку представлений и назовите ее представлениями, используя:
mkdir views
Добавьте этот файл .ejs в папку:
<a href="/checkout" style="font-size: 25px; font-weight: 700;">Checkout and subscribe user</a> <form style="margin-top: 10px;" action="/api"> <label for="apiKey">Test api</label> <input id="apiKey" type="text" name="apiKey"> </form> <form action="/usage"> <label for="customer">Get customer invoice</label> <input id="customer" type="text" name="customer"> </form> <form action="/changeapikey"> <label for="change">Change the api key</label> <input id="change" type="text" name="id"> </form>
Это простая HTML-страница, которая предоставит вам все функции, предоставляемые Stripe Mongoose Api.
5. Базовая маршрутизация
Маршрутизаторы необходимы для работы API, поскольку они смогут получать и обрабатывать запросы, сделанные пользователями.
// Just rendering the home page app.get('/', (req, res) => { res.render('home'); }) // This route will redirect the user to the stripe checkout // page, if you don't pass a user as first param, the // method will create a new one for you app.get('/checkout', async (req, res) => { User.subscribeUser({}, res) }) // This route listen to all requests sent by stripe, it // listens for completed checkout and for cancelled // subscriptions app.post('/webhook', async (req, res) => { const user = await User.findOne({}) User.webhook(req, res) }) // This route will listen to all requests sent by the users, // it checks if the apiKey provided is valid and if yes, will // create a usage record and then send the data in the second // argument app.get('/api', (req, res) => { User.api(res, {italy: 'hi from italy'}, req.query.apiKey) }) // This route will send back the customer records app.get('/usage', async (req, res) =>{ const user = await User.findById(req.query.customer); user.customerRecords(res) }) // This route create a new api key for the user and // destroy the old one app.get('/changeapikey', async(req, res) => { const user = await User.findById(req.query.id); const key = await User.changeApiKey(user); res.send(key) }) const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Serving on port ${PORT}`); })
И теперь вы готовы запустить node app.js
и увидеть, что ваше приложение работает правильно.
Теперь вы знаете, как просто создать API и монетизировать его с помощью Stripe Mongoose Api.
Выводы
Stripe Mongoose Api — один из моих личных проектов. Stripe Mongoose Api будет получать постоянные обновления, поэтому проверяйте репозиторий GitHub в случае появления нового контента.