を使用してAPIを作成する
18127 ワード
何?
さて、これは私に関連しています.だから私はあなたの周りを見に行くことをお勧めします😊.
そこで、ここではRKKkitを使用してユーザ管理システムでGraphSQL APIを作成する方法の具体的な例を示します.
しかし最初に:rakkitのインストール💾
したがって、依存しないようにインストールする必要があります.
Here, I would use apollo-server
but it's also possible to install apollo-server-koa
if you use Rakkit for REST and GraphQL which allows you to link contexts.
必要な依存関係をインストールするには、このコマンドを実行します.
npm i rakkit graphql @types/graphql apollo-server reflect-metadata
reflect-metadata allows us to use the decorators with TypeScript
クールなので、今では設定を設定する必要があります.プロジェクトのルートにあるJSONファイルです.
{
"compileOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"target": "es2016",
"noImplicitAny": false,
"sourceMap": true,
"outDir": "build",
"declaration": true,
"importHelpers": true,
"forceConsistentCasingInFileNames": true,
"lib": [
"es2016",
"esnext.asyncitable"
],
"moduleResolution": "node"
}
}
//設定できます.JSON
型の定義🚻
それでは、User
クラスを作成することから始めましょう.
import { ObjectType, Field } from "rakkit";
import * as Crypto from "crypto";
@ObjectType()
export class User {
@Field()
username: string;
@Field()
email: string;
@Field()
id: string;
// Just to show a computed property:
@Field(type => String)
get flatInfos(): string {
return [this.name, this.email, this.id].join(":");
}
constructor(username: string, email: string) {
this.username = username;
this.email = email;
this.id = Crypto.randomBytes(16).toString("hex");
}
}
/types/userTS
小さな「データベース」が必要です🗂
それで、我々は我々のアプリをテストするために一部のユーザーと遊ぶ必要があるので、私はちょうどそれをより明確にするためにユーザーインスタンスのリストを作成するつもりです:
You can use a real database with an ORM like TypeORM for your projects
import { User } from "../types/User";
export const users = [
new User("JohnDoe", "[email protected]"),
new User("JaneDoe", "[email protected]"),
new User("Ben", "[email protected]")
];
/db/userTS
リゾルバ(クエリ,突然変異,サブスクリプション)🚀
次のクラスで問い合わせ/突然変異/サブスクリプションを定義します.単純なCRUDとユーザが登録されたときに通知されるサブスクリプションが含まれます.
import {
Resolve,
Query,
Mutation,
Subscription,
IContext,
Arg
} from "rakkit";
import { User } from "../types/User";
import { users } from "../db/users";
@Resolver()
export class UserResolver {
@Query(returns => [User])
getAllUsers() { {
return users;
}
@Query({ nullable: true })
getOneUserByName(@Arg("name") name: string): User {
return users.find((user) => user.name ==== name);
}
@Mutation()
addUser(
// Defining the mutation arguments
@Arg("name") name: string,
@Arg("email") email: string,
context: IContext
): User {
const user = new User(name, email);
users.push(user);
// Publish the event for subscriptions with the created user
context.gql.pubSub.publish("USER_ADDED", user);
return user;
}
@Subscription({ topics: "USER_ADDED" })
userAddedNotif(createdUser: User): User {
// Send the created user to the client
return createdUser;
}
}
/resolver/userresolver .TS
参入先🚪
では、アプリケーションのエントリポイントが必要です.
// It allows us to use decorators:
import "reflect-metadata";
import { Rakkit } from "rakkit";
import { ApolloServer } from "apollo-server";
async function bootstrap() {
await Rakkit.start({
gql: {
// You give an array of glob string:
resolvers: [`${__dirname}/resolvers/*Resolver.ts`]
}
});
// Retrieve the GraphQL compiled schema:
const schema = Rakkit.MetadataStorage.Gql.Schema;
const server = new ApolloServer({
schema
});
server.listen();
}
bootstrap();
ブートストラップTS
ので、開始し、それをテストしましょう!🎉
それを起動するには、あなたのTypesScriptアプリケーションを直接実行するために、@ObjectType()
をインストールする必要があります.
npm i -g ts-node
次のコマンドを実行します.
ts-node relative-path-to/bootstrap.ts
そしてちょうどあなたのお気に入りのブラウザでhttp://localhost:4000にいくつかのGraphSQLのクエリを行うに行く!🔥
getallusers -すべてのユーザを取得する
getoneuserbyname -特定のユーザを名前で取得する
adduser -ユーザを追加する
useraddednotif -ユーザー生成イベントを聞きます.
ET Vil il!この例はGithubで利用可能です😊, ありがとう
Reference
この問題について(を使用してAPIを作成する), 我々は、より多くの情報をここで見つけました
https://dev.to/daven/graphql-create-your-api-using-typescript-and-decorators-with-rakkit-2koo
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
したがって、依存しないようにインストールする必要があります.
Here, I would use
apollo-server
but it's also possible to installapollo-server-koa
if you use Rakkit for REST and GraphQL which allows you to link contexts.
必要な依存関係をインストールするには、このコマンドを実行します.
npm i rakkit graphql @types/graphql apollo-server reflect-metadata
reflect-metadata allows us to use the decorators with TypeScript
クールなので、今では設定を設定する必要があります.プロジェクトのルートにあるJSONファイルです.
{
"compileOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"target": "es2016",
"noImplicitAny": false,
"sourceMap": true,
"outDir": "build",
"declaration": true,
"importHelpers": true,
"forceConsistentCasingInFileNames": true,
"lib": [
"es2016",
"esnext.asyncitable"
],
"moduleResolution": "node"
}
}
//設定できます.JSON型の定義🚻
それでは、User
クラスを作成することから始めましょう.
import { ObjectType, Field } from "rakkit";
import * as Crypto from "crypto";
@ObjectType()
export class User {
@Field()
username: string;
@Field()
email: string;
@Field()
id: string;
// Just to show a computed property:
@Field(type => String)
get flatInfos(): string {
return [this.name, this.email, this.id].join(":");
}
constructor(username: string, email: string) {
this.username = username;
this.email = email;
this.id = Crypto.randomBytes(16).toString("hex");
}
}
/types/userTS
小さな「データベース」が必要です🗂
それで、我々は我々のアプリをテストするために一部のユーザーと遊ぶ必要があるので、私はちょうどそれをより明確にするためにユーザーインスタンスのリストを作成するつもりです:
You can use a real database with an ORM like TypeORM for your projects
import { User } from "../types/User";
export const users = [
new User("JohnDoe", "[email protected]"),
new User("JaneDoe", "[email protected]"),
new User("Ben", "[email protected]")
];
/db/userTS
リゾルバ(クエリ,突然変異,サブスクリプション)🚀
次のクラスで問い合わせ/突然変異/サブスクリプションを定義します.単純なCRUDとユーザが登録されたときに通知されるサブスクリプションが含まれます.
import {
Resolve,
Query,
Mutation,
Subscription,
IContext,
Arg
} from "rakkit";
import { User } from "../types/User";
import { users } from "../db/users";
@Resolver()
export class UserResolver {
@Query(returns => [User])
getAllUsers() { {
return users;
}
@Query({ nullable: true })
getOneUserByName(@Arg("name") name: string): User {
return users.find((user) => user.name ==== name);
}
@Mutation()
addUser(
// Defining the mutation arguments
@Arg("name") name: string,
@Arg("email") email: string,
context: IContext
): User {
const user = new User(name, email);
users.push(user);
// Publish the event for subscriptions with the created user
context.gql.pubSub.publish("USER_ADDED", user);
return user;
}
@Subscription({ topics: "USER_ADDED" })
userAddedNotif(createdUser: User): User {
// Send the created user to the client
return createdUser;
}
}
/resolver/userresolver .TS
参入先🚪
では、アプリケーションのエントリポイントが必要です.
// It allows us to use decorators:
import "reflect-metadata";
import { Rakkit } from "rakkit";
import { ApolloServer } from "apollo-server";
async function bootstrap() {
await Rakkit.start({
gql: {
// You give an array of glob string:
resolvers: [`${__dirname}/resolvers/*Resolver.ts`]
}
});
// Retrieve the GraphQL compiled schema:
const schema = Rakkit.MetadataStorage.Gql.Schema;
const server = new ApolloServer({
schema
});
server.listen();
}
bootstrap();
ブートストラップTS
ので、開始し、それをテストしましょう!🎉
それを起動するには、あなたのTypesScriptアプリケーションを直接実行するために、@ObjectType()
をインストールする必要があります.
npm i -g ts-node
次のコマンドを実行します.
ts-node relative-path-to/bootstrap.ts
そしてちょうどあなたのお気に入りのブラウザでhttp://localhost:4000にいくつかのGraphSQLのクエリを行うに行く!🔥
getallusers -すべてのユーザを取得する
getoneuserbyname -特定のユーザを名前で取得する
adduser -ユーザを追加する
useraddednotif -ユーザー生成イベントを聞きます.
ET Vil il!この例はGithubで利用可能です😊, ありがとう
Reference
この問題について(を使用してAPIを作成する), 我々は、より多くの情報をここで見つけました
https://dev.to/daven/graphql-create-your-api-using-typescript-and-decorators-with-rakkit-2koo
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { ObjectType, Field } from "rakkit";
import * as Crypto from "crypto";
@ObjectType()
export class User {
@Field()
username: string;
@Field()
email: string;
@Field()
id: string;
// Just to show a computed property:
@Field(type => String)
get flatInfos(): string {
return [this.name, this.email, this.id].join(":");
}
constructor(username: string, email: string) {
this.username = username;
this.email = email;
this.id = Crypto.randomBytes(16).toString("hex");
}
}
それで、我々は我々のアプリをテストするために一部のユーザーと遊ぶ必要があるので、私はちょうどそれをより明確にするためにユーザーインスタンスのリストを作成するつもりです:
You can use a real database with an ORM like TypeORM for your projects
import { User } from "../types/User";
export const users = [
new User("JohnDoe", "[email protected]"),
new User("JaneDoe", "[email protected]"),
new User("Ben", "[email protected]")
];
/db/userTSリゾルバ(クエリ,突然変異,サブスクリプション)🚀
次のクラスで問い合わせ/突然変異/サブスクリプションを定義します.単純なCRUDとユーザが登録されたときに通知されるサブスクリプションが含まれます.
import {
Resolve,
Query,
Mutation,
Subscription,
IContext,
Arg
} from "rakkit";
import { User } from "../types/User";
import { users } from "../db/users";
@Resolver()
export class UserResolver {
@Query(returns => [User])
getAllUsers() { {
return users;
}
@Query({ nullable: true })
getOneUserByName(@Arg("name") name: string): User {
return users.find((user) => user.name ==== name);
}
@Mutation()
addUser(
// Defining the mutation arguments
@Arg("name") name: string,
@Arg("email") email: string,
context: IContext
): User {
const user = new User(name, email);
users.push(user);
// Publish the event for subscriptions with the created user
context.gql.pubSub.publish("USER_ADDED", user);
return user;
}
@Subscription({ topics: "USER_ADDED" })
userAddedNotif(createdUser: User): User {
// Send the created user to the client
return createdUser;
}
}
/resolver/userresolver .TS
参入先🚪
では、アプリケーションのエントリポイントが必要です.
// It allows us to use decorators:
import "reflect-metadata";
import { Rakkit } from "rakkit";
import { ApolloServer } from "apollo-server";
async function bootstrap() {
await Rakkit.start({
gql: {
// You give an array of glob string:
resolvers: [`${__dirname}/resolvers/*Resolver.ts`]
}
});
// Retrieve the GraphQL compiled schema:
const schema = Rakkit.MetadataStorage.Gql.Schema;
const server = new ApolloServer({
schema
});
server.listen();
}
bootstrap();
ブートストラップTS
ので、開始し、それをテストしましょう!🎉
それを起動するには、あなたのTypesScriptアプリケーションを直接実行するために、@ObjectType()
をインストールする必要があります.
npm i -g ts-node
次のコマンドを実行します.
ts-node relative-path-to/bootstrap.ts
そしてちょうどあなたのお気に入りのブラウザでhttp://localhost:4000にいくつかのGraphSQLのクエリを行うに行く!🔥
getallusers -すべてのユーザを取得する
getoneuserbyname -特定のユーザを名前で取得する
adduser -ユーザを追加する
useraddednotif -ユーザー生成イベントを聞きます.
ET Vil il!この例はGithubで利用可能です😊, ありがとう
Reference
この問題について(を使用してAPIを作成する), 我々は、より多くの情報をここで見つけました
https://dev.to/daven/graphql-create-your-api-using-typescript-and-decorators-with-rakkit-2koo
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import {
Resolve,
Query,
Mutation,
Subscription,
IContext,
Arg
} from "rakkit";
import { User } from "../types/User";
import { users } from "../db/users";
@Resolver()
export class UserResolver {
@Query(returns => [User])
getAllUsers() { {
return users;
}
@Query({ nullable: true })
getOneUserByName(@Arg("name") name: string): User {
return users.find((user) => user.name ==== name);
}
@Mutation()
addUser(
// Defining the mutation arguments
@Arg("name") name: string,
@Arg("email") email: string,
context: IContext
): User {
const user = new User(name, email);
users.push(user);
// Publish the event for subscriptions with the created user
context.gql.pubSub.publish("USER_ADDED", user);
return user;
}
@Subscription({ topics: "USER_ADDED" })
userAddedNotif(createdUser: User): User {
// Send the created user to the client
return createdUser;
}
}
では、アプリケーションのエントリポイントが必要です.
// It allows us to use decorators:
import "reflect-metadata";
import { Rakkit } from "rakkit";
import { ApolloServer } from "apollo-server";
async function bootstrap() {
await Rakkit.start({
gql: {
// You give an array of glob string:
resolvers: [`${__dirname}/resolvers/*Resolver.ts`]
}
});
// Retrieve the GraphQL compiled schema:
const schema = Rakkit.MetadataStorage.Gql.Schema;
const server = new ApolloServer({
schema
});
server.listen();
}
bootstrap();
ブートストラップTSので、開始し、それをテストしましょう!🎉
それを起動するには、あなたのTypesScriptアプリケーションを直接実行するために、@ObjectType()
をインストールする必要があります.
npm i -g ts-node
次のコマンドを実行します.
ts-node relative-path-to/bootstrap.ts
そしてちょうどあなたのお気に入りのブラウザでhttp://localhost:4000にいくつかのGraphSQLのクエリを行うに行く!🔥
getallusers -すべてのユーザを取得する
getoneuserbyname -特定のユーザを名前で取得する
adduser -ユーザを追加する
useraddednotif -ユーザー生成イベントを聞きます.
ET Vil il!この例はGithubで利用可能です😊, ありがとう
Reference
この問題について(を使用してAPIを作成する), 我々は、より多くの情報をここで見つけました
https://dev.to/daven/graphql-create-your-api-using-typescript-and-decorators-with-rakkit-2koo
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
npm i -g ts-node
ts-node relative-path-to/bootstrap.ts
Reference
この問題について(を使用してAPIを作成する), 我々は、より多くの情報をここで見つけました https://dev.to/daven/graphql-create-your-api-using-typescript-and-decorators-with-rakkit-2kooテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol